Cómo instalar Drupal CMS con Apache en Debian 12

Drupal es un sistema de gestión de contenidos web gratuito y de código abierto escrito en PHP y distribuido bajo la Licencia Pública General GNU. Drupal proporciona una robusta herramienta de gestión de contenidos con sofisticadas API para la publicación multicanal.

Drupal es uno de los CMS más utilizados en Internet, empleado por al menos el 14% de los 10.000 sitios web más importantes de Internet, y se utiliza en sitios de empresas globales, gobiernos, educación e instituciones. Drupal proporciona un sistema altamente escalable, integrado con aplicaciones digitales, y puede utilizarse para crear multisitios para diferentes organizaciones con soporte multilingüe.

En esta guía, te mostraré cómo instalar Drupal en un servidor Debian 12. Instalaremos Drupal en la pila LAMP (Apache2, MariaDB y PHP) y aseguraremos Drupal con certificados SSL/TLS de Letsencrypt.

Requisitos previos

Para empezar, comprueba que tienes lo siguiente:

  • Un servidor Debian 12.
  • Un usuario no root con privilegios de administrador.
  • Un nombre de dominio apuntando a la dirección IP de tu servidor.

Instalación de las dependencias

Drupal es un sistema de gestión de contenidos de código abierto escrito en PHP con MySQL/MariaDB como base de datos. Para instalar Drupal, debes instalar los paquetes PHP y MySQL/MariaDB en tu sistema.

En el siguiente paso, instalarás dependencias de paquetes para Drupal, incluyendo la Pila LAMP (Apache2, MariaDB y PHP), el gestor de dependencias PHP Composer y algunas extensiones PHP adicionales.

En primer lugar, ejecuta el siguiente comando apt para actualizar y refrescar el índice de paquetes de Debian.

sudo apt update

Una vez actualizado, instala las dependencias de los paquetes ejecutando el siguiente comando. Con el siguiente comando, instalarás el paquete LAMP Stack (Apache2, MariaDB y PHP), el gestor de dependencias PHP Composer y extensiones PHP adicionales que requiere Drupal.

sudo apt install apache2 mariadb-server composer php php-apcu php-dev libapache2-mod-php libcurl4-openssl-dev php-cli php-mysql php-zip php-gd php-fpm php-json php-common php-intl php-mbstring php-curl php-xml php-pear php-tidy php-soap php-bcmath php-xmlrpc

Escribe y para proceder a la instalación.

instalar dependencias

Una vez instaladas las dependencias, verifica cada una de ellas para asegurarte de que la instalación se ha realizado correctamente.

Verifica el servicio apache2 utilizando el siguiente comando. Esto asegurará que el servicio apache2 se está ejecutando y está habilitado.

sudo systemctl is-enabled apache2
sudo systemctl status apache2

La salida mostrada revelará que el servicio apache2 se está ejecutando y está habilitado.

comprobar apache2

Ahora verifica el servicio mariadb ejecutando el siguiente comando.

sudo systemctl is-enabled mariadb
sudo systemctl status mariadb

El resultado debería ser similar a éste:

comprobar mariadb

A continuación, comprueba la ubicación del archivo binario de Composer y la versión instalada mediante el siguiente comando.

which composer
sudo -u www-data composer -v

La salida confirma que Composer 2. 5 está instalado en /usr/bin/composer.

comprobar compositor

Por último, comprueba la versión de PHP y los módulos habilitados para PHP utilizando el comando siguiente.

php -v
php -m

PHP 8.2 debería estar instalado en tu máquina Debian y las extensiones PHP por defecto deberían estar habilitadas.

comprobar php

Configurar el servidor MariaDB

Con todas las dependencias instaladas, el siguiente paso es asegurar tu instalación del servidor MariaDB y crear una nueva base de datos y un nuevo usuario que serán utilizados por Drupal. Asegurarás MariaDB mediante la utilidad mariadb-secure-installation, y luego crearás una nueva base de datos y un nuevo usuario mediante la línea de comandos del cliente mariadb.

Ejecuta el siguiente comando mariadb-secure-installation para asegurar tu servidor MariaDB.

sudo mariadb-secure-installation

