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

Instalar Nginx

Drupal es un conocido sistema de gesti√≥n de contenido de c√≥digo abierto basado en PHP. Est√° disponible de forma gratuita y se publica bajo la Licencia P√ļblica General GNU. Drupal se puede utilizar para todos los tama√Īos de sitios web, desde grandes sitios web internacionales hasta blogs personales y sitios corporativos o gubernamentales.

La parte central de Drupal se llama ¬ęDrupal Core¬Ľ, contiene el sistema b√°sico de administraci√≥n de contenido, administraci√≥n de usuarios, administraci√≥n de men√ļs, personalizaci√≥n del dise√Īo y administraci√≥n del sistema. Drupal Core se puede ampliar mediante complementos, hasta ahora, la comunidad de Drupal ha proporcionado m√°s de 31.000 m√≥dulos para Drupal.

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

requisitos previos

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

¬ŅQue haremos?

  • 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
  • Instalaci√≥n de Drupal 9 Post

Paso 1: instale el servidor web Nginx

Primero, instalaremos el servidor web Nginx en nuestro servidor Debian.

Actualice los repositorios disponibles en su sistema y actualice todos los paquetes a la √ļltima versi√≥n usando el comando apt a continuaci√≥n.

sudo apt update
sudo apt upgrade

A continuación, instale los paquetes del servidor web Nginx con el siguiente comando.

sudo apt install nginx -y

Una vez completada toda la instalación, inicie el servicio Nginx y agréguelo al inicio del sistema.

systemctl start nginx
systemctl enable nginx

El servicio Nginx está en funcionamiento, verifíquelo con el siguiente comando.

systemctl status nginx

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

Instalar Nginx

Como resultado, el servicio Nginx est√° funcionando 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.

Instale los paquetes PHP y PHP-FPM 7.3 usando el comando apt 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 finalizada toda la instalaci√≥n, vaya al directorio ‘/etc/php/7.3’ y edite la configuraci√≥n ‘php.ini’ usando el editor vim.

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

Descomente y cambie la configuración de detalles como se muestra a continuación.

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

Guardar y cerrar.

A continuación, reinicie el servicio PHP-FPM y agréguelo al inicio del sistema.

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

El servicio PHP-FPM est√° en funcionamiento y, de forma predeterminada, se ejecuta en el archivo sock

iniciar el servicio php-fpm

Verifique el servicio PHP-FPM usando el siguiente comando.

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

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

verifique el servicio php-fpm y el archivo sock

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

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.

Instale los paquetes de MariaDB usando el comando apt a continuación.

sudo apt install mariadb-server mariadb-client

Después de eso, inicie el servicio MariaDB y agréguelo al arranque del sistema.

systemctl start mysql
systemctl enable mysql

Como resultado, la base de datos MariaDB se instaló en el servidor Debian.

configurar la contrase√Īa de root de MySQL

A continuaci√≥n, configuraremos la contrase√Īa para el usuario root predeterminado de MariaDB usando el comando ‘mysql_secure_installation’ como se muestra a continuaci√≥n.

mysql_secure_installation

Escriba la contrase√Īa para la ra√≠z predeterminada y escriba ‘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 ra√≠z de MariaDB ha sido configurada.

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

Inicie sesi√≥n en el shell de MySQL con el usuario ra√≠z predeterminado y su contrase√Īa como se muestra a continuaci√≥n.

mysql -u root -p

Cree una nueva base de datos llamada ‘drupaldb’ y el usuario ‘drupaluser’ con la contrase√Īa ‘[email¬†protected]’ utilizando las consultas de MySQL 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 ‘salida‘ o presione el ‘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 usuario para la instalación de Drupal.

Paso 4 – Genera SSL Letsencrypt

Para este tutorial, aseguraremos la instalaci√≥n de Drupal 9 utilizando SSL Letsencrypt. As√≠ que aseg√ļrese de tener un nombre de dominio que se resuelva en la direcci√≥n IP de su servidor.

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

Instale la herramienta certbot usando el comando apt a continuación.

sudo apt install certbot -y

Después de eso, detenga el servicio Nginx y genere SSL Letsencrypt para su nombre de dominio Drupal usando 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 que todo est√© completo, sus certificados SSL estar√°n disponibles en el directorio ‘/etc/letsencrypt/live/yourdomain.com’.

Paso 6: configurar Nginx Virtualhost para Drupal 9

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

Vaya al directorio etc/nginx/sites-available y cree una nueva configuraci√≥n de host virtual ‘drupal9’ usando el editor vim.

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

Cambie el nombre de dominio y la ruta de los certificados SSL Letsencrypt por los suyos propios y péguelos.

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;
}
}


Guardar y cerrar.

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

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

Ahora pruebe la configuraci√≥n de Nginx y aseg√ļrese de que no haya ning√ļn error, luego reinicie el servicio de Nginx.

nginx -t
systemctl restart nginx

Como resultado, se completó la configuración del host virtual de Nginx para Drupal.

Configurar el host virtual Nginx para Drupal

Paso 6 – Descarga Drupal

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

Ahora vaya al directorio ‘/var/www’ y descargue el c√≥digo fuente de Drupal usando el comando wget como se muestra a continuaci√≥n.

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

Extraiga el c√≥digo fuente de Drupal y cambie el nombre del directorio a ‘drupal9’.

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

Despu√©s de eso, cambie 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 la publicación de Drupal

Abra su navegador web y escriba su URL de instalación de Drupal en la barra de direcciones.

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

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

Ahora elija el idioma predeterminado para su instalaci√≥n de Drupal. El idioma predeterminado es ‘ingl√©s‘.

Idioma de configuración de Drupal

Elija como su idioma preferido y haga clic en el ‘Guardar y continuar‘ bot√≥n.

Seleccione su perfil de instalaci√≥n de Drupal y haga clic en ‘Guardar y continuar‘. Si es la primera vez que instala Drupal, elija el ‘Est√°ndar‘perfil de instalaci√≥n.

Tipo de instalación de Drupal

Para las configuraciones de la base de datos MySQL, escriba los detalles de la base de datos creada en la parte superior y haga clic en ‘Guardar y continuar‘ bot√≥n.

Configurar base de datos para Drupal

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

Proceso de instalación de Drupal

Una vez que se complete toda la instalaci√≥n, configure el nombre de su sitio, el usuario administrador, la contrase√Īa, el correo electr√≥nico, etc.

Configuración del sitio Drupal

Haga clic en ‘Guardar y continuar‘ bot√≥n.

Ahora será redirigido a la página de índice predeterminada de Drupal como se muestra a continuación.

p√°gina de inicio de drupal

Haga clic en el ‘Configuraci√≥n‘ en la parte superior, y obtendr√° el panel de configuraci√≥n de administraci√≥n de Drupal.

Panel de administración de Drupal

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

Deja una respuesta

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