Drupal instalación · 15 min read · Oct 13, 2025

Cómo instalar Drupal CMS con Nginx en Rocky Linux 8

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

Drupal es uno de los CMS más utilizados en internet, utilizado por al menos el 14% de los 10,000 sitios web principales en internet, y se utiliza para industrias empresariales globales, gobiernos, educación y sitios de instituciones. Drupal proporciona un sistema altamente escalable, integrado con aplicaciones digitales, y puede ser utilizado para crear multisitios para diferentes organizaciones con soporte multilingüe.

En este tutorial, aprenderás a configurar el CMS Drupal (Sistema de Gestión de Contenidos) con el LEMP Stack en el servidor Rocky Linux. También aprenderás a poner Drupal en funcionamiento en Rocky Linux con el modo de aplicación SELinux y el Firewalld habilitado.

Requisitos previos

Para comenzar con esta guía, necesitarás algunos requisitos siguientes:

  • Un servidor Rocky Linux - Este ejemplo utiliza Rocky Linux 8.x con el nombre de host ‘ drupal-server ‘.
  • Un usuario no root con privilegios de administrador sudo/root.
  • Un nombre de dominio apuntado a la dirección IP del servidor Rocky Linux - especialmente cuando estás en el entorno de producción.

Configuración de Repositorios

El LEMP Stack (Nginx, MariaDB/MySQL y PHP-FPM) es un grupo de software de código abierto para alojar aplicaciones web. En Rocky Linux, la mayoría de los paquetes del LEMP Stack están disponibles en repositorios de terceros.

En el primer paso, agregarás y habilitarás dos repositorios en tu sistema. Agregarás el repositorio EPEL que proporciona paquetes adicionales para sistemas operativos basados en RHEL, y el repositorio REMI que proporciona múltiples versiones de paquetes PHP.

Ejecuta el siguiente comando para agregar el repositorio EPEL a tu sistema Rocky Linux. Cuando se te pida confirmación, ingresa y presiona ENTER.

sudo dnf install epel-release

install epel

Ahora ejecuta el comando dnf a continuación para agregar el repositorio REMI para Rocky Linux 8.4.

sudo dnf install dnf-utils http://rpms.remirepo.net/enterprise/remi-release-8.rpm

Ingresa y presiona ENTER para continuar y agregar el repositorio Remi.

install remi

Por último, ejecuta el comando dnf a continuación para verificar la lista de repositorios disponibles en tu sistema. Deberías ver dos repositorios adicionales EPEL y REMI añadidos al sistema Rocky Linux.

sudo dnf repolist

check repositories

Instalación de Dependencias de Paquetes

Drupal es un CMS flexible y poderoso que se puede instalar con cualquier servidor web como Apache2/httpd, Nginx o IIS Microsoft. Además, Drupal admite múltiples RDBMS, incluidos MariaDB/MySQL, PostgreSQL y SQLite. Para otras bases de datos como Microsoft SQL Server y MongoDB, puedes usar ambas a través de módulos comunitarios.

Ahora instalarás las dependencias de paquetes del LEMP Stack para Drupal. Instalarás Nginx a través del repositorio EPEL, instalarás MariaDB desde el appstream y los paquetes PHP 8.1 desde el repositorio REMI.

Primero, restablece y habilita el módulo PHP del repositorio REMI a través del comando dnf a continuación. En este ejemplo, habilitarás un módulo para PHP 8.1, que es compatible con la última versión de Drupal.

sudo dnf module reset php  
sudo dnf module enable php:remi-8.1

Cuando se te pida, ingresa y presiona ENTER para confirmar y habilitar el repositorio REMI de PHP 8.1.

enable php 8.1

A continuación, usa el comando dnf a continuación para instalar los paquetes básicos del LEMP stack.

sudo dnf install nginx mariadb-server php php-fpm php-cli php-devel php-mbstring php-gd php-xml php-curl php-mysqlnd php-pdo php-json php-opcache php-pear php-pecl-apcu php-pecl-crypto

Ingresa y presiona ENTER cuando se te pida confirmación.

install dependencies

Además, ingresa y presiona y cuando se te pida confirmación para agregar la clave GPG para algunos repositorios.

accept gpg keys

Una vez que los paquetes del LEMP Stack estén instalados, puedes usar el siguiente comando systemctl para iniciar los servicios Nginx, MariaDB y PHP-FPM. Además, habilitarás todos esos servicios para que se ejecuten automáticamente al inicio.

sudo systemctl start nginx mariadb php-fpm  
sudo systemctl enable nginx mariadb php-fpm

