Instalación y configuración de Drupal
Drupal es un potente sistema de gestión de contenido de código abierto utilizado para construir sitios web y aplicaciones complejas. Conocido por su flexibilidad, extensibilidad y sólidas características de seguridad, Drupal impulsa millones de sitios web en todo el mundo. Esta guía completa cubre el proceso de instalación completo, incluyendo la configuración de la pila LAMP/LEMP, la instalación de Drupal con Composer, la configuración de la base de datos, la habilitación de módulos esenciales e implementación de técnicas de endurecimiento de seguridad.
Tabla de contenidos
- Requisitos previos
- Requisitos del sistema
- Instalación del servidor web
- Configuración de PHP y extensiones
- Configuración de la base de datos
- Instalación de Composer
- Instalación de Drupal
- Configuración inicial
- Instalación de módulos
- Endurecimiento de seguridad
- Optimización del rendimiento
- Copia de seguridad y actualizaciones
- Conclusión
Requisitos previos
Asegúrese de tener lo siguiente antes de comenzar:
- Acceso root o sudo en Ubuntu 20.04 LTS o posterior
- Un nombre de dominio válido configurado en DNS
- Mínimo 2GB de RAM (4GB recomendado)
- 20GB de espacio en disco disponible
- Competencia básica en la línea de comandos de Linux
Actualice los paquetes del sistema:
sudo apt update && sudo apt upgrade -y
Requisitos del sistema
Drupal requiere componentes de software específicos para funcionar correctamente. Verifique la compatibilidad con las especificaciones de su servidor.
Verifique la versión actual del sistema operativo:
lsb_release -a
uname -a
Instale wget y curl para descargar recursos:
sudo apt install -y wget curl git
Instalación del servidor web
Instale Apache o Nginx. Apache se recomienda para principiantes en Drupal debido a la configuración más simple.
Instalación de Apache
Instale Apache y los módulos requeridos:
sudo apt install -y apache2 apache2-utils
Habilite los módulos necesarios de Apache:
sudo a2enmod rewrite
sudo a2enmod headers
sudo a2enmod ssl
sudo a2enmod proxy_fcgi
sudo a2enmod setenvif
Inicie y habilite Apache:
sudo systemctl start apache2
sudo systemctl enable apache2
Instalación de Nginx
Alternativamente, instale Nginx para mejor rendimiento:
sudo apt install -y nginx
Inicie y habilite Nginx:
sudo systemctl start nginx
sudo systemctl enable nginx
Configuración de PHP y extensiones
Instale PHP 8.1 o posterior con las extensiones requeridas para Drupal:
sudo apt install -y php-fpm php-cli php-common php-mysql php-xml php-gd php-curl php-pdo php-mbstring php-zip php-bcmath php-json php-xmlrpc php-opcache
Verifique la versión de PHP:
php --version
Verifique las extensiones instaladas:
php -m
Configure PHP para uso en producción:
sudo nano /etc/php/8.1/fpm/php.ini
Actualice la configuración crítica de PHP:
max_execution_time = 300
memory_limit = 256M
upload_max_filesize = 100M
post_max_size = 100M
max_input_vars = 5000
Reinicie PHP-FPM:
sudo systemctl restart php8.1-fpm
Configuración de la base de datos
Instale el servidor de base de datos MariaDB:
sudo apt install -y mariadb-server
Inicie y asegure MariaDB:
sudo systemctl start mariadb
sudo systemctl enable mariadb
sudo mysql_secure_installation
Cree la base de datos y usuario de Drupal:
sudo mysql -u root -p << EOF
CREATE DATABASE drupal;
CREATE USER 'drupal'@'localhost' IDENTIFIED BY 'SecurePassword123!';
GRANT ALL PRIVILEGES ON drupal.* TO 'drupal'@'localhost';
FLUSH PRIVILEGES;
EXIT;
EOF
Pruebe el acceso a la base de datos:
mysql -u drupal -p -h localhost drupal
show tables;
exit;
Instalación de Composer
Composer es requerido para gestionar Drupal y sus dependencias:
sudo apt install -y composer
Verifique la instalación de Composer:
composer --version
Instalación de Drupal
Cree el directorio raíz web:
sudo mkdir -p /var/www/drupal
sudo chown -R www-data:www-data /var/www/drupal
cd /var/www/drupal
Descargue Drupal con Composer:
composer create-project drupal/recommended-project .
Instale paquetes adicionales útiles:
cd /var/www/drupal
composer require drupal/admin_toolbar drupal/pathauto drupal/redirect drupal/metatag drupal/yoast_seo
Establezca los permisos adecuados:
sudo chown -R www-data:www-data /var/www/drupal
sudo find /var/www/drupal -type f -exec chmod 644 {} \;
sudo find /var/www/drupal -type d -exec chmod 755 {} \;
Cree settings.php desde la plantilla:
sudo cp /var/www/drupal/web/sites/default/default.settings.php /var/www/drupal/web/sites/default/settings.php
sudo chmod 644 /var/www/drupal/web/sites/default/settings.php
sudo chown www-data:www-data /var/www/drupal/web/sites/default/settings.php
Cree el directorio de archivos:
sudo mkdir -p /var/www/drupal/web/sites/default/files
sudo chown -R www-data:www-data /var/www/drupal/web/sites/default/files
sudo chmod -R 755 /var/www/drupal/web/sites/default/files
Configuración inicial
Configuración de Apache
Cree un host virtual de Apache:
sudo nano /etc/apache2/sites-available/drupal.conf
Agregue la configuración:
<VirtualHost *:80>
ServerName example.com
ServerAlias www.example.com
DocumentRoot /var/www/drupal/web
<Directory /var/www/drupal/web>
AllowOverride All
Require all granted
<IfModule mod_rewrite.c>
RewriteEngine On
RewriteBase /
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^ index.php [QSA,L]
</IfModule>
</Directory>
ErrorLog ${APACHE_LOG_DIR}/drupal_error.log
CustomLog ${APACHE_LOG_DIR}/drupal_access.log combined
</VirtualHost>
Habilite el sitio:
sudo a2ensite drupal.conf
sudo a2dissite 000-default.conf
sudo apache2ctl configtest
sudo systemctl reload apache2
Configuración de Nginx
Cree la configuración de Nginx:
sudo nano /etc/nginx/sites-available/drupal.conf
Agregue la configuración:
server {
listen 80;
server_name example.com www.example.com;
root /var/www/drupal/web;
index index.php;
location / {
try_files $uri /index.php?$query_string;
}
location ~ \.php$ {
fastcgi_pass unix:/var/run/php/php8.1-fpm.sock;
fastcgi_index index.php;
fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
include fastcgi_params;
}
location ~ /\. {
deny all;
}
location ~ ~$ {
deny all;
}
}
Habilite el sitio:
sudo ln -s /etc/nginx/sites-available/drupal.conf /etc/nginx/sites-enabled/
sudo nginx -t
sudo systemctl reload nginx
Instalación de módulos
Acceda al asistente de instalación de Drupal:
Visite https://example.com y siga el asistente de instalación. Configure los parámetros de la base de datos cuando se le solicite:
Tipo de base de datos: MySQL, MariaDB, o equivalente
Nombre de la base de datos: drupal
Nombre de usuario de la base de datos: drupal
Contraseña de la base de datos: SecurePassword123!
Host de la base de datos: localhost
Complete la instalación para crear una cuenta de administrador.
Instale módulos esenciales a través de la interfaz de Drupal o línea de comandos:
cd /var/www/drupal
drush module:install admin_toolbar pathauto redirect metatag
Verifique los módulos instalados:
drush module:list
Endurecimiento de seguridad
Implemente las mejores prácticas de seguridad:
Actualice settings.php con la configuración de seguridad:
sudo nano /var/www/drupal/web/sites/default/settings.php
Agregue al final de settings.php:
$settings['update_fetch_url'] = FALSE;
$settings['allow_authorize_operations'] = FALSE;
$settings['file_chmod_directory'] = 0755;
$settings['file_chmod_file'] = 0644;
Establezca los permisos de archivo adecuados:
sudo chmod 444 /var/www/drupal/web/sites/default/settings.php
sudo chmod 444 /var/www/drupal/web/sites/default/settings.local.php
sudo chmod 555 /var/www/drupal/web/sites/default
Configure robots.txt:
sudo nano /var/www/drupal/web/robots.txt
Deshabilite los módulos no utilizados:
cd /var/www/drupal
drush module:uninstall comment rdf
Habilite y configure el módulo de seguridad:
cd /var/www/drupal
drush module:install security_review
Configure HTTPS y certificado SSL:
sudo apt install -y certbot python3-certbot-apache
sudo certbot certonly --apache -d example.com -d www.example.com
Optimización del rendimiento
Habilite el almacenamiento en caché:
cd /var/www/drupal
drush config:set system.performance cache.page.max_age 3600
drush config:set system.performance cache.page.use_internal 1
Habilite el almacenamiento en caché de Twig:
sudo nano /var/www/drupal/web/sites/default/settings.php
Agregue la configuración:
$settings['twig_cache'] = TRUE;
$settings['twig_auto_reload'] = FALSE;
Configure Drush para un mejor rendimiento:
cd /var/www/drupal
drush core:cron
Configure el trabajo cron:
sudo crontab -e
Agregue:
*/15 * * * * cd /var/www/drupal && drush core:cron >> /var/log/drupal_cron.log 2>&1
Copia de seguridad y actualizaciones
Cree un script de copia de seguridad:
sudo nano /usr/local/bin/drupal-backup.sh
Agregue:
#!/bin/bash
BACKUP_DIR="/backups/drupal"
DRUPAL_DIR="/var/www/drupal"
DATE=$(date +%Y%m%d_%H%M%S)
mkdir -p $BACKUP_DIR
# Copia de seguridad de la base de datos
mysqldump -u drupal -p'SecurePassword123!' drupal | gzip > "$BACKUP_DIR/drupal-db-$DATE.sql.gz"
# Copia de seguridad de archivos
tar -czf "$BACKUP_DIR/drupal-files-$DATE.tar.gz" "$DRUPAL_DIR"
# Mantener solo 30 días de copias de seguridad
find $BACKUP_DIR -type f -mtime +30 -delete
echo "Backup completed at $DATE"
Haga ejecutable:
sudo chmod +x /usr/local/bin/drupal-backup.sh
Programe las copias de seguridad:
sudo crontab -e
Agregue:
0 2 * * * /usr/local/bin/drupal-backup.sh >> /var/log/drupal-backup.log 2>&1
Actualice Drupal:
cd /var/www/drupal
composer update
drush updatedb
drush cache:rebuild
Conclusión
Su instalación de Drupal ahora está completamente configurada con un servidor web robusto, backend de base de datos y medidas de endurecimiento de seguridad implementadas. Las copias de seguridad periódicas, las actualizaciones de seguridad y la optimización del rendimiento garantizan un sistema de gestión de contenido estable, seguro y rápido. Monitoree los recursos del sistema, mantenga los módulos actualizados y siga las directrices de seguridad de Drupal para mantener la integridad y el rendimiento de su sitio.


