GNU/Linux >> Tutoriales Linux >  >> Ubuntu

Cómo instalar WordPress 5.x con Nginx en Ubuntu 18.04 / Ubuntu 16.04

WordPress es el software de administración de contenido y blogs web de código abierto más utilizado que impulsa alrededor de 60 millones de sitios web. Está escrito en PHP y utiliza MariaDB/MySQL como base de datos.

Este tutorial le ayuda a instalar WordPress 5.x con Nginx en Ubuntu 18.04/Ubuntu 16.04.

También veremos cómo instalar Let's Encrypt SSL para WordPress para la entrega segura del sitio web.

Instalar la pila LEMP

Antes de continuar, es posible que desee ver cómo instalar la pila LEMP.

Instalar la pila LEMP (Nginx, MariaDB y PHP) en Ubuntu 18.04

Instalar la pila LEMP (Nginx, MariaDB y PHP) en Ubuntu 16.04

Instalar extensiones de PHP

Se requieren las siguientes extensiones para instalar y ejecutar WordPress en Ubuntu OS.

sudo apt install -y php-mysql php-dom php-simplexml php-ssh2 php-xml php-xmlreader php-curl php-exif php-ftp php-gd php-iconv php-imagick php-json php-mbstring php-posix php-sockets php-tokenizer

Configurar el bloque del servidor Nginx para WordPress

Vamos a crear un bloque de servidor Nginx para la instalación de WordPress. Los archivos de configuración del host virtual se pueden encontrar en el directorio /etc/nginx/conf.d.

El bloque del servidor requiere un nombre de dominio, número de puerto, raíz del documento, ubicación del registro, CGI rápido, etc.

Suponga lo siguiente,

Nombre de dominio: www.itzgeek.net
Raíz del documento: /sites/www.itzgeek.net/public_html/
Registros: /sites/www.itzgeek.net/logs/

Cree un servidor virtual.

Si instaló Nginx desde el repositorio de Ubuntu, los archivos de configuración del host virtual se encuentran en /etc/nginx/sites-enabled, y la ruta del archivo será como /etc/nginx/sites-enabled/www.itzgeek.net.conf.
sudo nano /etc/nginx/conf.d/www.itzgeek.net.conf

Coloque el siguiente contenido.

server {
	listen 80; 
	server_name www.itzgeek.net;

	root /sites/www.itzgeek.net/public_html/;

	index index.html index.php;

	access_log /sites/www.itzgeek.net/logs/access.log;
	error_log /sites/www.itzgeek.net/logs/error.log;

	# Don't allow pages to be rendered in an iframe on external domains.
	add_header X-Frame-Options "SAMEORIGIN";

	# MIME sniffing prevention
	add_header X-Content-Type-Options "nosniff";

	# Enable cross-site scripting filter in supported browsers.
	add_header X-Xss-Protection "1; mode=block";

	# Prevent access to hidden files
	location ~* /\.(?!well-known\/) {
		deny all;
	}

	# Prevent access to certain file extensions
	location ~\.(ini|log|conf)$ {
		deny all;
	}
        
        # Enable WordPress Permananent Links
	location / {
		try_files $uri $uri/ /index.php?$args;
	}

	location ~ \.php$ {
        include /etc/nginx/fastcgi_params;
        fastcgi_pass 127.0.0.1:9000;
        fastcgi_index index.php;
        fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
	}

}

Cree la raíz del documento y el directorio de registros.

sudo mkdir -p /sites/www.itzgeek.net/public_html/

sudo mkdir -p /sites/www.itzgeek.net/logs/

Verifique los archivos de configuración.

sudo nginx -t

Si obtiene lo siguiente, significa que las entradas del host virtual son correctas.

nginx: the configuration file /etc/nginx/nginx.conf syntax is ok
nginx: configuration file /etc/nginx/nginx.conf test is successful

Reinicie los servicios.

sudo systemctl restart nginx

Instalar Let's Encrypt SSL para WordPress (Opcional)

En la situación actual, casi todos los sitios web usan HTTPS (certificado SSL) para la autenticidad, cuentas seguras, para mantener privadas las comunicaciones de los usuarios. Google pide a los propietarios que cambien a HTTPS para mejorar la seguridad y mejorar la clasificación.

Instalar Certbot

Para generar un certificado SSL, instale el cliente Certbot ACME en su sistema. Maneja la emisión de certificados y la instalación de certificados sin tiempo de inactividad.

El cliente Certbot no está disponible en los repositorios de Ubuntu. Entonces, necesitamos configurar Certbot PPA en Ubuntu.

sudo apt update

sudo apt install -y software-properties-common

sudo add-apt-repository universe

sudo add-apt-repository ppa:certbot/certbot