Ahora verás una salida como la siguiente: el LEMP Stack debería estar funcionando en tu sistema Rocky Linux y todos los servicios del LEMP Stack están habilitados.

start and enable services

Configuración de Firewalld

Firewalld es el firewall predeterminado en sistemas operativos basados en RHEL, incluido Rocky Linux. Se recomienda ejecutar Drupal o cualquier aplicación web con un firewall habilitado, especialmente en el entorno de nivel de producción.

Ahora agregarás ambos puertos HTTP y HTTPS al firewalld para permitir que los clientes accedan a tu instalación de Drupal.

Ejecuta el siguiente comando firewall-cmd a continuación para agregar los servicios HTTP y HTTPS al firewalld.

sudo firewall-cmd --add-service=http --permanent  
sudo firewall-cmd --add-service=https --permanent

Ahora recarga el firewalld para aplicar los nuevos cambios. Luego, verifica la lista de servicios habilitados en el firewalld.

sudo firewall-cmd --reload  
sudo firewall-cmd --list-services

Deberías obtener los servicios HTTP y HTTPS añadidos al firewalld.

setup firewalld

Configuración del Servidor MariaDB

En este paso, comenzarás a configurar la base de datos MariaDB que se utilizará para Drupal. Comenzarás asegurando la implementación de MariaDB, luego crearás una nueva base de datos y usuario para la instalación de Drupal.

Antes de comenzar, ejecuta el siguiente comando para verificar el servicio MariaDB y asegurarte de que el servicio esté en funcionamiento.

sudo systemctl status mariadb

A continuación se muestra la salida cuando el servicio MariaDB está en funcionamiento.

check mariadb

A continuación, ejecuta el siguiente comando para asegurar la implementación del servidor MariaDB. Esta línea de comando ‘ mysql_secure_installation ‘ es proporcionada por los paquetes de MariaDB que te ayudan a asegurar la instalación.

sudo mysql_secure_installation

Ahora se te harán algunas preguntas relacionadas con las configuraciones del servidor MariaDB:

  • La instalación predeterminada de MariaDB viene sin una contraseña, presiona ENTER cuando se te pida la contraseña.
  • Ahora ingresa Y para configurar la contraseña de root de MariaDB. Luego, escribe la nueva contraseña para MariaDB y repite la contraseña.
  • Ingresa Y para eliminar el usuario anónimo de tu instalación de MariaDB.
  • Ingresa Y nuevamente cuando se te pida deshabilitar el inicio de sesión remoto para el usuario root de MariaDB.
  • Ingresa Y para eliminar la base de datos de prueba predeterminada de tu MariaDB.
  • Por último, ingresa Y para recargar los privilegios de la tabla y aplicar los nuevos cambios.

Después de asegurar la implementación de MariaDB, a continuación configurarás una nueva base de datos y usuario para Drupal.

Inicia sesión en el shell de MySQL/MariaDB a través del usuario root con el siguiente comando mysql.

sudo mysql -u root -p

Ejecuta las siguientes consultas para crear una nueva base de datos y usuario para Drupal. En este ejemplo, crearás la base de datos drupaldb con el usuario drupal@localhost. Además, asegúrate de cambiar la contraseña de la base de datos predeterminada.

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

create database

A continuación, ejecuta las siguientes consultas para verificar los privilegios para el usuario de MariaDB drupal@localhost. Verás que el usuario de MariaDB drupal@localhost tiene acceso y privilegios a la base de datos drupaldb.

SHOW GRANTS FOR drupal@localhost;

Ahora ejecuta la consulta ‘ exit ‘ o ‘ quit ‘ para cerrar sesión en el shell de MariaDB.

check database settings

Instalación de la Extensión PECL: uploadprogress

La extensión uploadprogress se utilizará por Drupal para mostrar una barra de progreso. La extensión uploadprogress se puede instalar a través del repositorio PECL (PHP Extension Community Library).

Ahora instalarás la extensión uploadprogress desde el repositorio PECL y la habilitarás en tu instalación de PHP.

Para comenzar, ejecuta el siguiente comando para asegurarte de que el comando ‘ pecl ‘ esté disponible en tu sistema. Si ‘ pecl ‘ está disponible, deberías ver la ruta completa del archivo binario ‘ pecl ‘.

which pecl

Ahora ejecuta el comando ‘ pecl ‘ a continuación para instalar la extensión uploadprogress.

sudo pecl install uploadprogress

Cuando comience la instalación, deberías ver una salida como la siguiente:

