Cómo instalar WordPress en Ubuntu 20.04 con LEMP (Linux, Nginx, MySQL y PHP) y Let’s Encrypt

Cómo instalar WordPress en Ubuntu 20.04 con LEMP (Linux, Nginx, MySQL y PHP) y Let’s Encrypt

WordPress es un sistema de administración de contenidos (CMS, por sus siglas en inglés) que se utiliza en una gran variedad de sitios web. Esta herramienta es la base que posibilita el funcionamiento desde blogs hasta tiendas de comercio electrónico, pasando por instituciones de todo tipo. En esta guía aprenderás cómo instalar WordPress en Ubuntu 20.04 con LEMP (Linux, Nginx, MySQL y PHP) y Let’s Encrypt.

Requisitos previos

Paso 1: Instalación de extensiones para PHP

A pesar de que ya instalamos PHP previamente, necesitaremos agregar una serie de extensiones para que WordPress funcione correctamente:

sudo apt update
sudo apt install php-curl php-gd php-intl php-mbstring php-soap php-xml php-xmlrpc php-zip -y

Cuando la instalación finalice, reinicia el proceso PHP-FPM con sudo systemctl restart php7.4-fpm para poder emplear las utilidades que acabas de añadir.

Paso 2: Configuración de Nginx

Para comenzar, abre el archivo de configuración correspondiente al bloque de servidor cloudme.fun (/etc/nginx/conf.d/cloudme.fun.conf) y agrega las siguientes directivas location. La primera de ellas representa la integración de Nginx con PHP. A continuación, try_files se emplea para chequear la existencia de los recursos pedidos y redirigir a index.php en caso de que no se encuentren. Las dos siguientes harán que las solicitudes por favicon.ico y robots.txt no queden registradas en los logs de Nginx, con lo que será posible filtrarlos más fácilmente. Finalmente, la última directiva indica que las imágenes, las hojas de estilo en cascada y los archivos JavaScript deben almacenarse en caché para responder a la petición más rápidamente.

location ~ \.php$ {
    include snippets/fastcgi-php.conf;
    fastcgi_pass unix:/var/run/php/php7.4-fpm.sock;
}

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

location = /favicon.ico { log_not_found off; access_log off; }
location = /robots.txt { log_not_found off; access_log off; allow all; }
location ~* .(css|gif|ico|jpeg|jpg|js|png)$ {
    expires max;
    log_not_found off;
}

Además, debes indicar que la raíz del sitio será el archivo index.php agregando la siguiente línea debajo de la directiva server_name:

index index.php

El bloque de servidor debería tener la siguiente apariencia a esta altura. En la imagen de abajo se resaltan en rojo las líneas que acabamos de agregar:

Recuerda que para escribir estas guías nosotros utilizamos el dominio cloudme.fun pero a la hora de seguir los pasos tu debes reemplazar las referencias (server_name, archivo de configuración, etc.) por tu propio dominio.

Luego de guardar los cambios, verifica que la configuración sea correcta:

sudo nginx -t && sudo nginx -s reload

Si hubiere algún error, utiliza el mensaje para identificar la causa y corregirla antes de continuar.

Paso 3: Creación de una base de datos

Debido a que WordPress necesitará una base de datos, ingresa al prompt de MySQL para agregar una:

sudo mysql

Junto con la creación de la base de datos (a la que llamaremos wordpress_db en este ejemplo), establece el usuario que generaste en Cómo instalar un stack LEMP (Linux, Nginx, MySQL y PHP) en Ubuntu 20.04 previamente para las tareas relacionadas con el CMS:

CREATE DATABASE wordpress_db DEFAULT CHARACTER SET utf8 COLLATE utf8_unicode_ci;
GRANT ALL ON wordpress_db.* TO 'gabriel'@'localhost';

Una vez completado este paso, escribe exit y presiona Enter para regresar a la línea de comandos del sistema operativo.

