Cómo instalar WordPress con Nginx y Let’s Encrypt SSL en CentOS 8

Asistente de instalación de WordPress

WordPress es el sistema de administración de contenido gratuito, de código abierto y más utilizado en el mundo. Es una plataforma de blogs muy potente que se puede utilizar para alojar blogs, sitios web de carteras y plataformas de comercio electrónico. WordPress utiliza Apache/Nginx como servidor web, MariaDB/MySQL como base de datos y procesamiento PHP. WordPress proporciona una gran cantidad de temas y complementos que se pueden usar para personalizar su funcionalidad.

En este tutorial, explicaremos cómo instalar WordPress con Nginx en el servidor CentOS 8 y luego protegeremos el servidor mediante el uso de un certificado SSL Let’s Encrypt gratuito. Aprenderás a configurar WordPress LetsEncrypt en tu servidor para proporcionar una conexión segura para tus visitantes.

Requisitos previos

  • Un servidor que ejecuta CentOS 8.
  • Una contraseña de root está configurada en su servidor.
  • Un nombre de dominio válido apunta a la dirección IP de su servidor.

Empezando

De forma predeterminada, SELinux está habilitado en el servidor CentOS 8. Por lo tanto, deberá desactivarlo primero.

Puede hacer esto editando el archivo /etc/selinux/config:

nano /etc/selinux/config

Realice los siguientes cambios:

SELINUX=disabled

Guarde y cierre el archivo. Luego, reinicie su servidor para aplicar los cambios.

Instalar servidor LEMP

Antes de comenzar, deberá instalar Nginx, MariaDB, PHP y otros paquetes necesarios en su servidor. Puede instalarlos todos ejecutando el siguiente comando:

yum install nginx php php-cli php-curl php-zip php-mbstring php-mysqlnd php-fpm curl unzip mariadb-server -y

Una vez que todos los paquetes estén instalados, inicie el servicio Nginx, PHP-FPM, MariaDB y habilítelos para que se inicien después de reiniciar el sistema:

systemctl start nginx
systemctl enable nginx
systemctl start mariadb
systemctl enable mariadb
systemctl start php-fpm
systemctl enable php-fpm

También puede verificar el estado del servicio PHP-FPM con el siguiente comando:

systemctl status php-fpm

Deberías obtener el siguiente resultado:

? php-fpm.service - The PHP FastCGI Process Manager
   Loaded: loaded (/usr/lib/systemd/system/php-fpm.service; disabled; vendor preset: disabled)
   Active: active (running) since Thu 2019-10-17 05:39:11 EDT; 4min 40s ago
 Main PID: 1475 (php-fpm)
   Status: "Processes active: 0, idle: 5, Requests: 0, slow: 0, Traffic: 0req/sec"
    Tasks: 6 (limit: 5060)
   Memory: 28.5M
   CGroup: /system.slice/php-fpm.service
           ??1475 php-fpm: master process (/etc/php-fpm.conf)
           ??1478 php-fpm: pool www
           ??1479 php-fpm: pool www
           ??1480 php-fpm: pool www
           ??1481 php-fpm: pool www
           ??1482 php-fpm: pool www

Oct 17 05:39:10 centos8 systemd[1]: Starting The PHP FastCGI Process Manager...
Oct 17 05:39:11 centos8 systemd[1]: Started The PHP FastCGI Process Manager.

Una vez que lo haya hecho, puede continuar con el siguiente paso.

Configurar la base de datos de WordPress

De forma predeterminada, el servidor MariaDB no está protegido. Por lo tanto, deberá asegurarlo primero. Puedes asegurarlo con el siguiente comando:

mysql_secure_installation

Responda todas las preguntas como se muestra a continuación:

Enter current password for root (enter for none):
Set root password? [Y/n] n
Remove anonymous users? [Y/n] Y
Disallow root login remotely? [Y/n] Y
Remove test database and access to it? [Y/n] Y
Reload privilege tables now? [Y/n] Y

Una vez asegurado, debería obtener el siguiente resultado:

Cleaning up...

All done!  If you've completed all of the above steps, your MariaDB
installation should now be secure.

Thanks for using MariaDB!

A continuación, inicie sesión en el shell de MariaDB con el siguiente comando:

mysql -u root -p

Proporcione su contraseña de root cuando se le solicite, luego cree una base de datos y un usuario para WordPress con los siguientes comandos:

MariaDB [(none)]> CREATE DATABASE wpdb;
MariaDB [(none)]> GRANT ALL PRIVILEGES on wpdb.* to 'wpuser'@'localhost' identified by 'password';

A continuación, elimine los privilegios y salga del shell de MariaDB con el siguiente comando:

MariaDB [(none)]> FLUSH PRIVILEGES;
MariaDB [(none)]> EXIT;

Una vez que su base de datos esté configurada, puede continuar con el siguiente paso.

Descargar WordPress

Puede descargar la última versión de WordPress con el siguiente comando:

cd /var/www/html
wget https://wordpress.org/latest.tar.gz

Una vez descargado, extraiga el archivo descargado con el siguiente comando:

tar -xvzf latest.tar.gz

A continuación, cambie la propiedad del directorio de wordpress a nginx:

chown -R nginx: /var/www/html/wordpress/