sudo apt update

Ahora, instale el cliente de certbot.

sudo apt install -y certbot python-certbot-nginx

Actualizar/Cambiar Registro DNS

Acceda a su registrador de dominio y cree un registro A/CNAME para su dominio.

Espere un tiempo para permitir que el registro se propague.

Instalar el certificado SSL de Let's Encrypt

Utilice el comando certbot para generar e instalar un certificado de Let's Encrypt.

sudo certbot --nginx

Salida:

Saving debug log to /var/log/letsencrypt/letsencrypt.log
Plugins selected: Authenticator nginx, Installer nginx
Enter email address (used for urgent renewal and security notices) (Enter 'c' to
cancel): [email protected]  << Enter email id to receive notification

- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
Please read the Terms of Service at
https://letsencrypt.org/documents/LE-SA-v1.2-November-15-2017.pdf. You must
agree in order to register with the ACME server at
https://acme-v02.api.letsencrypt.org/directory
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
(A)gree/(C)ancel: A  << Accept Terms of Service

- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
Would you be willing to share your email address with the Electronic Frontier
Foundation, a founding partner of the Let's Encrypt project and the non-profit
organization that develops Certbot? We'd like to send you email about our work
encrypting the web, EFF news, campaigns, and ways to support digital freedom.
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
(Y)es/(N)o: Y  << Subscribe to newsletter

Which names would you like to activate HTTPS for?
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
1: www.itzgeek.net
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
Select the appropriate numbers separated by commas and/or spaces, or leave input
blank to select all options shown (Enter 'c' to cancel): 1  << Install SSL certificate for www.itzgeek.net
Deploying Certificate to VirtualHost /etc/nginx/conf.d/www.itzgeek.net.conf

Please choose whether or not to redirect HTTP traffic to HTTPS, removing HTTP access.
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
1: No redirect - Make no further changes to the webserver configuration.
2: Redirect - Make all requests redirect to secure HTTPS access. Choose this for
new sites, or if you're confident your site works on HTTPS. You can undo this
change by editing your web server's configuration.
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
Select the appropriate number [1-2] then [enter] (press 'c' to cancel): 2  < Redirect HTTP traffic to HTTPS site
Redirecting all traffic on port 80 to ssl in /etc/nginx/conf.d/www.itzgeek.net.conf

- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
Congratulations! You have successfully enabled https://www.itzgeek.net

You should test your configuration at:
https://www.ssllabs.com/ssltest/analyze.html?d=www.itzgeek.net
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -

IMPORTANT NOTES:                                                                                                   
 - Congratulations! Your certificate and chain have been saved at:                                                 
   /etc/letsencrypt/live/www.itzgeek.net/fullchain.pem
   Your key file has been saved at:
   /etc/letsencrypt/live/www.itzgeek.net/privkey.pem
   Your cert will expire on 2019-12-12. To obtain a new or tweaked
   version of this certificate in the future, simply run certbot again
   with the "certonly" option. To non-interactively renew *all* of
   your certificates, run "certbot renew"
 - Your account credentials have been saved in your Certbot
   configuration directory at /etc/letsencrypt. You should make a
   secure backup of this folder now. This configuration directory will
   also contain certificates and private keys obtained by Certbot so
   making regular backups of this folder is ideal.
 - If you like Certbot, please consider supporting our work by:

   Donating to ISRG / Let's Encrypt:   https://letsencrypt.org/donate
   Donating to EFF:                    https://eff.org/donate-le

Redirigir solicitudes HTTP que no sean www a www HTTPS con Nginx

Ahora crearemos un nuevo bloque de servidor para redirigir el tráfico que proviene del sitio HTTP que no es www al sitio www HTTPS. Es decir, http://itzgeek.net>> https://www.itzgeek.net .

sudo nano /etc/nginx/conf.d/www.itzgeek.net.conf

Agregue el siguiente bloque al final del archivo.

# Redirect NON-WWW HTTP to WWW HTTPS

server {
    if ($host = itzgeek.net) {
        return 301 https://www.itzgeek.net$request_uri;
    }


   server_name itzgeek.net;
    listen 80;
    return 404;

}

Reinicie el servicio Nginx.

sudo systemctl restart nginx

Crear base de datos para WordPress

Inicie sesión en MySQL.

sudo mysql -u root -p

Cree la base de datos deseada para WordPress.

CREATE DATABASE wordpress;

Crea un usuario.

CREATE USER 'wpuser'@'localhost' IDENTIFIED BY 'wppassword';

Otorgue permiso al usuario creado para acceder a la base de datos.

GRANT ALL PRIVILEGES ON wordpress.* TO 'wpuser'@'localhost';