Durante el proceso, se te preguntará por las siguientes configuraciones:

  • La instalación por defecto de MariaDB viene sin contraseña, pulsa ENTER cuando se te pida la contraseña.
  • Ahora introduce Y para configurar la contraseña de root de MariaDB. A continuación, escribe la nueva contraseña para MariaDB y repite la contraseña.
  • Introduce Y para eliminar el usuario anónimo de tu instalación de MariaDB.
  • Vuelve a introducir Y cuando se te pida para desactivar el inicio de sesión remoto para el usuario raíz de MariaDB.
  • Introduce Y para eliminar la prueba de base de datos por defecto de tu MariaDB.
  • Por último, introduce Y para recargar los privilegios de las tablas y aplicar los nuevos cambios.

A continuación, inicia sesión en el servidor MariaDB ejecutando el siguiente comando mariadb. Introduce tu contraseña de root de MariaDB cuando se te solicite.

sudo mariadb -u root -p

Una vez conectado, ejecuta las siguientes consultas para crear una nueva base de datos drupaldb y un usuario drupal en tu servidor MariaDB. Asegúrate de cambiar la contraseña por la tuya.

CREATE DATABASE drupaldb;
CREATE USER drupal@localhost IDENTIFIED BY 'password';
GRANT ALL ON drupaldb.* TO drupal@localhost WITH GRANT OPTION;
FLUSH PRIVILEGES;

crear usuario de base de datos

Por último, ejecuta la siguiente consulta para verificar y asegurarte de que el usuario drupal puede acceder a la base de datos drupaldb.

SHOW GRANTS FOR drupal@localhost;

La salida que se muestra a continuación confirma que el usuario drupal puede acceder a la base de datos drupaldb para la instalación de Drupal.

verificar el usuario de la base de datos

Configurar PHP

Después de configurar el servidor MariaDB, configurarás PHP para la instalación de Drupal:

  • Instalando la extensión Uploadprogress a través de PECL (PHP Extension Community Library).
  • Editando el archivo php.ini.

Comencemos.

Instalación de la extensión Uploadprogress mediante PECL

La extensión uploadprogress se utiliza para mostrar y seguir el progreso de subida de archivos, que incluye la velocidad de subida y el tiempo restante estimado. La extensión uploadprogress está disponible en PECL, que debe instalarse manualmente a través de la línea de comandos pecl.

Ejecuta el siguiente comando pecl para instalar uploadprogress en tu sistema Debian.

sudo pecl install uploadprogress

Debería comenzar la instalación de uploadprogress.

instalar uploadprogress

Una vez finalizada la instalación, ejecuta el siguiente comando para subirprogress la extensión a tu instalación PHP. Esto creará una nueva configuración de extensión PHP /etc/php/8.2/mods-available/uploadprogress.ini.

cat <<EOF | sudo tee /etc/php/8.2/mods-available/uploadprogress.ini
; configuration for php uploadprogress module
; priority 15
extension=uploadprogress.so
EOF

Por último, ejecuta el siguiente comando para habilitar la extensión uploadprogress en tu instalación PHP.

sudo ln -s /etc/php/8.2/mods-available/uploadprogress.ini /etc/php/8.2/apache2/conf.d/15-uploadprogress.ini

activar uploadprogress

Editar el archivo php.ini

Abre la configuración por defecto de php.ini /etc/php/8.2/apache2/php.ini utilizando el siguiente comando del editor nano.

sudo nano /etc/php/8.2/apache2/php.ini

Cambia la configuración por defecto de PHP con lo siguiente. Asegúrate de ajustar las opciones memory_limit y date.timezone con el entorno de tu servidor.

memory_limit = 512M
upload_max_filesize = 60M
max_execution_time = 300
date.timezone = Europe/Amsterdam

Guarda y sal del archivo cuando hayas terminado.

A continuación, ejecuta el siguiente comando systemctl para reiniciar el servicio apache2 y aplicar los cambios que has realizado.

sudo systemctl restart apache2

A continuación, ejecuta el siguiente comando para crear un nuevo archivo PHPINFO /var/www/html/info.php y verificar tu configuración PHP.

cat <<EOF | sudo tee /var/www/html/info.php
<?php
phpinfo();
?>
EOF

