GNU/Linux >> Tutoriels Linux >  >> Debian

Comment installer Drupal avec Nginx et Let's Encrypt SSL sur Debian 11

Drupal est un système de gestion de contenu open source qui vous permet de créer, gérer et maintenir le contenu de votre site Web sans aucune connaissance en codage.

Il existe de nombreuses solutions de gestion de contenu différentes, mais toutes ne conviennent pas à chaque projet. Si vous souhaitez créer ou reconstruire votre site Web avec quelque chose de flexible et puissant, ne cherchez pas plus loin que Drupal.

Si vous n'avez pas encore d'hébergement Web pour développer un site Web Drupal, nous vous recommandons de l'installer sur votre machine Debian ou VPS local.

Ici, nous allons installer Drupal avec Nginx et Let's Encrypt SSL sur Debian 11.

Prérequis

Installer la pile LEMP

Suivez les liens ci-dessous pour installer la pile LEMP sur votre système Debian pour l'installation de Drupal.

Installer EMP (Nginx, MariaDB et PHP) sur Debian 11

Installer les extensions PHP pour Drupal

Utilisez le apt commande pour installer les extensions PHP pour l'installation 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

Configurer l'hôte virtuel Nginx pour Drupal

Nous allons commencer par créer un hôte virtuel pour une installation Drupal. Vous pouvez trouver tous les fichiers de configuration de l'hôte virtuel de Nginx sous /etc/nginx/conf.d répertoire.

En règle générale, un fichier d'hôte virtuel contient un nom de domaine, un numéro de port, une racine de document, un emplacement de journal, un CGI rapide, etc.

Je suppose ce qui suit,

Nom de domaine :itzgeek.net, www.itzgeek.net
Numéro de port :80
Racine du document :/usr/share/nginx/www.itzgeek.net/html
Journaux :/usr/share/nginx/www.itzgeek.net/logs

Tout d'abord, créez un fichier de configuration d'hôte virtuel.

sudo nano /etc/nginx/conf.d/www.itzgeek.net.conf

Ensuite, placez le contenu suivant dans le fichier de configuration ci-dessus. Vous devrez changer server_name selon vos besoins.

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;
    }
}

Créez des répertoires pour placer les fichiers Drupal et les journaux Nginx.

sudo mkdir -p /usr/share/nginx/www.itzgeek.net/html/

sudo mkdir -p /usr/share/nginx/www.itzgeek.net/logs/

Vérifiez le fichier de configuration Nginx avec la commande ci-dessous.

sudo nginx -t

Si vous obtenez ce qui suit, cela signifie que la configuration de l'hôte virtuel est correcte.

nginx: the configuration file /etc/nginx/nginx.conf syntax is ok
nginx: configuration file /etc/nginx/nginx.conf test is successful

Redémarrez les services Nginx et PHP-FPM.

sudo systemctl reload nginx php7.4-fpm

Installer le certificat SSL Let's Encrypt

Créer un enregistrement DNS

Accédez à votre bureau d'enregistrement de domaine et créez un enregistrement A et CNAME (facultatif si vous ne souhaitez pas utiliser le sous-domaine www) pour votre domaine.

  1. Nom de domaine autre que www (ex. itzgeek.net) >> A point d'enregistrement vers l'IP de votre serveur
  2. Nom de domaine www (Ex. www.itzgeek.net)>> CNAME point d'enregistrement vers itzgeek.net

Pour cette démo, je vais créer deux enregistrements afin que mon site Web Drupal soit accessible à l'adresse www.itzgeek.net.

Installer le client Certbot

Le client Certbot, qui nous aide à générer et à installer le certificat SSL Let's Encrypt dans Nginx, est désormais disponible sous forme de package instantané pour Debian. Donc, d'abord, installez le démon snapd sur votre système.

sudo apt update

sudo apt install -y snapd

Ensuite, mettez à jour snapd vers la dernière version.

sudo snap install core && sudo snap refresh core

Enfin, installez le client Certbot à l'aide de la commande ci-dessous.

sudo snap install --classic certbot

sudo ln -s /snap/bin/certbot /usr/bin/certbot

Installer le certificat SSL

Utilisez la commande ci-dessous pour générer et installer le certificat SSL Let's Encrypt sur le serveur Web Nginx.

sudo certbot --nginx
1. Entrez l'adresse e-mail recevoir une notification sur les renouvellements urgents et les avis de sécurité
2. Tapez Y et appuyez sur Entrée pour vous inscrire auprès du serveur ACME
3. Tapez O ou N pour recevoir des e-mails sur les actualités, les campagnes et la newsletter de l'EFF.
4. Certbot détectera automatiquement le domaine Drupal et vous demandera d'activer HTTPS pour votre site Drupal. Tapez 1 ou les chiffres appropriés séparés par une virgule au cas où vous auriez plusieurs sites 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

