Comment installer Drupal avec Nginx et Let’s Encrypt SSL sur Ubuntu 20.04 LTS

Drupal est un système de gestion de contenu gratuit et open-source qui t’aide à créer et à diffuser du contenu numérique pour le Web et les téléphones portables. Il est écrit en PHP et utilisé par de nombreuses organisations dans le monde entier. Avec Drupal, tu peux créer différents types de sites Web, des petits blogs aux grands sites d’entreprise. Il offre une interface facile à utiliser et des outils d’édition puissants pour gérer le contenu.

Dans ce tutoriel, nous allons te montrer comment installer Drupal avec Nginx et le sécuriser avec Let’s Encrypt SSL sur Ubuntu 20.04.

Conditions préalables

  • Un serveur fonctionnant sous Ubuntu 20.04.
  • Un nom de domaine valide pointé avec ton serveur.
  • Un mot de passe root est configuré sur ton serveur.

Installer le serveur LEMP

Tout d’abord, tu dois installer le serveur Web Nginx, la base de données MariaDB, PHP et les autres extensions requises sur ton serveur. Tu peux les installer tous à l’aide de la commande suivante :

apt-get install nginx mariadb-server php7.4 php7.4-fpm php7.4-common php7.4-mysql php7.4-gmp php7.4-curl php7.4-intl php7.4-mbstring php7.4-xmlrpc php7.4-gd php7.4-xml php7.4-cli php7.4-zip -y

Une fois que tous les paquets sont installés, édite le fichier php.ini et modifie certains paramètres :

nano /etc/php/7.4/fpm/php.ini

Change les lignes suivantes :

short_open_tag = On 
cgi.fix_pathinfo=0
memory_limit = 256M
upload_max_filesize = 100M
max_execution_time = 300
date.timezone = America/Chicago

Sauvegarde et ferme le fichier lorsque tu as terminé.

Configurer la base de données MariaDB

Tout d’abord, sécurise l’installation de MariaDB et définis le mot de passe de la racine MariaDB avec la commande suivante :

mysql_secure_installation

Réponds à toutes les questions comme indiqué ci-dessous :

Enter current password for root (enter for none): 
Set root password? [Y/n] Y
New password: 
Re-enter new password: 
Remove anonymous users? [Y/n] Y
Disallow root login remotely? [Y/n] Y
Remove test database and access to it? [Y/n] Y
Reload privilege tables now? [Y/n] Y

Une fois que l’installation MariaDB est sécurisée, connecte-toi au shell MariaDB avec la commande suivante :

mysql -u root -p

Indique ton mot de passe racine MariaDB puis crée une base de données et un utilisateur pour Drupal :

MariaDB [(none)]> CREATE DATABASE drupaldb;
MariaDB [(none)]> CREATE USER 'drupal'@'localhost' IDENTIFIED BY 'password';

Ensuite, accorde tous les privilèges à la base de données Drupal avec la commande suivante :

MariaDB [(none)]> GRANT ALL ON drupaldb.* TO 'drupal'@'localhost' WITH GRANT OPTION;

Ensuite, vide les privilèges et quitte le shell MariaDB avec la commande suivante :

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

Une fois que tu as terminé, tu peux passer à l’étape suivante.

Télécharge Drupal

Au moment de la rédaction de ce tutoriel, la dernière version de Drupal est 8.8.5. Tu peux la télécharger dans le répertoire racine du site Web de Nginx avec la commande suivante :

cd /var/www/html/
wget https://ftp.drupal.org/files/projects/drupal-8.8.5.tar.gz

Une fois le téléchargement terminé, extrais le fichier téléchargé avec la commande suivante :

tar -xvzf drupal-8.8.5.tar.gz

Ensuite, renomme le répertoire extrait en drupal et donne les autorisations appropriées avec la commande suivante :

mv drupal-8.8.5 drupal
chown -R www-data:www-data drupal
chmod -R 755 drupal

Une fois que tu as terminé, tu peux passer à l’étape suivante.

Configure Nginx pour Drupal

Ensuite, crée un fichier de configuration d’hôte virtuel Nginx pour drupal à l’aide de la commande suivante :

nano /etc/nginx/sites-available/drupal

Ajoute les lignes suivantes :

