GNU/Linux >> Tutoriels Linux >  >> Ubuntu

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

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.


Ubuntu
  1. Comment installer Nextcloud avec Nginx et Lets Encrypt SSL sur Ubuntu 20.04 LTS

  2. Comment installer Magento 2 avec Nginx et Lets Encrypt SSL sur Ubuntu 20.04 LTS

  3. Comment installer Seafile avec Nginx sur Ubuntu 20.04 LTS

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

  5. Comment installer Drupal 8.1 avec Nginx, PHP-FPM et SSL sur Ubuntu 16.04

Comment installer NodeBB Forum avec Nginx et Lets Encrypt SSL sur Ubuntu 20.04 LTS

Comment installer Moodle avec Nginx et Lets Encrypt SSL sur Ubuntu 20.04

Comment installer MediaWiki avec Nginx et Lets Encrypt SSL sur Ubuntu 20.04

Comment installer Gitea avec Nginx et Lets Encrypt SSL gratuit sur Ubuntu 20.04

Comment installer Let's Encrypt SSL avec Nginx sur Ubuntu 16.04 LTS

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