Installer plusieurs instances de Drupal avec Nginx sur Ubuntu 20.04

Drupal est une plateforme gratuite, évolutive et ouverte utilisée pour créer et gérer le contenu de sites Web. Elle possède une grande communauté et est utilisée par des millions de personnes et d’organisations dans le monde entier. Drupal offre une interface Web simple et conviviale qui t’aide à créer une grande variété de sites Web, des sites personnels aux grands sites communautaires.

Dans ce guide, nous allons te montrer comment déployer plusieurs instances Drupal avec Nginx sur Ubuntu 20.04.

Conditions préalables

  • Un serveur exécutant Ubuntu 20.04.
  • Deux noms de domaine valides pointés avec l’IP de ton serveur.
  • Un mot de passe root est configuré sur le serveur.

Étape 1 : Installer les dépendances requises

Tout d’abord, tu dois mettre à jour les paquets de ton système à la version actualisée et installer les dépendances requises sur ton système. Tu peux le faire avec la commande suivante :

apt-get update -y
apt-get install gnupg2 software-properties-common unzip git wget -y

Une fois que toutes les dépendances sont installées, tu peux passer à l’étape suivante.

Étape 2 : Installe Nginx et MariaDB

Ici, nous allons héberger Drupal avec Nginx. Nginx doit donc être installé sur ton serveur. S’il n’est pas installé, tu peux l’installer avec la commande suivante :

apt-get install nginx -y

Après avoir installé Nginx, tu devras installer la dernière version de MariaDB sur ton serveur. Par défaut, la dernière version de MariaDB n’est pas incluse dans le référentiel par défaut d’Ubuntu 20.04. Tu devras donc ajouter le référentiel MariaDB à APT.

Tout d’abord, ajoute la clé GPG avec la commande suivante :

apt-key adv --recv-keys --keyserver hkp://keyserver.ubuntu.com:80 0xF1656F24C74CD1D8

Ensuite, ajoute le référentiel MariaDB avec la commande suivante :

add-apt-repository "deb [arch=amd64,arm64,ppc64el] http://mariadb.mirror.liquidtelecom.com/repo/10.4/ubuntu $(lsb_release -cs) main"

Une fois le référentiel ajouté, mets à jour le référentiel et installe la dernière version de MariaDB avec la commande suivante :

apt-get update -y
apt-get install mariadb-server -y

Une fois le serveur MariaDB installé, tu peux passer à l’étape suivante.

Étape 3 : Installe PHP 7.4

Drupal ne prend pas en charge PHP 8.0. Tu dois donc installer PHP 7.4 dans ton système. Tu peux installer la version 7.4 de PHP avec les autres extensions requises à l’aide de la commande suivante :

apt-get install php7.4 php7.4-fpm php7.4-gd php7.4-common php7.4-mysql php7.4-apcu 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 apporte quelques modifications :

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

Change les lignes suivantes :

date.timezone = Asia/Kolkata
memory_limit = 256M
upload_max_filesize = 64M
max_execution_time = 600
cgi.fix_pathinfo = 0

Enregistre et ferme le fichier puis redémarre le PHP-FPM pour appliquer les modifications :

systemctl restart php7.4-fpm

Étape 4 : Créer une base de données Drupal

Ensuite, tu devras créer une base de données et un utilisateur pour les deux instances de Drupal.

Tout d’abord, connecte-toi à MySQL avec la commande suivante :

mysql

Une fois connecté, crée une base de données pour les deux instances de Drupal avec la commande suivante :

MariaDB [(none)]> create database drupal1db;
MariaDB [(none)]> create database drupal2db;

Ensuite, crée un utilisateur de base de données pour les deux instances de Drupal avec la commande suivante: :

MariaDB [(none)]> create user drupal1user@localhost identified by 'password';
MariaDB [(none)]> create user drupal2user@localhost identified by 'password';

Ensuite, accorde tous les privilèges aux deux bases de données Drupal avec la commande suivante :

MariaDB [(none)]> grant all privileges on drupal1db.* to drupal1user@localhost identified by 'password';
MariaDB [(none)]> grant all privileges on drupal2db.* to drupal2user@localhost identified by 'password';

Ensuite, supprime les privilèges et quitte MySQL avec la commande suivante :

MariaDB [(none)]> flush privileges;
MariaDB [(none)]> exit;

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

Étape 5 : Télécharge Drupal

Ensuite, tu devras télécharger la dernière version de Drupal depuis son site officiel.

Tout d’abord, change le répertoire en racine web Nginx avec la commande suivante :

