Cómo instalar Drupal 9 con Nginx y Let’s Encrypt SSL en Debian 10

Drupal es un conocido sistema de gestión de contenidos de código abierto basado en PHP. Está disponible de forma gratuita y se publica bajo la Licencia Pública General de GNU. Drupal puede utilizarse para sitios web de todos los tamaños, desde enormes sitios web internacionales hasta blogs personales y sitios corporativos o gubernamentales.

La parte central de Drupal se llama «Drupal Core», y contiene el sistema básico de gestión de contenidos, la gestión de usuarios, la gestión de menús, la personalización del diseño y la administración del sistema. El núcleo de Drupal puede ampliarse mediante plugins, hasta ahora, la comunidad de drupal ha proporcionado más de 31.000 módulos para Drupal.

En este tutorial, te mostraremos cómo instalar Drupal 9 en Debian Buster 10. Ejecutaremos Drupal bajo la pila LEMP (Linux, Nginx, MySQL/MariaDB y PHP-FPM), y aseguraremos la instalación utilizando el SSL Letsencrypt.

Requisitos previos

Para esta guía, probaremos nuestra instalación de Drupal en la última versión de Debian Buster 10 con 2GB de RAM, 50GB de espacio libre en disco y 2 CPUs. Además, necesitamos los privilegios sudo de root para instalar nuevos paquetes y editar alguna configuración del software del sistema.

¿Qué vamos a hacer?

  • Instalar el servidor web Nginx
  • Instalar y configurar PHP-FPM
  • Instalar y configurar MariaDB
  • Generar SSL Letsencrypt
  • Configurar Nginx Virtualhost para Drupal 9
  • Descargar el código fuente de Drupal 9
  • Post Instalación de Drupal 9

Paso 1 – Instalar el servidor web Nginx

En primer lugar, instalaremos el servidor web Nginx en nuestro servidor Debian.

Actualiza los repositorios disponibles en tu sistema y actualiza todos los paquetes a la última versión mediante el comando apt que aparece a continuación.

sudo apt update
sudo apt upgrade

A continuación, instala los paquetes del servidor web Nginx utilizando el siguiente comando.

sudo apt install nginx -y

Una vez completada la instalación, inicia el servicio Nginx y añádelo al arranque del sistema.

systemctl start nginx
systemctl enable nginx

El servicio Nginx está en marcha, compruébalo utilizando el siguiente comando.

systemctl status nginx

A continuación se muestra el resultado que obtendrás.

Instalar Nginx

El resultado es que el servicio Nginx está en funcionamiento en Debian Buster 10.

Paso 2 – Instalar y configurar PHP-FPM

En este paso, instalaremos y configuraremos PHP-FPM 7.3 en Debian 10 para nuestra instalación de Drupal.

Instala los paquetes PHP y PHP-FPM 7.3 utilizando el comando apt que aparece a continuación.

sudo apt install php php-fpm php-gd php-common php-mysql php-apcu php-gmp php-curl php-intl php-mbstring php-xmlrpc php-gd php-xml php-cli php-zip -y

Una vez terminada la instalación, ve al directorio ‘/etc/php/7.3’ y edita la configuración ‘php.ini’ utilizando el editor vim.

cd /etc/php/7.3/fpm/
vim php.ini

Descomenta y cambia los detalles de la configuración como se indica a continuación.

date.timezone = Asia/Singapore
memory_limit = 256M
upload_max_filesize = 64M
max_execution_time = 600
cgi.fix_pathinfo = 0

Guarda y cierra.

A continuación, reinicia el servicio PHP-FPM y añádelo al arranque del sistema.

systemctl restart php7.3-fpm
systemctl enable php7.3-fpm

El servicio PHP-FPM está en marcha y, por defecto, se ejecuta bajo el archivo sock

iniciar el servicio php-fpm

Comprueba el servicio PHP-FPM con el siguiente comando.

ss -plnt | grep php
systemctl status php7.3-fpm

A continuación se muestra el resultado que obtendrás.

comprueba el servicio php-fpm y el archivo sock

Como resultado, la instalación y configuración de PHP-FPM para Drupal 9 en Debian Buster 10 se ha completado.

Paso 3 – Instalar y configurar el servidor MariaDB

Después de instalar los paquetes PHP y PHP-FPM, instalaremos la base de datos MariaDB y crearemos una nueva base de datos para Drupal 9.