install uploadprogress

A continuación, ejecuta el siguiente comando para crear un nuevo archivo de configuración ‘ /etc/php.d/uploadprogress.ini ‘, y habilitar la extensión uploadprogress.

cat <

Por último, reinicia el servicio PHP-FPM para aplicar los nuevos cambios. El PHP-FPM ahora está funcionando con la extensión adicional uploadprogress habilitada.

sudo systemctl restart php-fpm

setup uploadprogress

Configuración de PHP-FPM

Ahora configurarás la configuración básica de PHP-FPM a través del archivo ‘ /etc/php.ini ‘ y configurarás un grupo específico de PHP-FPM para Drupal.

Modifica el archivo ‘ /etc/php.ini ‘ usando el siguiente editor nano.

sudo nano /etc/php.ini

Cambia la configuración predeterminada como a continuación. Además, asegúrate de cambiar la opción date.timezone con tu entorno.

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

Guarda el archivo y sal del editor cuando hayas terminado.

A continuación, copia la configuración predeterminada del grupo PHP-FPM ‘ /etc/php-fpm.d/www.conf ‘ a ‘ /etc/php-fpm.d/drupal.conf ‘. Luego, modifica la nueva configuración del grupo ‘ /etc/php-fpm.d/drupal.conf ‘ usando el editor nano.

sudo cp /etc/php-fpm.d/www.conf /etc/php-fpm.d/drupal.conf  
sudo nano /etc/php-fpm.d/drupal.conf

Cambia el nombre predeterminado a ‘[drupal] ‘ y el usuario y grupo predeterminados a ‘ nginx ‘. Además, asegúrate de cambiar el archivo sock de listado para el grupo PHP-FPM ‘drupal’ a ‘/run/php-fpm/drupal.sock’.

[drupal]  
user = nginx  
group = nginx  
listen.owner = nginx  
listen.group = nginx  
listen = /run/php-fpm/drupal.sock

Guarda el archivo y sal del editor cuando hayas terminado.

Ahora reinicia el servicio PHP-FPM a través del comando systemctl a continuación. Luego, verifica el estado del servicio PHP-FPM.

sudo systemctl restart php-fpm  
sudo systemctl status php-fpm

Deberías recibir una salida como la siguiente: el servicio PHP-FPM está en funcionamiento.

check php-fpm

A continuación, ejecuta el siguiente comando para crear un nuevo archivo PHPINFO ‘ /usr/share/nginx/html/info.php ‘.

cat <  
EOF