Inicia tu navegador web y visita la dirección IP de tu servidor, por ejemplo http://192.168.10.15/info.php. Si tu configuración PHP es correcta, deberías ver la página PHPINFO como la siguiente:

phpinfo

Descarga del código fuente de Drupal

Tras configurar el servidor MariaDB y la instalación de PHP, descargarás el código fuente de Drupal e instalarás sus dependencias PHP a través de Composer. En este caso, descargarás la última versión de Drupal.

Mueve tu directorio de trabajo /var/www y descarga Drupal mediante el comando wget que aparece a continuación. El código fuente de Drupal estará disponible en el archivo drupal .tar.gz.

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

Extrae el archivo drupal. tar. gz mediante el siguiente comando tar. A continuación, cambia el nombre del directorio extraído a drupal, lo que significa que el directorio raíz web para Drupal será /var/www/drupal.

tar -xvf drupal.tar.gz
mv drupal-* /var/www/drupal

Por último, ejecuta el siguiente comando para cambiar el permiso y la propiedad del directorio raíz web de Drupal /var/www/drupal. Este directorio será propiedad del usuario www-data con permiso 755.

sudo chown -R www-data:www-data /var/www/drupal/
sudo chmod -R 755 /var/www/drupal/

Configurar el host virtual Apache2

Ahora que has descargado Drupal y configurado el directorio raíz web en /var/www/drupal, el siguiente paso es crear una nueva configuración de host virtual Apache2 que se utilizará para ejecutar Drupal. Antes de continuar, asegúrate de que tienes el nombre de dominio apuntando a la dirección IP de tu servidor.

En primer lugar, ejecuta el siguiente comando para habilitar algunos módulos de Apache2 necesarios para Drupal.

sudo a2enmod rewrite ssl headers deflate

activar módulos apache2

A continuación, crea una nueva configuración de host virtual /etc/apache2/sites-available/drupal. conf utilizando el siguiente comando del editor nano.

sudo nano /etc/apache2/sites-available/drupal.conf

Introduce la siguiente configuración y asegúrate de cambiar la opción ServerName por el nombre de tu dominio.

<VirtualHost *:80>
ServerName hwdomain.io
ServerAdmin [email protected]
DocumentRoot /var/www/drupal

# Add security
php_flag register_globals off

ErrorLog ${APACHE_LOG_DIR}/hwdomain.io.error.log
CustomLog ${APACHE_LOG_DIR}/hwdomain.io.access.log combined

<FilesMatch "\.(cgi|shtml|phtml|php)$">
SSLOptions +StdEnvVars
</FilesMatch>

<Directory /var/www/drupal>
Options FollowSymlinks
#Allow .htaccess
AllowOverride All
Require all granted
<IfModule security2_module>
SecRuleEngine Off
# or disable only problematic rules
</IfModule>
</Directory>

<Directory /var/www/drupal/>
RewriteEngine on
RewriteBase /
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^(.*)$ index.php?q=$1 [L,QSA]
</Directory>

</VirtualHost>

Cuando hayas terminado, guarda y cierra el archivo.

A continuación, ejecuta el siguiente comando para activar el archivo de host virtual drupal.conf y verificar tu sintaxis de Apache2.

sudo a2ensite drupal.conf
sudo apachectl configtest

Si la sintaxis de Apache2 es correcta, aparecerá el mensaje Sintaxis correcta.

configuración vhost

Ahora reinicia el servicio apache2 utilizando el siguiente comando para aplicar los cambios que has realizado.

sudo systemctl restart apache2

Generar certificados SSL/TLS Letsencrypt para Drupal

En el siguiente paso, asegurarás tu instalación de Drupal con certificados SSL/TLS de Letsencrypt. Para ello, debes instalar Certbot y el plugin Certbot para Apache en tu sistema Debian y, a continuación, generar certificados SSl/TLS para tu nombre de dominio de Drupal.

Instala Certbot y el plugin Certbot APache utilizando el siguiente comando apt install. Escribe y para proceder a la instalación.

sudo apt install certbot python3-certbot-apache

instalar certbot

A continuación, ejecuta el siguiente comando certbot para generar certificados SSL/TLS para tu sitio Drupal. Asegúrate de cambiar la dirección de correo electrónico y el nombre de dominio en el siguiente comando.