Paso 4: Descarga y configuración de WordPress

Para descargar la última versión disponible de WordPress, emplea el siguiente comando:

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

Una vez que dispongas del tarball, utiliza la siguiente serie de comandos para crear un directorio y extraer sus contenidos. Luego cópialos (incluyendo archivos ocultos) al directorio del sitio cloudme.fun. En este paso también renombraremos el archivo actual index.html como index.html.old para que no interfiera con WordPress.

mkdir temp
tar xzvf latest.tar.gz -C temp
sudo mv /var/www/cloudme.fun/index.html /var/www/cloudme.fun/index.html.old
sudo cp -a temp/wordpress/. /var/www/cloudme.fun/
cd /var/www/cloudme.fun/
sudo mv wp-config-sample.php wp-config.php 
 

Una vez que los archivos de instalación estén en /var/www/cloudme.fun, necesitarás otorgarle al usuario de Nginx la propiedad sobre estos. De esta forma, el servidor web podrá leer y escribir en los mismos, así como instalar actualizaciones del CMS y de cualquier plugin que agregues.

sudo chown -R www-data:www-data /var/www/cloudme.fun 

A continuación, utiliza el generador de claves de WordPress para obtener los valores únicos e irrepetibles que luego reemplazarás en el archivo de configuración:

curl -s https://api.wordpress.org/secret-key/1.1/salt/

En wp-config.php coloca las claves que te devolvió el comando anterior:

Si lo deseas, puedes cambiar estos valores luego utilizando el mismo comando para invalidar cookies existentes. Esto ocasionará que todos los usuarios que hayan iniciado sesión en el sitio deban hacerlo otra vez.

Dentro del mismo archivo también deberás indicar los datos de conexión a la base de datos:

Guarda los cambios antes de continuar con el siguiente paso.

Paso 5: Instalación de WordPress desde el navegador

Para continuar el proceso de instalación de WordPress, abre tu sitio seguido por /wp-config.php en el navegador. Si todo salió correctamente hasta el momento, deberías ver el listado de idiomas entre los que puedes elegir para continuar. Selecciona Español y haz clic en el botón Continuar. En el próximo paso tendrás que indicar el título del sitio, elegir credenciales para realizar tareas administrativas posteriormente e ingresar un correo electrónico para notificaciones. Cuando hayas finalizado, presiona Instalar WordPress:

Luego de algunos segundos, deberías ver el mensaje de confirmación:

El botón Acceder te redirigirá al formulario de inicio de sesión. Ingresa las credenciales que elegiste anteriormente y verás el panel de WordPress funcionando:

¡Felicitaciones! Ya tienes funcionando tu sitio WordPress.

Conclusión

En esta guía aprendiste a instalar WordPress desde cero sobre un stack LEMP (Linux, Nginx, MySQL, y PHP) asegurado con Let’s Encrypt. Antes de promocionar tu sitio con tus clientes o visitantes potenciales, te recomendamos realizar las configuraciones básicas de seguridad del CMS. Estos recaudos te serán de gran utilidad ante cualquier ataque externo que pretenda vulnerar a WordPress.

¿Te resultó útil esta guía?

Imagen por defecto
Gabriel Cánepa
Gabriel trabaja actualmente como desarrollador full-stack en Scalar, una firma que se dedica a hacer valuaciones de empresas. Es Administrador de Sistemas certificado por la Fundación Linux y previamente ha escrito un gran número de artículos y contenidos técnicos sobre el tema para: DigitalOcean, Linode, Carrera Linux Argentina y Tecmint. Tiene una certificación en programación de la Universidad de Brigham Young-Idaho, y está completando las carreras de programador y analista de sistemas en la Universidad Nacional de Villa Mercedes (UNViMe). En su tiempo libre, Gabriel disfruta leyendo libros de Stephen R. Covey, tocando piano y guitarra, y enseñando conocimientos de programación a su dos hijas.