Drupal es un sistema de administración de contenido de código abierto que le permite crear, administrar y mantener el contenido de su sitio web sin necesidad de conocimientos de codificación.
Hay muchas soluciones diferentes de administración de contenido para elegir, pero no todas son adecuadas para cada proyecto. Si desea construir o reconstruir su sitio web con algo flexible y poderoso, no busque más allá de Drupal.
Si aún no tiene alojamiento web para desarrollar un sitio web de Drupal, le recomendamos que lo instale en su máquina Debian local o VPS.
Aquí instalaremos Drupal con Nginx y Let's Encrypt SSL en Debian 11.
Requisitos
Instalar la pila LEMP
Siga los enlaces a continuación para instalar la pila LEMP en su sistema Debian para la instalación de Drupal.
Instalar EMP (Nginx, MariaDB y PHP) en Debian 11
Instalar Extensiones PHP para Drupal
Usa el apt
comando para instalar extensiones de PHP para la instalación de Drupal.
sudo apt update sudo apt install -y php-mysql php-gd php-dom php-curl php-imagick php-zip php-xml php-mbstring php-json php-pdo php-cli php-apcu sudo apt install --no-install-recommends -y php-uploadprogress
Configurar el host virtual de Nginx para Drupal
Comenzaremos con la creación de un host virtual para una instalación de Drupal. Puede encontrar todos los archivos de configuración del host virtual de Nginx en /etc/nginx/conf.d
directorio.
Por lo general, un archivo de host virtual contiene un nombre de dominio, número de puerto, raíz del documento, ubicación de registro, CGI rápido, etc.
Estoy asumiendo lo siguiente,
Nombre de dominio:itzgeek.net, www.itzgeek.net
Número de puerto:80
Raíz del documento:/usr/share/nginx/www.itzgeek.net/html
Registros:/usr/share/nginx/www.itzgeek.net/logs
Primero, cree un archivo de configuración de host virtual.
sudo nano /etc/nginx/conf.d/www.itzgeek.net.conf
Luego, coloque el siguiente contenido en el archivo de configuración anterior. Deberá cambiar server_name
según su requerimiento.
server { server_name itzgeek.net www.itzgeek.net; root /usr/share/nginx/www.itzgeek.net/html; index index.php index.html; access_log /usr/share/nginx/www.itzgeek.net/logs/access.log; error_log /usr/share/nginx/www.itzgeek.net/logs/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 ~* \.(txt|log)$ { deny all; } location ~ \..*/.*\.php$ { return 403; } location ~ ^/sites/.*/private/ { return 403; } # Block access to scripts in site files directory location ~ ^/sites/[^/]+/files/.*\.php$ { deny all; } # Allow "Well-Known URIs" as per RFC 5785 location ~* ^/.well-known/ { allow all; } # 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 /index.php?$query_string; # For Drupal >= 7 } location @rewrite { rewrite ^ /index.php; # For Drupal >= 7 } # Don't allow direct access to PHP files in the vendor directory. location ~ /vendor/.*\.php$ { deny all; return 404; } # Protect files and directories from prying eyes. location ~* \.(engine|inc|install|make|module|profile|po|sh|.*sql|theme|twig|tpl(\.php)?|xtmpl|yml)(~|\.sw[op]|\.bak|\.orig|\.save)?$|^(\.(?!well-known).*|Entries.*|Repository|Root|Tag|Template|composer\.(json|lock)|web\.config)$|^#.*#$|\.php(~|\.sw[op]|\.bak|\.orig|\.save)$ { deny all; return 404; } location ~ '\.php$|^/update.php' { fastcgi_split_path_info ^(.+?\.php)(|/.*)$; try_files $fastcgi_script_name =404; include fastcgi_params; 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:/var/run/php/php7.4-fpm.sock; } location ~* \.(js|css|png|jpg|jpeg|gif|ico|svg)$ { try_files $uri @rewrite; expires max; log_not_found off; } # Fighting with Styles? This little gem is amazing. location ~ ^/sites/.*/files/styles/ { # For Drupal >= 7 try_files $uri @rewrite; } # Handle private files through Drupal. Private file's path can come # with a language prefix. location ~ ^(/[a-z\-]+)?/system/files/ { # For Drupal >= 7 try_files $uri /index.php?$query_string; } # Enforce clean URLs # Removes index.php from urls like www.example.com/index.php/my-page --> www.example.com/my-page # Could be done with 301 for permanent or other redirect codes. if ($request_uri ~* "^(.*/)index\.php/(.*)") { return 307 $1$2; } }
Cree directorios para colocar archivos de Drupal y registros de Nginx.
sudo mkdir -p /usr/share/nginx/www.itzgeek.net/html/ sudo mkdir -p /usr/share/nginx/www.itzgeek.net/logs/
Verifique el archivo de configuración de Nginx con el siguiente comando.
sudo nginx -t
Si obtiene lo siguiente, significa que la configuración del host virtual es correcta.
nginx: the configuration file /etc/nginx/nginx.conf syntax is ok nginx: configuration file /etc/nginx/nginx.conf test is successful
Reinicie los servicios Nginx y PHP-FPM.
sudo systemctl reload nginx php7.4-fpm
Instalar el certificado SSL de Let's Encrypt
Crear registro DNS
Vaya a su registrador de dominios y cree un registro A y CNAME (opcional si no desea utilizar el subdominio www) para su dominio.
- Nombre de dominio que no es www (Ej. itzgeek.net)>> A punto de registro a la IP de su servidor
- www nombre de dominio (por ejemplo, www.itzgeek.net)>> CNAME punto de registro a itzgeek.net
Para esta demostración, crearé dos registros para que mi sitio web de Drupal sea accesible en www.itzgeek.net.
Instalar cliente Certbot
El cliente de Certbot, que nos ayuda a generar e instalar el certificado SSL de Let's Encrypt en Nginx, ahora está disponible como paquete instantáneo para Debian. Entonces, primero, instale el demonio snapd en su sistema.
sudo apt update sudo apt install -y snapd
Luego, actualice snapd a la última versión.
sudo snap install core && sudo snap refresh core
Finalmente, instale el cliente Certbot usando el siguiente comando.
sudo snap install --classic certbot sudo ln -s /snap/bin/certbot /usr/bin/certbot
Instalar certificado SSL
Utilice el siguiente comando para generar e instalar el certificado SSL de Let's Encrypt en el servidor web Nginx.
sudo certbot --nginx1. Ingrese la dirección de correo electrónico recibir notificación sobre renovación urgente y avisos de seguridad
2. Escribe Y y presiona Enter registrarse en el servidor ACME
3. Escriba Y o N para recibir correos electrónicos sobre noticias, campañas, boletines de EFF.
4. Certbot detectará automáticamente el dominio de Drupal y le pedirá que active HTTPS para su sitio web Drupal. Escriba 1 o los números apropiados separados por una coma en caso de que tenga varios sitios web.
Which names would you like to activate HTTPS for? - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - 1: itzgeek.net 2: www.itzgeek.net - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - Select the appropriate numbers separated by commas and/or spaces, or leave input blank to select all options shown (Enter 'c' to cancel): 1,2
Espere a que se complete la instalación de SSL. Ahora podrá acceder al sitio web con HTTPS.
Redirigir solicitudes HTTP que no sean www a www HTTPS con Nginx
Deberá configurar el servidor Nginx para redirigir el tráfico del sitio HTTP que no es www al sitio WWW HTTPS, es decir, http://itzgeek.net>> https://www.itzgeek.net.
Certificado SSL de renovación automática
El cliente de Certbot ahora incluye la renovación automática de certificados SSL a través de systemd. Por lo tanto, no tendrá que renovar los certificados manualmente.
Instalar Drupal con Nginx
Crear base de datos para Drupal
Primero, inicie sesión en el servidor de base de datos MariaDB/MySQL.
sudo mysql -u root -p
Luego, cree la base de datos para la instalación de Drupal junto con el usuario y la contraseña de la base de datos.
CREATE DATABASE drupaldb; CREATE USER 'drupaluser'@'localhost' IDENTIFIED BY 'password'; GRANT ALL PRIVILEGES ON drupaldb.* TO 'drupaluser'@'localhost'; EXIT
Descargar paquete Drupal
Descargue la última versión del instalador de Drupal usando el siguiente comando.
wget https://www.drupal.org/download-latest/tar.gz -O drupal-latest.tar.gz
Luego, extraiga el archivo descargado.
tar -zxvf drupal-latest.tar.gz
Y luego, mueva los archivos al directorio raíz de documentos de su sitio web.
sudo mv drupal-*/* /usr/share/nginx/www.itzgeek.net/html/
Actualice la propiedad y un grupo del directorio del sitio web de Drupal.
sudo chown -R www-data:www-data /usr/share/nginx/www.itzgeek.net/
Instalar Drupal CMS
Abra su navegador y visite su dominio de Drupal para realizar la instalación de Drupal.
https://tu-sitio-web-drupal1. Elegir idioma para su instalación y sitio web de Drupal y luego haga clic en Guardar y continuar
2. Seleccione un perfil de instalación que sea adecuado para usted y luego haga clic en Guardar y continuar
3. Ingrese los detalles de la base de datos de Drupal en la Configuración de la base de datos página y luego haga clic en Guardar y continuar
4. Espera a que se complete la instalación de Drupal
5. Deberá Configurar el sitio ingresando Información del sitio, Cuenta de mantenimiento del sitio, Configuración regional y Notificaciones de actualización . Finalmente, haga clic en Guardar y continuar
6. Al finalizar, el instalador lo redirigirá al back-end de Drupal para administrar la instalación. Alternativamente, puede acceder al back-end de Drupal yendo a https://your-drupal-website/user/login
Acceder al sitio web de Drupal
Ahora podrá acceder al sitio con su nombre de dominio.
https://tu-sitio-web-drupal
Captura de pantalla del back-end de Drupal CMS:
Después de la instalación, habilite la configuración de host de confianza para proteger su sitio web de Drupal contra ataques de encabezado HTTP HOST.
Conclusión
Eso es todo. Espero que hayas aprendido a instalar Drupal con Nginx y Let's Encrypt SSL en Debian 11.