Por último, abre el navegador web y visita la dirección IP del servidor seguida de la ruta ‘/info.php’ (es decir: http://192.168.5.100/info.php). Deberías obtener información detallada sobre PHP

phpinfo

Descargando el Código Fuente de Drupal

En este punto, has terminado la configuración del servidor de base de datos MariaDB y PHP-FPM para la instalación de Drupal. A continuación, descargarás la última versión de Drupal en tu servidor.

Primero, mueve el directorio de trabajo actual a ‘/tmp’ y descarga la última versión de Drupal a través del comando wget como a continuación. Deberías ver el archivo ‘ drupal.tar.gz ‘ después de que finalice el proceso de descarga.

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

A continuación, extrae el archivo ‘ drupal.tar.gz ‘ usando el comando tar y mueve el directorio extraído a ‘ /var/www/drupal ‘, que se utilizará como la instalación para Drupal.

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

Por último, ejecuta el siguiente comando para cambiar la propiedad y los permisos del directorio de instalación de Drupal ‘ /var/www/drupal ‘. La propiedad debe ser el usuario y grupo ‘ nginx ‘, para que el servidor web Nginx pueda leer y acceder al código fuente de Drupal. Y para los permisos, debe ser ‘ 755 ‘.

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

Configuración de SELinux

Después de descargar el código fuente de Drupal, a continuación configurarás el SELinux para Drupal. Descargarás la herramienta de gestión de SELinux en tu servidor y configurarás el etiquetado para el código fuente de Drupal y reglas adicionales para Nginx.

Ejecuta el comando dnf a continuación para instalar el paquete ‘ policycoreutils-python-utils ‘ para gestionar SELinux en tu sistema.

sudo dnf install policycoreutils-python-utils

Cuando se te pida, ingresa y presiona ENTER para confirmar la instalación.

install selinux management

A continuación, ejecuta el siguiente comando para configurar el etiquetado para el código fuente de Drupal.

sudo semanage fcontext -a -t httpd_sys_rw_content_t "/var/www/drupal(/.*)?"  
sudo semanage fcontext -a -t httpd_sys_rw_content_t '/var/www/drupal/sites/default/settings.php'  
sudo semanage fcontext -a -t httpd_sys_rw_content_t '/var/www/drupal/sites/default/files'  
  
sudo restorecon -Rv /var/www/drupal

Ejecuta el siguiente comando para permitir que el servidor web Nginx acceda a ciertos servicios. Para la instalación de Drupal, deberías permitir que Nginx acceda a los servicios de red y correo.

sudo setsebool -P httpd_can_sendmail on  
sudo setsebool -P httpd_can_network_connect on

Ahora que has descargado el código fuente de Drupal y configurado la propiedad correcta al usuario y grupo ‘ nginx ‘, configurado los permisos correctos a 755, y configurado el SELinux para Drupal.

Configuración del Servidor Web Nginx

Ahora que has terminado algunas configuraciones del servidor de base de datos MariaDB y PHP-FPM. Además, has descargado el código fuente de Drupal y configurado el SELinux. En el siguiente paso, configurarás bloques de servidor Nginx para tu dominio.

Antes de comenzar, asegúrate de que el nombre de dominio esté apuntado a la dirección IP de tu servidor. Además, asegúrate de que has generado SSL Letsencrypt.

Crea una nueva configuración de bloques de servidor Nginx ‘ /etc/nginx/conf.d/drupal.conf’ usando el siguiente editor nano.

sudo nano /etc/nginx/conf.d/drupal.conf

Agrega la siguiente configuración al archivo. Y asegúrate de cambiar el nombre de dominio y la ruta de los certificados SSL. Este ejemplo utiliza el dominio http://drupal.howtoforge.local como el dominio principal para la instalación de Drupal.

server {  
    listen 80;  
    server_name drupal.howtoforge.local;  
    return 301 https://$host$request_uri;  
}  
  
server {  
    listen 443 http2 ssl;  
    server_name drupal.howtoforge.local;  
  
    root /var/www/drupal;  
  
    ssl_certificate      /etc/letsencrypt/live/drupal.howtoforge.local/fullchain.pem;  
    ssl_certificate_key  /etc/letsencrypt/live/drupal.howtoforge.local/privkey.pem;  
  
    access_log /var/log/nginx/drupal.howtoforge.local.access.log;  
    error_log /var/log/nginx/drupal.howtoforge.local.error.log;  
  
    location = /favicon.ico {  
        log_not_found off;  
        access_log off;  
    }  
  
    location = /robots.txt {  
        allow all;  
        log_not_found off;  
        access_log off;  
    }  
  
    location ~ \\..*/.*\.php$ {  
        return 403;  
    }  
  
    location ~ ^/sites/.*/private/ {  
        return 403;  
    }  
  
    # Bloquear el acceso a scripts en el directorio de archivos del sitio  
    location ~ ^/sites/[^/]+/files/.*\.php$ {  
        deny all;  
    }  
    location ~ (^|/)\. {  
        return 403;  
    }  
  
    location / {  
        try_files $uri /index.php?$query_string;  
    }  
  
    location @rewrite {  
        rewrite ^/(.*)$ /index.php?q=$1;  
    }  
    location ~ /vendor/.*\.php$ {  
        deny all;  
        return 404;  
    }  
  
  
    location ~ '\.php$|^/update.php' {  
        fastcgi_split_path_info ^(.+?\.php)(|/.*)$;  
        include fastcgi_params;  
        # Bloquear ataques httpoxy. Ver https://httpoxy.org/.  
        fastcgi_param HTTP_PROXY "";  
        fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;  
        fastcgi_param PATH_INFO $fastcgi_path_info;  
        fastcgi_param QUERY_STRING $query_string;  
        fastcgi_intercept_errors on;  
        fastcgi_pass unix:/run/php-fpm/drupal.sock;  
    }  
    location ~ ^/sites/.*/files/styles/ { # Para Drupal >= 7  
        try_files $uri @rewrite;  
    }  
  
    # Manejar archivos privados a través de Drupal. La ruta de archivos privados puede venir  
    # con un prefijo de idioma.  
    location ~ ^(/[a-z\-]+)?/system/files/ { # Para Drupal >= 7  
        try_files $uri /index.php?$query_string;  
    }  
  
    location ~* \.(js|css|png|jpg|jpeg|gif|ico|svg)$ {  
        try_files $uri @rewrite;  
        expires max;  
        log_not_found off;  
    }  
}

Guarda el archivo y sal del editor cuando hayas terminado.

Ahora, ejecuta el siguiente comando para verificar la configuración de Nginx. Deberías obtener el mensaje de salida como ‘ test successful - syntax ok’, lo que significa que tienes configuraciones de Nginx correctas y sin errores.

sudo nginx -t

A continuación, ejecuta el siguiente comando systemctl para reiniciar el servicio Nginx y aplicar la nueva configuración del bloque de servidor.

sudo systemctl restart nginx

setup nginx drupal

El servicio Nginx ahora debería ejecutarse con la nueva configuración del bloque de servidor ‘/etc/nginx/conf.d/drupal.conf’. Ejecuta el siguiente comando para verificar el servicio Nginx y asegurarte de que el servicio esté en funcionamiento.

sudo systemctl status nginx

Deberías obtener una salida como la siguiente: el servicio Nginx está en funcionamiento.

check nginx

Ahora deberías poder acceder a tu instalación de Drupal a través de tu dominio.

Comenzando la Instalación de Drupal

En este punto, has terminado la configuración de las dependencias de paquetes para Drupal. Ahora puedes acceder a tu Drupal a través de tu dominio.

En este paso, comenzarás la instalación de Drupal, también configurarás detalles sobre tu Drupal y establecerás el usuario administrador para Drupal.

Abre tu navegador web y visita el nombre de dominio de tu instalación de Drupal (es decir: https://drupal.howtoforge.local/). Deberías obtener la página de instalación de Drupal.

Selecciona el idioma para tu instalación de Drupal o puedes usar el predeterminado ‘ English ‘ y haz clic en el botón ‘ Save and continue ‘.

choose language

Selecciona el perfil de instalación para tu instalación y haz clic en ‘ Save and continue ‘. Este ejemplo utiliza el perfil ‘ Standard ‘.

installation profile

Ahora configura la base de datos para tu instalación de Drupal. Ingresa los detalles de la base de datos MariaDB y el usuario que ya posees y creaste anteriormente.

Haz clic en Save and continue nuevamente.

database details

Y ahora comenzará la instalación de Drupal.

installation drupal

Ingresa información detallada sobre tu instalación de Drupal. Además, asegúrate de usar tu nombre de usuario para el administrador de Drupal y usar una contraseña fuerte.

Haz clic en Save and continue.

drupal site settings

Cuando la instalación de Drupal haya finalizado, verás la siguiente página. Puedes ver mensajes como ‘ ¡Felicidades, instalaste Drupal! ‘.

installation success

Finalizando la Instalación de Drupal

Ejecuta el siguiente comando para configurar el etiquetado para el archivo de configuración de Drupal y el directorio.

sudo restorecon -v /var/www/drupal/sites/default/settings.php  
sudo restorecon -Rv /var/www/drupal/sites/default/files

A continuación, ejecuta el siguiente comando para cambiar los permisos del archivo ‘ /var/www/drupal/sites/default/settings.php ‘ y hacerlo escribible. Luego, edita el archivo usando el editor nano.

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

Descomenta la línea del script ‘ trusted_host_patterns ‘ y agrega tu nombre de dominio. Esto habilitará el trusted_host en tu instalación de Drupal.

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

Guarda el archivo y sal del editor cuando hayas terminado.

Por último, vuelve a tu navegador web en tu sitio de Drupal y visita el informe de estado en la siguiente URL. Reemplaza el nombre de dominio principal con tu dominio - o puedes acceder a él a través del menú Administración > Informes.

https://drupal.howtoforge.local/admin/reports/status

En el siguiente informe - puedes ver que 25 requisitos del sistema para la instalación de Drupal están verificados. Esto significa que tu instalación de Drupal es correcta y no tiene errores.

drupal status reports

Conclusión

En esta guía, aprendiste cómo instalar la última versión de Drupal v9 en un servidor Rocky Linux. También aprendiste la instalación del LAMP Stack (Linux, Apache2/httpd, MySQL/MariaDB y PHP) y la configuración básica para alojar Drupal. Además, has aprendido cómo instalar extensiones de PHP desde el repositorio PECL (PHP Extension Community Library).

Con Drupal funcionando y asegurado con certificados SSL y habilitada la configuración ‘trusted_hosts’, ahora puedes extender la implementación de Drupal instalando nuevos temas o agregando algunos complementos para tu instalación de Drupal.

Share: X/Twitter LinkedIn

Recibe nuevas publicaciones en tu bandeja de entrada.

No spam. Cancela la suscripción en cualquier momento.