sudo certbot --apache --agree-tos --redirect --hsts --staple-ocsp --email [email protected] -d hwdomain.io

Una vez finalizado el proceso, tus certificados SSL/TLS estarán disponibles en el directorio /etc/letsencrypt/live/domain.com. Tu instalación de Drupal se configurará automáticamente con HTTPS, que se configura a través del plugin de Apache Certbot.

Instalar Drupal mediante el Instalador Web

Inicia tu navegador web y visita el nombre de dominio de tu sitio Drupal, como http://hwdomain.io/. Si todo va bien, deberías ser redirigido a conexiones HTTPS y se mostrará la página de instalación de Drupal.

Selecciona el idioma por defecto que se utilizará para la instalación de Drupal y haz clic en Guardar y continuar.

elegir lengua

Selecciona el perfil de instalación de Drupal que deseas utilizar. El perfil Estándar se recomienda para el propietario de un sitio nuevo, mientras que el Mínimo requiere un conocimiento profundo de Drupal. También puedes elegir un perfil con Demo.

En el siguiente ejemplo utilizaremos el perfil Estándar, luego haz clic en Guardar y continuar.

seleccionar perfil de instalación

Ahora el instalador web de Drupal verificará el entorno de tu sistema para la instalación de Drupal. Deberías ser redirigido a la configuración de la base de datos si tu servidor cumple los requisitos de Drupal.

Introduce los detalles del nombre, usuario y contraseña de tu base de datos MariaDB que utilizará Drupal. A continuación, haz clic en Guardar y continúa de nuevo.

configuración de la base de datos

Tras configurar la base de datos, debería comenzar la instalación de Drupal.

inicio de la instalación

Una vez finalizado el proceso de instalación, configura tu sitio Drupal. Introduce el nombre del sitio, la dirección de correo electrónico del sitio, el nombre de usuario y la contraseña del administrador, el país por defecto y la zona horaria. A continuación, haz clic en Guardar y continuar.

configuración del sitio

Si la instalación de Drupal se ha realizado correctamente, aparecerá en tu pantalla el mensaje«¡Enhorabuena, has instalado Drupal!

drupal instalado

Desde ahí, puedes gestionar el contenido de Drupal, las estructuras del sitio y la administración de Drupal, y comprobar el estado de tu instalación de Drupal. Haz clic en Gestionar y selecciona el menú Configuración para configurar tu instalación de Drupal.

configuración del sitio

Configuración adicional para Drupal

Para completar esta guía, deberás añadir alguna configuración adicional a tu Drupal.

En primer lugar, vuelve a tu servidor terminal y ejecuta el siguiente comando para cambiar el permiso del archivo settings. php y ábrelo con el editor nano.

sudo chmod 644 /var/www/drupal/sites/default/settings.php
sudo nano /var/www/drupal/sites/default/settings.php

Busca la sección«trusted_host_patterns» e introduce el nombre de dominio de tu instalación de Drupal de la siguiente forma.

$settings['trusted_host_patterns'] = [
  '^hwdomain\.io$',
];

Guarda y cierra el archivo cuando hayas terminado.

Ahora ejecuta el siguiente comando para revertir el permiso del archivo settings. php a 444.

sudo chmod 444 /var/www/drupal/sites/default/settings.php

A continuación, selecciona el menú Informes y haz clic en Informes de estado.

informes de situación

Deberías ver información detallada sobre tu instalación de Drupal. En la siguiente captura de pantalla, Drupal 10 está instalado con el servidor web Apache2 2.4, el servidor MariaDB 10.11 y PHP 8.2.

informe de situación drupal

Ahora haz clic en el enlace Detalles del informe de estado, y se te mostrará el informe de detalles de tu entorno de servidor Drupal.

informe de situación

Conclusión

Siguiendo esta guía paso a paso, has instalado el Sistema de Gestión de Contenidos Drupal en el servidor Debian 12 con la pila LAMP y SSL/TLS Letsencrypt. A partir de aquí, ya puedes utilizar Drupal como sitio web e instalar nuevos temas y extensiones para tu CMS Drupal.

Scroll al inicio