Instala los paquetes de MariaDB con el comando apt que aparece a continuación.

sudo apt install mariadb-server mariadb-client

Después, inicia el servicio MariaDB y añádelo al arranque del sistema.

systemctl start mysql
systemctl enable mysql

Como resultado, la base de datos MariaDB ha sido instalada en el servidor Debian.

configurar la contraseña de la raíz de MySQL

A continuación, configuraremos la contraseña para el usuario root por defecto de MariaDB utilizando el comando ‘mysql_secure_installation’ como se indica a continuación.

mysql_secure_installation

Escribe la contraseña para el usuario root por defecto y teclea‘Y’ para todas las opciones.

Enter current password for root (enter for none): 
OK, successfully used password, moving on...

Set a root password? [Y/n] Y
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

Y la contraseña de root de MariaDB ha sido configurada.

A continuación, necesitamos acceder al shell de MySQL y crear una nueva base de datos y un nuevo usuario para nuestra instalación de Drupal.

Accede al shell de MySQL con el usuario raíz por defecto y tu contraseña como se indica a continuación.

mysql -u root -p

Crea una nueva base de datos con el nombre de ‘drupaldb’ y el usuario ‘drupaluser’ con la contraseña ‘[email protected]’ utilizando las consultas de MySQL que aparecen a continuación.

create database drupaldb;
create user [email protected] identified by '[email protected]';
grant all privileges on drupaldb.* to [email protected] identified by '[email protected]';
flush privileges;

Escribe‘exit‘ o pulsa el botón‘Ctrl+d’ para salir del shell de MySQL.

Crear base de datos para drupal

Como resultado, se ha creado la nueva base de datos y el nuevo usuario para la instalación de Drupal.

Paso 4 – Generar SSL Letsencrypt

Para este tutorial, aseguraremos la instalación de Drupal 9 utilizando el SSL Letsencrypt. Así que asegúrate de que tienes un nombre de dominio que se resuelve con la dirección IP de tu servidor.

Para utilizar el SSL Letsencrypt, necesitamos generar certificados SSL con la herramienta certbot.

Instala la herramienta certbot con el comando apt que aparece a continuación.

sudo apt install certbot -y

Después, detén el servicio Nginx y genera el SSL Letsencrypt para tu nombre de dominio Drupal utilizando el siguiente comando.

systemctl stop nginx
certbot certonly --rsa-key-size 2048 --standalone --agree-tos --no-eff-email --email [email protected] -d drupal.hakase-labs.io

Asegúrate de cambiar la dirección de correo electrónico por la tuya. Una vez completado todo, tus certificados SSL estarán disponibles en el directorio ‘/etc/letsencrypt/live/tudominio.com’.

Paso 6 – Configurar el Virtualhost de Nginx para Drupal 9

En este paso, crearemos una nueva configuración de host virtual Nginx para Drupal.

Ve al directorio etc/nginx/sites-available y crea una nueva configuración de host virtual ‘drupal9’ utilizando el editor vim.

cd /etc/nginx/sites-available/
vim drupal9

Cambia el nombre de dominio y la ruta de los certificados SSL Letsencrypt por los tuyos, y pégalos.

