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 algunas configuraciones de software del sistema.
¿Qué haremos?
- Instalar 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 posterior de Drupal 9
Paso 1:instalar 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á.
Como resultado, el servicio Nginx está activo y 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
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á.
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.
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;
Escriba 'salir ' o presione 'Ctrl+d ' para salir del shell de MySQL.
Como resultado, se ha creado la nueva base de datos y usuario para la instalación de Drupal.
Paso 4:generar 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 resuelva 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.
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'.
Paso 7:instalación posterior 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 HTTPS segura.
Ahora elija el idioma predeterminado para su instalación de Drupal. El idioma predeterminado es 'Inglés '.
Elija su idioma preferido y haga clic en '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.
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 '.
Y obtendrá el proceso de instalación de Drupal como se muestra a continuación.
Una vez completada toda la instalación, configure el nombre de su sitio, el usuario administrador, la contraseña, el correo electrónico, etc.
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.
Haga clic en 'Configuración ' en la parte superior, y obtendrá el panel de configuración de administración de Drupal.
Como resultado, la instalación de Drupal 9 con LEMP Stack en Debian Buster 10 se completó con éxito.