Drupal est un système de gestion de contenu gratuit et open source qui vous aide à créer et à diffuser du contenu numérique pour le Web et les téléphones mobiles. Il est écrit en PHP et utilisé par de nombreuses organisations à travers le monde. Avec Drupal, vous pouvez créer différents types de sites Web, des petits blogs aux grands sites Web d'entreprise. Il offre une interface facile à utiliser et de puissants outils d'édition pour la gestion du contenu.
Dans ce tutoriel, nous allons vous montrer comment installer Drupal avec Nginx et le sécuriser avec Let's Encrypt SSL sur Ubuntu 20.04.
Prérequis
- Un serveur exécutant Ubuntu 20.04.
- Un nom de domaine valide pointé vers votre serveur.
- Un mot de passe root est configuré sur votre serveur.
Installer le serveur LEMP
Tout d'abord, vous devrez installer le serveur Web Nginx, la base de données MariaDB, PHP et les autres extensions requises sur votre serveur. Vous pouvez tous les installer à 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 tous les packages installés, modifiez le fichier php.ini et modifiez certains paramètres :
nano /etc/php/7.4/fpm/php.ini
Modifiez 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
Enregistrez et fermez le fichier lorsque vous avez terminé.
Configurer la base de données MariaDB
Tout d'abord, sécurisez l'installation de MariaDB et définissez le mot de passe root de MariaDB avec la commande suivante :
mysql_secure_installation
Répondez à 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 MariaDB sécurisée, connectez-vous au shell MariaDB avec la commande suivante :
mysql -u root -p
Fournissez votre mot de passe root MariaDB puis créez 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, accordez 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, videz les privilèges et quittez le shell MariaDB avec la commande suivante :
MariaDB [(none)]> FLUSH PRIVILEGES;
MariaDB [(none)]> EXIT;
Une fois que vous avez terminé, vous pouvez passer à l'étape suivante.
Télécharger Drupal
Au moment de la rédaction de ce tutoriel, la dernière version de Drupal est la 8.8.5. Vous pouvez le télécharger dans le répertoire racine 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é, extrayez le fichier téléchargé avec la commande suivante :
tar -xvzf drupal-8.8.5.tar.gz
Ensuite, renommez le répertoire extrait en drupal et donnez 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 vous avez terminé, vous pouvez passer à l'étape suivante.
Configurer Nginx pour Drupal
Ensuite, créez un fichier de configuration d'hôte virtuel Nginx pour drupal à l'aide de la commande suivante :
nano /etc/nginx/sites-available/drupal
Ajoutez 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; } }
Enregistrez et fermez le fichier puis créez un lien symbolique vers le répertoire des sites activés :
ln -s /etc/nginx/sites-available/drupal /etc/nginx/sites-enabled/
Ensuite, définissez hash_bucket_size dans le fichier de configuration par défaut de Nginx :
nano /etc/nginx/nginx.conf
Ajoutez la ligne suivante sous "http "
server_names_hash_bucket_size 64;
Enregistrez et fermez le fichier puis vérifiez le Nginx pour toute erreur de syntaxe :
nginx -t
Vous devriez 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émarrez le service Nginx pour appliquer les modifications :
systemctl restart nginx
Une fois que vous avez terminé, vous pouvez passer à l'étape suivante.
Sécuriser Drupal avec Let's Encrypt SSL
Il est recommandé de sécuriser le Drupal avec Let's Encrypt SSL. Tout d'abord, ajoutez le référentiel Certbot avec la commande suivante :
add-apt-repository ppa:ahasenack/certbot-tlssni01-1875471
Ensuite, mettez à jour le référentiel et installez 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écutez la commande suivante pour télécharger et installer Let's Encrypt SSL pour votre site Web :
certbot --nginx -d drupal.linuxbuz.com
Vous serez invité à fournir votre adresse e-mail valide et à accepter les conditions d'utilisation 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, choisissez 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
Tapez 2 et appuyez 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, votre site Web Drupal est sécurisé avec Let's Encrypt SSL.
Accéder à l'assistant d'installation Web Drupal
Maintenant, ouvrez votre navigateur Web et tapez l'URL https://drupal.linuxbuz.com. Vous serez redirigé vers la page de sélection de la langue Drupal :
Sélectionnez la langue souhaitée et cliquez sur Enregistrer et continuer bouton. Vous devriez voir la page Profil d'installation :
Sélectionnez le profil d'installation souhaité et cliquez sur Enregistrer et continuer bouton. Vous devriez voir la page de configuration de la base de données :
Cliquez sur Enregistrer et continuer bouton. Vous devriez voir la page de configuration du site :
Indiquez votre nom de site, votre nom d'utilisateur d'administrateur, votre mot de passe et cliquez sur Enregistrer et continuer bouton. Vous serez redirigé vers le tableau de bord Drupal par défaut sur la page suivante :
Conclusion
Toutes nos félicitations! vous avez installé et sécurisé avec succès Drupal avec Let's Encrypt SSL sur Ubuntu 20.04. Vous pouvez maintenant commencer à personnaliser votre site Web Drupal. Pour plus d'informations, consultez la documentation officielle de Drupal.