Installeer meerdere Drupal Instanties met Nginx op Ubuntu 20.04

Drupal is een gratis, schaalbaar, en open platform dat gebruikt wordt om website inhoud te maken en te beheren. Het heeft een grote gemeenschap en wordt gebruikt door miljoenen mensen en organisaties over de hele wereld. Drupal biedt een eenvoudige en gebruiksvriendelijke webinterface waarmee je allerlei soorten websites kunt maken, van persoonlijke websites tot grote gemeenschaps-gestuurde websites.

In deze gids laten we je zien hoe je meerdere Drupal instances met Nginx op Ubuntu 20.04 kunt inzetten.

Vereisten

  • Een server met Ubuntu 20.04.
  • Twee geldige domeinnamen gericht met je server IP.
  • Een root wachtwoord is op de server ingesteld.

Stap 1: Installeer de vereiste afhankelijkheden

Eerst moet je je systeempakketten bijwerken naar de bijgewerkte versie en de vereiste afhankelijkheden op je systeem installeren. Je kunt dat doen met het volgende commando:

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

Als alle afhankelijkheden geïnstalleerd zijn, kun je verder gaan met de volgende stap.

Stap 2: Installeer Nginx en MariaDB

Hier zullen we Drupal hosten met Nginx. Dus moet Nginx op je server geïnstalleerd zijn. Als het niet geïnstalleerd is, kun je het installeren met het volgende commando:

apt-get install nginx -y

Na de installatie van Nginx moet je de nieuwste versie van MariaDB op je server installeren. Standaard is de nieuwste versie van MariaDB niet opgenomen in de Ubuntu 20.04 standaard repository. Je zult dus de MariaDB repository aan APT moeten toevoegen.

Voeg eerst de GPG sleutel toe met het volgende commando:

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

Voeg vervolgens de MariaDB repository toe met het volgende commando:

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

Als de repository is toegevoegd, update je de repository en installeer je de nieuwste versie van MariaDB met het volgende commando:

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

Als de MariaDB server geïnstalleerd is, kun je verder gaan met de volgende stap.

Stap 3: Installeer PHP 7.4

Drupal ondersteunt PHP 8.0 niet. Je zult dus PHP 7.4 in je systeem moeten installeren. Je kunt PHP versie 7.4 installeren met andere vereiste uitbreidingen met het volgende commando:

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

Als alle pakketten geïnstalleerd zijn, bewerk je het php.ini bestand en breng je enkele wijzigingen aan:

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

Verander de volgende regels:

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

Bewaar en sluit het bestand en herstart dan de PHP-FPM om de veranderingen toe te passen:

systemctl restart php7.4-fpm

Stap 4: Maak een Drupal Database

Vervolgens moet je een database en gebruiker aanmaken voor beide Drupal instanties.

Maak eerst verbinding met de MySQL met het volgende commando:

mysql

Maak, eenmaal verbonden, een database voor beide Drupal instanties met het volgende commando:

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

Maak vervolgens een database gebruiker voor beide Drupal instanties met het volgende commando:

MariaDB [(none)]> create user [email protected] identified by 'password';
MariaDB [(none)]> create user [email protected] identified by 'password';

Verleen vervolgens alle rechten aan beide Drupal databases met het volgende commando:

MariaDB [(none)]> grant all privileges on drupal1db.* to [email protected] identified by 'password';
MariaDB [(none)]> grant all privileges on drupal2db.* to [email protected] identified by 'password';

Spoel vervolgens de privileges door en verlaat de MySQL met het volgende commando:

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

Als je klaar bent, kun je verder gaan met de volgende stap.

Stap 5: Download Drupal

Vervolgens moet je de nieuwste versie van Drupal downloaden van zijn officiële website.

Verander eerst de directory in Nginx web root met het volgende commando:

cd /var/www/html

Download vervolgens de nieuwste versie van Drupal met het volgende commando:

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

Pak vervolgens het gedownloade bestand uit met het volgende commando:

tar -xf drupal-latest.tar.gz

Kopieer vervolgens de uitgepakte directory naar drupal1 en drupal2:

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

Stel vervolgens het juiste eigendom in met het volgende commando:

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

Als je klaar bent, kun je verder gaan met de volgende stap.

Stap 6: Configureer Nginx

Vervolgens moet je voor elke Drupal instantie twee Nginx virtuele host configuratiebestanden maken.

Maak eerst een Nginx virtual host configuratiebestand voor de eerste Drupal instantie:

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

Voeg de volgende regels toe:

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

Sla het bestand op en sluit het als je klaar bent.

Maak vervolgens een Nginx virtual host configuratiebestand voor de tweede Drupal instantie:

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

Voeg de volgende regels toe:

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

Bewaar en sluit het bestand als je klaar bent en controleer Nginx op eventuele syntaxfouten met het volgende commando:

nginx -t

Je zou de volgende uitvoer moeten zien:

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

Herstart vervolgens de Nginx dienst om de veranderingen toe te passen:

systemctl restart nginx

Je kunt ook de status van de Nginx controleren met het volgende commando:

systemctl status nginx

Je zou de volgende uitvoer moeten krijgen:

? 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.

Stap 7: Toegang tot Drupal

Open nu je webbrowser en typ de URL http://drupal1.example.com of http://drupal2.example.com. Je wordt doorgestuurd naar de Drupal web installatie wizard, zoals hieronder:

Kies taal

Kies je taal en klik op de knop Opslaan en doorgaan. Je zou de volgende pagina moeten zien:

Kies installatieprofiel

Kies het standaard installatietype en klik op de knop Opslaan en doorgaan. Je zou de volgende pagina moeten zien:

Database configuratie

Geef je database gegevens op en klik op de bewaar en vervolg knop. Je zou de volgende pagina moeten zien:

Site configuratie

Landinstellingen

Geef je site gegevens op en klik op de bewaar en ga verder knop. Je zou het Drupal dashboard op de volgende pagina moeten zien:

Drupal Website

Conclusie

In het bovenstaande bericht heb je geleerd hoe je meerdere Drupal instances met Nginx op Ubuntu 20.04 server kunt uitrollen. Je kunt nu een willekeurig aantal Drupal instances op je server uitrollen. Je hoeft alleen de domeinnaam en het Drupal installatiepad voor elke nieuwe Drupal instantie te bepalen. Voel je vrij me te vragen als je vragen hebt.