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

WordPress es un sistema de gestión de contenidos gratuito, de código abierto y el más utilizado en el mundo. Es una plataforma de blogging muy potente que puede utilizarse para alojar un blog, un sitio web de cartera y una plataforma de comercio electrónico. WordPress utiliza Apache/Nginx como servidor web, MariaDB/MySQL como base de datos y procesamiento PHP. WordPress proporciona un gran número de temas y plugins que se pueden utilizar para personalizar su funcionalidad.

En este tutorial, explicaremos cómo instalar WordPress con Nginx en un servidor CentOS 8 y luego aseguraremos el servidor utilizando un certificado SSL gratuito de Let’s Encrypt.

Requisitos previos

  • Un servidor con CentOS 8.
  • Una contraseña de root configurada en tu servidor.
  • Un nombre de dominio válido que apunte a la dirección IP de tu servidor.

Cómo empezar

Por defecto, SELinux está activado en el servidor CentOS 8. Así que primero tendrás que desactivarlo.

Puedes hacerlo editando el archivo /etc/selinux/config:

nano /etc/selinux/config

Haz los siguientes cambios:

SELINUX=disabled

Guarda y cierra el archivo. A continuación, reinicia tu servidor para aplicar los cambios.

Instalar el servidor LEMP

Antes de empezar, tendrás que instalar Nginx, MariaDB, PHP y otros paquetes necesarios en tu servidor. Puedes 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 instalados todos los paquetes, inicia el servicio de Nginx, PHP-FPM y MariaDB y haz 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 puedes comprobar el estado del servicio PHP-FPM con el siguiente comando:

systemctl status php-fpm

Deberías obtener la siguiente salida:

? 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 hecho esto, puedes pasar al siguiente paso.

Configurar la base de datos de WordPress

Por defecto, el servidor MariaDB no está protegido. Así que primero tendrás que asegurarlo. Puedes asegurarlo con el siguiente comando:

mysql_secure_installation

Responde a todas las preguntas que se muestran 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ías 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, entra en el shell de MariaDB con el siguiente comando:

mysql -u root -p

Proporciona tu contraseña de root cuando se te pida y luego crea 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, vacía los privilegios y sal del shell de MariaDB con el siguiente comando:

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

Una vez configurada tu base de datos, puedes pasar al siguiente paso.

Descarga WordPress

Puedes 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, extrae el archivo descargado con el siguiente comando:

tar -xvzf latest.tar.gz

A continuación, cambia la propiedad del directorio wordpress al nginx:

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

A continuación, cambia el directorio a wordpress y renombra el archivo de configuración por defecto de wordpress:

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

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

nano wp-config.php

Define la información de tu 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' );

Guarda y cierra el archivo, cuando hayas terminado.

Configurar Nginx para WordPress

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

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

Añade 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;
    }

}

Guarda y cierra el archivo. A continuación, comprueba si el nginx tiene algún error de sintaxis con el siguiente comando

nginx -t

Deberías obtener la siguiente salida:

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

Por último, reinicia el servicio Nginx para aplicar los cambios de configuración:

systemctl restart nginx

Accede al panel de control de WordPress

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

Abre tu navegador web y escribe la URL http://example.com. Serás redirigido a la siguiente página:

Asistente de instalación de WordPress

Proporciona 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 haz clic en el botón Instalar WordPress. Una vez terminada la instalación. Deberías ver la siguiente página:

WordPress se ha instalado con éxito

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

Inicio de sesión en WordPress

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

Panel de administración de WordPress

Asegurar WordPress con Let’s Encrypt

Para asegurar tu sitio de WordPress con el SSL gratuito de Let’s Encrypt, tendrás que instalar el cliente Certbot Let’s Encrypt en tu sistema. Por defecto, Certbot no está disponible en el repositorio por defecto de CentOS 8. Así que tendrás que descargarlo del sitio web oficial de Certbot.

Puedes 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, ejecuta el siguiente comando para obtener e instalar un certificado SSL para tu sitio web de WordPress.

certbot-auto --apache -d example.com

Se te pedirá que proporciones una dirección de correo electrónico y que aceptes las condiciones del servicio. También tendrás que elegir si quieres redirigir el tráfico HTTP a HTTPS. Selecciona la opción adecuada y pulsa Enter. Una vez que la instalación haya finalizado con éxito, deberías obtener la siguiente salida:

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 tiene una validez de 90 días. Por lo que se recomienda renovar el certificado antes de que caduque. Puedes configurar la tarea Cron para que renueve el certificado automáticamente.

Para ello, crea el crontab con el siguiente comando:

crontab -e

Añade 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

Guarda y cierra el archivo, cuando hayas terminado.

Conclusión

En el tutorial anterior, hemos aprendido a instalar y configurar WordPress con Nginx en un servidor CentOS. También hemos aprendido a asegurar el sitio de WordPress con el SSL gratuito de Let’s Encrypt. Espero que ahora puedas alojar fácilmente tu propio sitio web de WordPress.

También te podría gustar...