cd /var/www/html

Ensuite, télécharge la dernière version de Drupal avec la commande suivante :

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

Ensuite, extrais le fichier téléchargé avec la commande suivante :

tar -xf drupal-latest.tar.gz

Ensuite, copie le répertoire extrait dans drupal1 et drupal2 :

cp -r drupal-9.1.5 drupal1
cp -r drupal-9.1.5 drupal2

Ensuite, définis la propriété appropriée avec la commande suivante :

chown -R www-data:www-data /var/www/html/drupal*

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

Étape 6 : Configurer Nginx

Ensuite, tu devras créer deux fichiers de configuration d’hôte virtuel Nginx pour chaque instance de Drupal.

Tout d’abord, crée un fichier de configuration d’hôte virtuel Nginx pour la première instance Drupal :

nano /etc/nginx/conf.d/drupal1.conf

Ajoute les lignes suivantes :

server {
    listen 80;
    root /var/www/html/drupal1;
    index  index.php index.html index.htm;
    server_name drupal1.example.com;

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

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

    location ~ [^/]\.php(/|$) {
         include snippets/fastcgi-php.conf;
         fastcgi_pass unix:/var/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 lorsque tu as terminé.

Ensuite, crée un fichier de configuration d’hôte virtuel Nginx pour la deuxième instance Drupal :

nano /etc/nginx/conf.d/drupal2.conf

Ajoute les lignes suivantes :

server {
    listen 80;
    root /var/www/html/drupal2;
    index  index.php index.html index.htm;
    server_name drupal2.example.com;

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

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

    location ~ [^/]\.php(/|$) {
         include snippets/fastcgi-php.conf;
         fastcgi_pass unix:/var/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;
        }
}

Sauvegarde et ferme le fichier quand tu as terminé puis vérifie que Nginx n’a pas d’erreur de syntaxe avec la commande suivante :

nginx -t

Tu devrais voir la sortie suivante :

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

Tu peux aussi vérifier l’état de Nginx avec la commande suivante :

systemctl status nginx

Tu devrais obtenir la sortie suivante :

? nginx.service - A high performance web server and a reverse proxy server
     Loaded: loaded (/lib/systemd/system/nginx.service; enabled; vendor preset: enabled)
     Active: active (running) since Tue 2021-03-23 08:50:47 UTC; 6s ago
       Docs: man:nginx(8)
    Process: 19946 ExecStartPre=/usr/sbin/nginx -t -q -g daemon on; master_process on; (code=exited, status=0/SUCCESS)
    Process: 19959 ExecStart=/usr/sbin/nginx -g daemon on; master_process on; (code=exited, status=0/SUCCESS)
   Main PID: 19964 (nginx)
      Tasks: 2 (limit: 2353)
     Memory: 2.7M
     CGroup: /system.slice/nginx.service
             ??19964 nginx: master process /usr/sbin/nginx -g daemon on; master_process on;
             ??19965 nginx: worker process

Mar 23 08:50:47 ubuntu2004 systemd[1]: Starting A high performance web server and a reverse proxy server...
Mar 23 08:50:47 ubuntu2004 systemd[1]: Started A high performance web server and a reverse proxy server.

Étape 7 : Accède à Drupal

Maintenant, ouvre ton navigateur Web et tape l’URL http://drupal1.example.com ou http://drupal2.example.com. Tu seras redirigé vers l’assistant d’installation web de Drupal comme indiqué ci-dessous :

Choisis la langue

Sélectionne ta langue et clique sur le bouton Enregistrer et continuer. Tu devrais voir la page suivante :

Sélectionne le profil d'installation

Sélectionne le type d’installation standard et clique sur le bouton Enregistrer et continuer. Tu devrais voir la page suivante :

Configuration de la base de données

Indique les détails de ta base de données et clique sur le bouton Enregistrer et continuer. Tu devrais voir la page suivante :

Configuration du site

Paramètres du pays

Indique les informations de ton site et clique sur le bouton Enregistrer et continuer. Tu devrais voir le tableau de bord Drupal à la page suivante :

Site Web Drupal

Conclusion

Dans le billet ci-dessus, tu as appris à déployer plusieurs instances Drupal avec Nginx sur le serveur Ubuntu 20.04. Tu peux maintenant déployer un nombre quelconque d’instances Drupal sur ton serveur. Il te suffit de définir le nom de domaine et le chemin d’installation de Drupal pour chaque nouvelle instance Drupal. N’hésite pas à me demander si tu as des questions.

Vous aimerez aussi...