Salga del shell de MariaDB.

quit

Descargar WordPress

Descarga el último paquete de WordPress.

wget http://wordpress.org/latest.tar.gz

Extraiga el paquete de WordPress.

tar -zxvf latest.tar.gz

Mueva los archivos de WordPress a la raíz del documento.

sudo mv wordpress/* /sites/www.itzgeek.net/public_html/

Haga que el usuario de Apache (www-data) sea el propietario del sitio de WordPress.

sudo chown -R www-data:www-data /sites/www.itzgeek.net/public_html/

sudo chown -R www-data:www-data /sites/www.itzgeek.net/logs/

Instalar WordPress

Abra su navegador y visite:

http://url-de-su-sitio-web

Obtendrá el asistente de instalación de WordPress.

Elija el idioma para su instalación de WordPress.

Asegúrese de tener el nombre de la base de datos de WordPress, el usuario de la base de datos y la contraseña del usuario de la base de datos. Si está listo, haga clic en ¡Vamos!.

En esta página, ingrese la información de la base de datos para permitir que WordPress se conecte con la base de datos.

Si la conexión a la base de datos es exitosa, obtendrá la siguiente página. Haga clic en Ejecutar la instalación.

En esta página, ingrese el título del sitio, el administrador de WordPress y la contraseña (de su elección) y luego la dirección de correo electrónico. Luego, haz clic en Instalar WordPress.

La instalación de WordPress ahora está completa. Puede hacer clic en Iniciar sesión para ir a la página de administración de WordPress.

Ingrese el usuario administrador de WordPress y su contraseña para acceder a la página de administración de WordPress.

Administrador de WordPress:

Interfaz de WordPress:

Información del servidor de WordPress (complemento de información del servidor YLD):

Pocas configuraciones adicionales

Configurar carga máxima de tamaño de archivo para WordPress

De forma predeterminada, PHP no permite cargas web superiores a 2 MB. Para permitir cargas de archivos más grandes a través de la interfaz web de WordPress, configure la opción upload_max_filesize en php.ini.

sudo nano /etc/php/7.2/fpm/php.ini

Cambie el tamaño de carga según sus requisitos

; Maximum allowed size for uploaded files.
; http://php.net/upload-max-filesize
upload_max_filesize = 256M

Reinicie el servicio php7.2-fpm.

sudo systemctl restart php7.2-fpm

Configurar client_max_body_size en Nginx para WordPress

Es posible que encuentre el siguiente error incluso si ha cambiado el tamaño de archivo máximo de carga en el paso anterior.

2019/09/13 04:40:08 [error] 3803#3803: *517 client intended to send too large body: 9872781 bytes, client: 49.207.143.143, server: www.itzgeek.net, request: "POST /wp-admin/update.php?action=upload-theme HTTP/1.1", host: "www.itzgeek.net", referrer: "https://www.itzgeek.net/wp-admin/theme-install.php?browse=featured"

Agregue el módulo principal client_max_body_size en el archivo de configuración del servidor Nginx.

sudo nano /etc/nginx/nginx.conf

La directiva se puede agregar al bloque http (para todos los sitios), un bloque de servidor particular o en el contexto de la ubicación. Estoy agregando la directiva al bloque http que establece el valor para todos los sitios que se ejecutan en este servidor.

http {
....

    client_max_body_size 256M;

....
}

Además, tenemos que cambiar el valor de post_max_size en php7.2-fpm.

sudo nano /etc/php/7.2/fpm/php.ini

Cambie el tamaño de carga según sus requisitos.

post_max_size = 256M

Reinicie los servicios.

sudo systemctl restart php7.2-fpm

sudo systemctl restart nginx

Conclusión

Eso es todo. Espero que hayas aprendido a instalar WordPress 5.x con Nginx en Ubuntu 18.04 / Ubuntu 16.04. Comparta sus comentarios en la sección de comentarios.


Ubuntu
  1. Cómo instalar Nginx en Ubuntu 16.04

  2. Cómo instalar WordPress usando Nginx en Ubuntu 18.04

  3. Cómo instalar Elgg con Nginx en Ubuntu 14.04

  4. Cómo instalar Nginx en Ubuntu 16.04

  5. Cómo instalar Joomla con Nginx en Ubuntu 18.04

Cómo instalar WordPress con Nginx en Ubuntu

Cómo instalar SuiteCRM en Ubuntu 20.04 con Apache/Nginx

Cómo instalar MediaWiki en Ubuntu 20.04 con Apache/Nginx

Cómo instalar WordPress con Nginx en Ubuntu 20.04

Instalar WordPress con Nginx en Ubuntu 18.04

Cómo instalar Nginx en Ubuntu 22.04