Attendez que l'installation de SSL soit terminée. Vous pourrez désormais accéder au site Web avec HTTPS.

Remarque : Si vous accédez au site Web maintenant, vous obtiendrez une erreur interdite 403 car vous n'avez pas encore placé de fichiers Drupal.

Redirection des requêtes HTTP non-www vers www HTTPS avec Nginx

Vous devrez configurer le serveur Nginx pour rediriger le trafic du site HTTP non www vers le site HTTPS WWW, c'est-à-dire http://itzgeek.net>> https://www.itzgeek.net.

Certificat SSL à renouvellement automatique

Le client Certbot inclut désormais le renouvellement automatique des certificats SSL via le systemd. Ainsi, vous n'aurez pas à renouveler les certificats manuellement.

Installer Drupal avec Nginx

Créer une base de données pour Drupal

Tout d'abord, connectez-vous au serveur de base de données MariaDB/MySQL.

sudo mysql -u root -p

Ensuite, créez la base de données pour l'installation de Drupal avec l'utilisateur et le mot de passe de la base de données.

CREATE DATABASE drupaldb;

CREATE USER 'drupaluser'@'localhost' IDENTIFIED BY 'password';

GRANT ALL PRIVILEGES ON drupaldb.* TO 'drupaluser'@'localhost';

EXIT

Télécharger le package Drupal

Téléchargez la dernière version du programme d'installation Drupal à l'aide de la commande suivante.

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

Ensuite, extrayez le fichier téléchargé.

tar -zxvf drupal-latest.tar.gz

Ensuite, déplacez les fichiers vers le répertoire racine des documents de votre site Web.

sudo mv drupal-*/* /usr/share/nginx/www.itzgeek.net/html/

Mettez à jour la propriété et un groupe du répertoire du site Drupal.

sudo chown -R www-data:www-data /usr/share/nginx/www.itzgeek.net/

Installer le CMS Drupal

Ouvrez votre navigateur et visitez votre domaine Drupal pour effectuer l'installation de Drupal.

https://votre-site-drupal

1. Choisir la langue pour votre installation Drupal et votre site Web, puis cliquez sur Enregistrer et continuer

2. Sélectionnez un profil d'installation qui vous convient, puis cliquez sur Enregistrer et continuer

3. Entrez les détails de la base de données Drupal dans la Configuration de la base de données puis cliquez sur Enregistrer et continuer

4. Attendez que l'installation de Drupal soit terminée

5. Vous devrez Configurer le site en saisissant les informations sur le site, le compte de maintenance du site, les paramètres régionaux et les notifications de mise à jour . Enfin, cliquez sur Enregistrer et continuer

6. Une fois terminé, le programme d'installation vous redirigera vers le back-end Drupal pour gérer l'installation. Alternativement, vous pouvez accéder au back-end Drupal en allant sur https://your-drupal-website/user/login

Accéder au site Drupal

Désormais, vous pourrez accéder au site avec votre nom de domaine.

https://votre-site-drupal

Capture d'écran du backend du CMS Drupal :

Après l'installation, activez les paramètres d'hôte de confiance pour protéger votre site Web Drupal contre les attaques HTTP HOST Header.

Conclusion

C'est tout. J'espère que vous avez appris à installer Drupal avec Nginx et Let's Encrypt SSL sur Debian 11.


Debian
  1. Comment installer Drupal 8 avec Nginx, PHP-FPM et SSL sur Ubuntu 15.10

  2. Installer Lets Encrypt and Secure Nginx avec SSL/TLS dans Debian 9

  3. Comment installer Drupal avec Nginx et Lets Encrypt SSL sur Ubuntu 20.04 LTS

  4. Comment installer Drupal 9 avec Nginx et Lets Encrypt SSL sur Debian 10

  5. Comment installer Let's Encrypt SSL sur Ubuntu 18.04 avec Nginx

Comment installer Drupal avec Nginx et Let's Encrypt SSL sur Debian 11

Comment installer Joomla avec Nginx et Let's Encrypt SSL sur Debian 11

Comment installer Let's Encrypt SSL dans Nginx sur Debian 11

Comment installer WordPress avec Nginx et Let's Encrypt SSL sur Debian 11

Comment installer Nginx avec Let's Encrypt TLS/SSL sur Ubuntu 20.04

Comment installer Nginx avec Let's Encrypt SSL sur Fedora 35