A continuación, cambie el directorio a wordpress y cambie el nombre del archivo de configuración predeterminado de wordpress:

cd /var/www/html/wordpress
cp wp-config-sample.php wp-config.php

A continuación, edite el archivo wp-config.php en su editor de texto favorito:

nano wp-config.php

Defina la información de su base de datos como se muestra a continuación:

/** The name of the database for WordPress */
define( 'DB_NAME', 'wpdb' );

/** MySQL database username */
define( 'DB_USER', 'wpuser' );

/** MySQL database password */
define( 'DB_PASSWORD', 'password' );

/** MySQL hostname */
define( 'DB_HOST', 'localhost' );

Guarde y cierre el archivo cuando haya terminado.

Configurar Nginx para WordPress

A continuación, deberá crear un archivo de configuración de host virtual Nginx para servir a WordPress. puedes crearlo con el siguiente comando:

nano /etc/nginx/conf.d/wordpress.conf

Agregue las siguientes líneas:

server {
    listen 80;
    server_name example.com;
    root /var/www/html/wordpress;
    index index.php;

    access_log /var/log/nginx/example.com.access.log;
    error_log /var/log/nginx/example.com.error.log;

    location = /favicon.ico {
        log_not_found off;
        access_log off;
    }

    location = /robots.txt {
        allow all;
        log_not_found off;
        access_log off;
    }

    location / {
        try_files $uri $uri/ /index.php?$args;
    }

    location ~ .php$ {
        try_files $uri =404;
        fastcgi_pass unix:/run/php-fpm/www.sock;
        fastcgi_index   index.php;
        fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
        include fastcgi_params;
    }
    location ~* .(js|css|png|jpg|jpeg|gif|ico|svg)$ {
        expires max;
        log_not_found off;
    }

}

Guarde y cierre el archivo. Luego, verifique el nginx para ver si hay algún error de sintaxis con el siguiente comando:

nginx -t

Deberías obtener el siguiente resultado:

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

Finalmente, reinicie el servicio Nginx para aplicar los cambios de configuración:

systemctl restart nginx

Acceder al Panel de WordPress

WordPress está instalado y configurado, ahora es el momento de acceder a la interfaz web.

Abra su navegador web y escriba la URL http://ejemplo.com. Será redirigido a la siguiente página:

Asistente de instalación de WordPress

Proporcione toda la información requerida, como el nombre del sitio, el nombre de usuario del administrador, la contraseña, el correo electrónico del administrador y haga clic en el Instalar WordPress botón. Una vez finalizada la instalación. Deberías ver la siguiente página:

WordPress instalado correctamente

Haga clic en el acceso botón. Será redirigido a la página de inicio de sesión de WordPress:

Inicio de sesión de WordPress

Proporcione su nombre de usuario y contraseña de administrador y haga clic en el Iniciar sesión botón. Debería ver el panel de control de WordPress en la siguiente página:

Panel de administración de WordPress

Asegure WordPress con Let’s Encrypt

Para proteger su sitio de WordPress con SSL gratuito de Let’s Encrypt, deberá instalar el cliente Certbot Let’s Encrypt en su sistema. De forma predeterminada, Certbot no está disponible en el repositorio predeterminado de CentOS 8. Por lo tanto, deberá descargarlo del sitio web oficial de Certbot.

Puede descargar e instalar Certbot con los siguientes comandos:

wget https://dl.eff.org/certbot-auto
mv certbot-auto /usr/local/bin/certbot-auto
chown root /usr/local/bin/certbot-auto
chmod 0755 /usr/local/bin/certbot-auto

Ahora, ejecute el siguiente comando para obtener e instalar un certificado SSL para su sitio web de WordPress.

certbot-auto --nginx -d example.com

Se le pedirá que proporcione una dirección de correo electrónico y que acepte los términos del servicio. También deberá elegir si redirigir o no el tráfico HTTP a HTTPS. Seleccione la opción adecuada y presione Enter. Una vez que la instalación haya finalizado con éxito, debería obtener el siguiente resultado:

IMPORTANT NOTES:
 - Congratulations! Your certificate and chain have been saved at:
   /etc/letsencrypt/live/example.com/fullchain.pem
   Your key file has been saved at:
   /etc/letsencrypt/live/example.com/privkey.pem
   Your cert will expire on 2019-08-14. 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"
 - 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

Configurar la renovación automática de Let’s Encrypt

El certificado Let’s Encrypt es válido por 90 días. Por lo que se recomienda renovar el certificado antes de que caduque. Puede configurar el trabajo Cron para renovar el certificado automáticamente.

Para hacerlo, crea el crontab con el siguiente comando:

crontab -e

Agregue la siguiente línea:

0 0,12 * * * root python -c 'import random; import time; time.sleep(random.random() * 3600)' && /usr/local/bin/certbot-auto renew

Guarde y cierre el archivo cuando haya terminado.

Conclusión

En el tutorial anterior, aprendimos cómo instalar y configurar WordPress con Nginx en el servidor CentOS. También hemos aprendido cómo proteger el sitio de WordPress con SSL gratuito de Let’s Encrypt, configurando así una integración de WordPress LetsEncrypt. Espero que ahora pueda alojar fácilmente su propio sitio web de WordPress de forma segura y eficiente.

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *