Cómo instalar Drupal con Apache y Let’s Encrypt SSL en Debian 11

Drupal es un sistema de gestión de contenidos gratuito y de código abierto basado en la pila LAMP. Drupal tiene grandes características estándar que te permiten crear potentes sitios web y blogs. Viene con un montón de temas, plugins y widgets que te ayudan a crear un sitio web sin necesidad de tener conocimientos de programación. Ofrece muchas funciones, como soporte multisitio, soporte multilingüe, sistema de comentarios, fuente RSS, registro de usuarios y muchas más.

En este post, te mostraremos cómo instalar Drupal CMS con Apache y Let’s Encrypt SSL en Debian 11.

Requisitos previos

  • Un servidor con Debian 11.
  • Un nombre de dominio válido apuntado con la IP de tu servidor.
  • Una contraseña de root configurada en el servidor.

Instalar la pila LAMP

Drupal se basa en la pila LAMP. Así que la pila LAMP debe estar instalada en tu servidor. Si no está instalada, puedes instalarla ejecutando el siguiente comando:

apt-get install apache2 mariadb-server mariadb-client php libapache2-mod-php 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 -y

Una vez instalada la pila LAMP, edita el archivo php.ini y cambia algunos ajustes predeterminados:

nano /etc/php/7.4/apache2/php.ini

Cambia las siguientes líneas:

memory_limit = 256M
upload_max_filesize = 32M
max_execution_time = 300
date.timezone = Asia/Kolkata

Guarda y cierra el archivo cuando hayas terminado.

Crear una base de datos Drupal

Drupal utiliza MariaDB como base de datos. Así que tendrás que crear una base de datos y un usuario para Drupal.

Primero, inicia sesión en MariaDB con el siguiente comando:

mysql

Una vez que hayas iniciado sesión, crea una base de datos y un usuario con el siguiente comando:

MariaDB [(none)]> CREATE DATABASE drupaldb;
MariaDB [(none)]> CREATE USER 'drupaluser'@'localhost' IDENTIFIED BY "securepassword";

A continuación, concede todos los privilegios a la base de datos de Drupal utilizando el siguiente comando:

MariaDB [(none)]> GRANT ALL ON drupaldb.* TO 'drupaluser'@'localhost' IDENTIFIED BY "securepassword";

A continuación, vacía los privilegios y sal de MariaDB con el siguiente comando:

MariaDB [(none)]> FLUSH PRIVILEGES;
MariaDB [(none)]> EXIT;

Descargar Drupal

En primer lugar, ve al sitio web de Drupal elige la última versión de Drupal y descárgala con el siguiente comando:

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

Una vez descargado Drupal, extrae el archivo descargado con el siguiente comando:

tar -xvf drupal.tar.gz

A continuación, mueve el directorio extraído al directorio raíz por defecto de Apache:

mv drupal-* /var/www/html/drupal

A continuación, cambia la propiedad y el permiso del directorio Drupal con el siguiente comando:

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

Crear un host virtual Apache para Drupal

A continuación, tendrás que crear un archivo de configuración del host virtual de Apache para alojar Drupal. Puedes crearlo utilizando el siguiente comando:

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

Añade las siguientes líneas:

<VirtualHost *:80>
     ServerAdmin [email protected]
     DocumentRoot /var/www/html/drupal/
     ServerName  drupal.example.com  

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

     <Directory /var/www/html/drupal/>
            Options FollowSymlinks
            AllowOverride All
            Require all granted
     </Directory>

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

Guarda y cierra el archivo y, a continuación, habilita el host virtual de Drupal y el módulo de reescritura de Apache con el siguiente comando:

a2ensite drupal.conf
a2enmod rewrite

A continuación, reinicia el servicio Apache para aplicar los cambios:

systemctl restart apache2

Para comprobar el estado del Apache, ejecuta el siguiente comando:

systemctl status apache2

Deberías obtener la siguiente salida:

? apache2.service - The Apache HTTP Server
     Loaded: loaded (/lib/systemd/system/apache2.service; enabled; vendor preset: enabled)
     Active: active (running) since Sat 2021-09-18 14:59:40 UTC; 5s ago
       Docs: https://httpd.apache.org/docs/2.4/
    Process: 19698 ExecStart=/usr/sbin/apachectl start (code=exited, status=0/SUCCESS)
   Main PID: 19703 (apache2)
      Tasks: 6 (limit: 2341)
     Memory: 15.3M
        CPU: 78ms
     CGroup: /system.slice/apache2.service
             ??19703 /usr/sbin/apache2 -k start
             ??19704 /usr/sbin/apache2 -k start
             ??19705 /usr/sbin/apache2 -k start
             ??19706 /usr/sbin/apache2 -k start
             ??19707 /usr/sbin/apache2 -k start
             ??19708 /usr/sbin/apache2 -k start

En este punto, el servidor web Apache está configurado para servir a Drupal. Ahora puedes pasar al siguiente paso.

Accede al sitio web de Drupal

Ahora, abre tu navegador web y accede a Drupal utilizando la URL http://drupal.example.com. Se te redirigirá a la siguiente página:

Elige lengua

Elige el idioma inglés y pulsa el botón Guardar y Continuar, deberías ver la siguiente imagen:

Perfil de instalación

Selecciona un Perfil de Instalación y pulsa el botón Guardar y Continuar. Deberías ver la siguiente página:

Configuración de la base de datos

En la página Configuración de la base de datos, proporciona todos los detalles necesarios de la base de datos, como el nombre de la base de datos, el nombre de usuario y la contraseña de la base de datos, el host de la base de datos y, a continuación, haz clic en el botón Guardar y continuar:

Información del sitio

Entornos regionales

En la página de Configuración del Sitio de Drupal, proporciona el nombre de tu sitio, el nombre de usuario y la contraseña del administrador, luego haz clic en el botón Guardar y Continuar para empezar a instalar Drupal. Una vez instalado Drupal, deberías ver el panel de control de Drupal en la siguiente imagen:

Iniciar sesión en Drupal

Habilitar la compatibilidad con Let’s Encrypt SSL en el sitio web de Drupal

Siempre es una buena idea proteger tu sitio web con Let’s Encrypt SSL. En primer lugar, necesitarás instalar el cliente Certbot para instalar y gestionar el SSL. Por defecto, el paquete Certbot está incluido en el repositorio por defecto de Debian 11, así que puedes instalarlo con el siguiente comando:

apt-get install python3-certbot-apache -y

Una vez instalado Certbot, ejecuta el siguiente comando para proteger tu sitio web con Let’s Encrypt SSL:

certbot --apache -d drupal.example.com

Se te pedirá que proporciones tu correo electrónico y aceptes las condiciones del servicio, como se muestra a continuación:

Saving debug log to /var/log/letsencrypt/letsencrypt.log
Plugins selected: Authenticator standalone, Installer None
Enter email address (used for urgent renewal and security notices) (Enter 'c' to
cancel): [email protected]

- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
Please read the Terms of Service at
https://letsencrypt.org/documents/LE-SA-v1.2-November-15-2017.pdf. You must
agree in order to register with the ACME server at
https://acme-v02.api.letsencrypt.org/directory
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
(A)gree/(C)ancel: A

- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
Would you be willing to share your email address with the Electronic Frontier
Foundation, a founding partner of the Let's Encrypt project and the non-profit
organization that develops Certbot? We'd like to send you email about our work
encrypting the web, EFF news, campaigns, and ways to support digital freedom.
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
(Y)es/(N)o: Y
Plugins selected: Authenticator apache, Installer apache
Obtaining a new certificate
Performing the following challenges:
http-01 challenge for drupal.example.com
Enabled Apache rewrite module
Waiting for verification...
Cleaning up challenges
Created an SSL vhost at /etc/apache2/sites-available/drupal-le-ssl.conf
Enabled Apache socache_shmcb module
Enabled Apache ssl module
Deploying Certificate to VirtualHost /etc/apache2/sites-available/drupal-le-ssl.conf
Enabling available site: /etc/apache2/sites-available/drupal-le-ssl.conf

A continuación, selecciona si deseas o no redirigir el tráfico HTTP a HTTPS como se muestra a continuación:

Please choose whether or not to redirect HTTP traffic to HTTPS, removing HTTP access.
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
1: No redirect - Make no further changes to the webserver configuration.
2: Redirect - Make all requests redirect to secure HTTPS access. Choose this for
new sites, or if you're confident your site works on HTTPS. You can undo this
change by editing your web server's configuration.
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
Select the appropriate number [1-2] then [enter] (press 'c' to cancel): 2

Escribe 2 y pulsa Intro para instalar Let’s Encrypt SSL en tu sitio web:

Enabled Apache rewrite module
Redirecting vhost in /etc/apache2/sites-enabled/drupal.conf to ssl vhost in /etc/apache2/sites-available/drupal-le-ssl.conf

- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
Congratulations! You have successfully enabled https://drupal.example.com

You should test your configuration at:
https://www.ssllabs.com/ssltest/analyze.html?d=drupal.example.com
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -

IMPORTANT NOTES:
 - Congratulations! Your certificate and chain have been saved at:
   /etc/letsencrypt/live/drupal.example.com/fullchain.pem
   Your key file has been saved at:
   /etc/letsencrypt/live/drupal.example.com/privkey.pem
   Your cert will expire on 2021-04-20. To obtain a new or tweaked
   version of this certificate in the future, simply run certbot again
   with the "certonly" option. To non-interactively renew *all* of
   your certificates, run "certbot renew"
 - If you like Certbot, please consider supporting our work by:

   Donating to ISRG / Let's Encrypt:   https://letsencrypt.org/donate
   Donating to EFF:                    https://eff.org/donate-le

Conclusión

Eso es todo por ahora. Has instalado correctamente Drupal con Let’s Encrypt SSL en Debian 11. Ya puedes empezar a crear tu propio blog o sitio web sin necesidad de tener conocimientos de programación. No dudes en preguntarme si tienes alguna duda.

También te podría gustar...