GNU/Linux >> Tutoriales Linux >  >> Debian

Cómo instalar Drupal con Nginx y Let's Encrypt SSL en Debian 11

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.

  1. Nombre de dominio que no es www (Ej. itzgeek.net)>> A punto de registro a la IP de su servidor
  2. 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 --nginx
1. 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.

Nota: Si accede al sitio web ahora, obtendrá un error 403 prohibido porque aún tiene que colocar los archivos de Drupal.

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-drupal

1. 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.


Debian
  1. Cómo instalar Drupal 8 con Nginx, PHP-FPM y SSL en Ubuntu 15.10

  2. Instale Lets Encrypt and Secure Nginx con SSL/TLS en Debian 9

  3. Cómo instalar Drupal con Nginx y Lets Encrypt SSL en Ubuntu 20.04 LTS

  4. Cómo instalar Drupal 9 con Nginx y Lets Encrypt SSL en Debian 10

  5. Cómo instalar Let's Encrypt SSL en Ubuntu 18.04 con Nginx

Cómo instalar Drupal con Nginx y Let's Encrypt SSL en Debian 11

Cómo instalar Joomla con Nginx y Let's Encrypt SSL en Debian 11

Cómo instalar Let's Encrypt SSL en Nginx en Debian 11

Cómo instalar WordPress con Nginx y Let's Encrypt SSL en Debian 11

Cómo instalar Nginx con Let's Encrypt TLS/SSL en Ubuntu 20.04

Cómo instalar Nginx con Let's Encrypt SSL en Fedora 35