server {
    listen 80;
    listen [::]:80;
    root /var/www/html/drupal;
    index  index.php index.html index.htm;
    server_name  drupal.linuxbuz.com;

    client_max_body_size 100M;
    autoindex off;

    location ~ \..*/.*\.php$ {
        return 403;
    }

    location ~ ^/sites/.*/private/ {
        return 403;
    }

    # Block access to scripts in site files directory
    location ~ ^/sites/[^/]+/files/.*\.php$ {
        deny all;
    }

    location ~ (^|/)\. {
        return 403;
    }

    location / {
        try_files $uri /index.php?$query_string;
    }

    location @rewrite {
        rewrite ^/(.*)$ /index.php?q=$1;
    }

    # Don't allow direct access to PHP files in the vendor directory.
    location ~ /vendor/.*\.php$ {
        deny all;
        return 404;
    }

    location ~ '\.php$|^/update.php' {
        include snippets/fastcgi-php.conf;
        fastcgi_pass unix:/run/php/php7.4-fpm.sock;
        fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
        include fastcgi_params;
    }

    location ~ ^/sites/.*/files/styles/ { # For Drupal >= 7
        try_files $uri @rewrite;
    }
    location ~ ^(/[a-z\-]+)?/system/files/ { # For Drupal >= 7
        try_files $uri /index.php?$query_string;
    }
}

Enregistre et ferme le fichier puis crée un lien symbolique vers le répertoire sites-enabled :

ln -s /etc/nginx/sites-available/drupal /etc/nginx/sites-enabled/

Ensuite, définis la taille de hash_bucket_size dans le fichier de configuration par défaut de Nginx :

nano /etc/nginx/nginx.conf

Ajoute la ligne suivante sous« http {« .

    server_names_hash_bucket_size 64;

Sauvegarde et ferme le fichier puis vérifie que Nginx n’a pas d’erreur de syntaxe :

nginx -t

Tu devrais obtenir le résultat suivant :

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

Ensuite, redémarre le service Nginx pour appliquer les modifications :

systemctl restart nginx

Une fois que tu as terminé, tu peux passer à l’étape suivante.

Sécurise Drupal avec Let’s Encrypt SSL

Il est recommandé de sécuriser Drupal avec Let’s Encrypt SSL. Tout d’abord, ajoute le dépôt Certbot avec la commande suivante :

add-apt-repository ppa:ahasenack/certbot-tlssni01-1875471

Ensuite, mets à jour le référentiel et installe le client Certbot avec la commande suivante :

apt-get update -y
apt-get install certbot python3-certbot-nginx -y

Une fois le client Certbot installé, exécute la commande suivante pour télécharger et installer Let’s Encrypt SSL pour ton site Web :

certbot --nginx -d drupal.linuxbuz.com

Tu seras invité à fournir ton email valide et à accepter les conditions de service comme indiqué ci-dessous :

Saving debug log to /var/log/letsencrypt/letsencrypt.log
Plugins selected: Authenticator nginx, Installer nginx
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



Obtaining a new certificate
Performing the following challenges:
http-01 challenge for drupal.linuxbuz.com
Waiting for verification...
Cleaning up challenges
Deploying Certificate to VirtualHost /etc/nginx/sites-enabled/drupal

Ensuite, choisis de rediriger ou non le trafic HTTP vers HTTPS :

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

Tape 2 et appuie sur Entrée pour terminer l’installation :

Redirecting all traffic on port 80 to ssl in /etc/nginx/sites-enabled/drupal

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

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

IMPORTANT NOTES:
 - Congratulations! Your certificate and chain have been saved at:
   /etc/letsencrypt/live/drupal.linuxbuz.com/fullchain.pem
   Your key file has been saved at:
   /etc/letsencrypt/live/drupal.linuxbuz.com/privkey.pem
   Your cert will expire on 2020-08-12. 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

À ce stade, ton site Web Drupal est sécurisé avec Let’s Encrypt SSL.

Accède à l’assistant d’installation de Drupal Web

Maintenant, ouvre ton navigateur Web et tape l’URL https://drupal.linuxbuz.com. Tu seras redirigé vers la page de sélection de la langue de Drupal :

Installateur Drupal - Choisir la langue

Sélectionne la langue de ton choix et clique sur le bouton Enregistrer et continuer. Tu devrais voir la page Profil d’installation :

Sélectionne le profil d'installation

Sélectionne le profil d’installation de ton choix et clique sur le bouton Enregistrer et continuer. La page de configuration de la base de données devrait s’afficher :

Configuration de la base de données

Clique sur le bouton Enregistrer et continuer. Tu devrais voir la page Configuration du site :

Configuration du site Drupal

Paramètres régionaux

Indique ton nom de site, ton nom d’utilisateur admin, ton mot de passe et clique sur le bouton Enregistrer et continuer. Tu seras redirigé vers le tableau de bord par défaut de Drupal à la page suivante :

Drupal s'est installé avec succès

Conclusion

Félicitations ! Tu as réussi à installer et à sécuriser Drupal avec Let’s Encrypt SSL sur Ubuntu 20.04. Tu peux maintenant commencer à personnaliser ton site Web Drupal. Pour plus d’informations, consulte la documentation officielle de Drupal.

Vous aimerez aussi...