server {
    server_name drupal.hakase-labs.io;
    root /var/www/drupal9; ## <-- Your only path reference.

    listen 80;
    listen [::]:80;
    listen 443 default ssl;

    ssl_certificate      /etc/letsencrypt/live/drupal.hakase-labs.io/fullchain.pem;
    ssl_certificate_key  /etc/letsencrypt/live/drupal.hakase-labs.io/privkey.pem;

    # Redirect HTTP to HTTPS
    if ($scheme = http) {
        return 301 https://$server_name$request_uri;
    }

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

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

    # Very rarely should these ever be accessed outside of your lan
    location ~* \.(txt|log)$ {
        allow 192.168.0.0/16;
        deny all;
    }

    location ~ \..*/.*\.php$ {
        return 403;
    }

    location ~ ^/sites/.*/private/ {
        return 403;
    }

    # Block access to "hidden" files and directories whose names begin with a
    # period. This includes directories used by version control systems such
    # as Subversion or Git to store control files.
    location ~ (^|/)\. {
        return 403;
    }

    location / {
        # try_files $uri @rewrite; # For Drupal <= 6
        try_files $uri /index.php?$query_string; # For Drupal >= 7
    }

    location @rewrite {
        rewrite ^/(.*)$ /index.php?q=$1;
    }

    # In Drupal 8, we must also match new paths where the '.php' appears in the middle,
    # such as update.php/selection. The rule we use is strict, and only allows this pattern
    # with the update.php front controller.  This allows legacy path aliases in the form of
    # blog/index.php/legacy-path to continue to route to Drupal nodes. If you do not have
    # any paths like that, then you might prefer to use a laxer rule, such as:
    #   location ~ \.php(/|$) {
    # The laxer rule will continue to work if Drupal uses this new URL pattern with front
    # controllers other than update.php in a future release.
    location ~ '\.php$|^/update.php' {
        fastcgi_split_path_info ^(.+?\.php)(|/.*)$;
        #NOTE: You should have "cgi.fix_pathinfo = 0;" in php.ini
        include fastcgi_params;
        include snippets/fastcgi-php.conf;
        fastcgi_param SCRIPT_FILENAME $request_filename;
        fastcgi_intercept_errors on;
        fastcgi_pass unix:/run/php/php7.3-fpm.sock;
    }

    # Fighting with Styles? This little gem is amazing.
    # location ~ ^/sites/.*/files/imagecache/ { # For Drupal <= 6
    location ~ ^/sites/.*/files/styles/ { # For Drpal >= 7
        try_files $uri @rewrite;
    }

    location ~* \.(js|css|png|jpg|jpeg|gif|ico)$ {
        expires max;
        log_not_found off;
    }
}

Guarda y cierra.

A continuación, activa la configuración del host virtual Nginx para Drupal.

ln -s /etc/nginx/sites-available/drupal9 /etc/nginx/sites-enabled/

Ahora prueba la configuración de Nginx y asegúrate de que no hay ningún error, luego reinicia el servicio Nginx.

nginx -t
systemctl restart nginx

Como resultado, la configuración del host virtual Nginx para Drupal se ha completado.

Configurar el host virtual Nginx para Drupal

Paso 6 – Descargar Drupal

En este paso, descargaremos e instalaremos la última versión 9 de Drupal en el directorio ‘/var/www’.

Ahora ve al directorio ‘/var/www’ y descarga el código fuente de Drupal utilizando el comando wget como se indica a continuación.

cd /var/www/
wget -q https://www.drupal.org/download-latest/tar.gz -O drupal-latest.tar.gz

Extrae el código fuente de Drupal y renombra el directorio a ‘drupal9’.

tar -xf drupal-latest.tar.gz
mv drupal-9*/ drupal9/

Después, cambia la propiedad del directorio de instalación de Drupal al usuario ‘www-data’.

chown -R www-data:www-data /var/www/drupal9

Como resultado, el directorio de instalación de Drupal se encuentra en el directorio ‘/var/www/drupal9’.

Descargar el código fuente de Drupal 9

Paso 7 – Instalación de Drupal Post

Abre tu navegador web y escribe la URL de tu instalación de Drupal en la barra de direcciones.

https://drupal.hakase-labs.io/

Y serás redirigido a la conexión segura HTTPS.

Ahora elige el idioma por defecto para tu instalación de Drupal. El idioma por defecto es el«inglés».

Lenguaje de configuración de Drupal

Elige el idioma que prefieras y haz clic en el botón«Guardar y continuar«.

Selecciona tu perfil de instalación de Drupal y haz clic enGuardar y continuar’. Si es la primera vez que instalas Drupal, elige el perfil de instalación‘Estándar‘.

Tipo de instalación de Drupal

Para la configuración de la base de datos MySQL, escribe los detalles de la base de datos creada en la parte superior y haz clic en el botón ‘Guardary continuar’.

Configurar la base de datos para Drupal

Y obtendrás el proceso de instalación de Drupal como se indica a continuación.

Proceso de instalación de Drupal

Una vez completada la instalación, configura el nombre de tu sitio, el usuario administrador, la contraseña, el correo electrónico, etc.

Configuración del sitio Drupal

Haz clic en el botón«Guardar y continuar».

Ahora serás redirigido a la página de índice por defecto de Drupal como se indica a continuación.

página de inicio de drupal

Haz clic en el menú‘Configuración‘ en t op, y obtendrás el panel de configuración de Drupal Admin.

Panel de control del administrador de Drupal

Como resultado, la instalación de Drupal 9 con la pila LEMP en Debian Buster 10 se ha completado con éxito.

También te podría gustar...