Installiere mehrere Drupal Instanzen mit Nginx auf Ubuntu 20.04

Drupal ist eine freie, skalierbare und offene Plattform, die zur Erstellung und Verwaltung von Website-Inhalten verwendet wird. Sie hat eine große Community und wird von Millionen von Menschen und Organisationen auf der ganzen Welt genutzt. Drupal bietet ein einfaches und benutzerfreundliches Webinterface, das dir hilft, eine Vielzahl von Websites zu erstellen, von persönlichen Websites bis hin zu großen Community-getriebenen Websites.

In dieser Anleitung zeigen wir dir, wie du mehrere Drupal-Instanzen mit Nginx auf Ubuntu 20.04 einrichten kannst.

Voraussetzungen

  • Ein Server, auf dem Ubuntu 20.04 läuft.
  • Zwei gültige Domainnamen, die auf die IP deines Servers zeigen.
  • Ein Root-Passwort ist auf dem Server konfiguriert.

Schritt 1: Erforderliche Abhängigkeiten installieren

Zuerst musst du deine Systempakete auf die aktuelle Version aktualisieren und die benötigten Abhängigkeiten auf deinem System installieren. Das kannst du mit dem folgenden Befehl tun:

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

Sobald alle Abhängigkeiten installiert sind, kannst du mit dem nächsten Schritt fortfahren.

Schritt 2: Nginx und MariaDB installieren

Hier werden wir Drupal mit Nginx hosten. Nginx muss also auf deinem Server installiert sein. Wenn es nicht installiert ist, kannst du es mit dem folgenden Befehl installieren:

apt-get install nginx -y

Nachdem du Nginx installiert hast, musst du die neueste Version von MariaDB auf deinem Server installieren. Standardmäßig ist die neueste Version von MariaDB nicht im Standard-Repository von Ubuntu 20.04 enthalten. Also musst du das MariaDB Repository zu APT hinzufügen.

Zuerst fügst du den GPG-Schlüssel mit dem folgenden Befehl hinzu:

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

Als nächstes fügst du das MariaDB Repository mit dem folgenden Befehl hinzu:

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

Sobald das Repository hinzugefügt ist, aktualisiere das Repository und installiere die neueste Version von MariaDB mit dem folgenden Befehl:

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

Sobald der MariaDB Server installiert ist, kannst du mit dem nächsten Schritt fortfahren.

Schritt 3: Installiere PHP 7.4

Drupal unterstützt PHP 8.0 nicht. Daher musst du PHP 7.4 auf deinem System installieren. Du kannst die PHP Version 7.4 mit anderen benötigten Erweiterungen mit dem folgenden Befehl installieren:

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

Sobald alle Pakete installiert sind, bearbeite die php.ini Datei und nimm einige Änderungen vor:

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

Ändere die folgenden Zeilen:

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

Speichere und schließe die Datei und starte den PHP-FPM neu, um die Änderungen zu übernehmen:

systemctl restart php7.4-fpm

Schritt 4: Drupal-Datenbank erstellen

Als nächstes musst du eine Datenbank und einen Benutzer für beide Drupal-Instanzen erstellen.

Verbinde dich zunächst mit folgendem Befehl mit MySQL:

mysql

Sobald du verbunden bist, erstelle eine Datenbank für beide Drupal-Instanzen mit dem folgenden Befehl:

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

Als nächstes erstellst du einen Datenbankbenutzer für beide Drupal-Instanzen mit dem folgenden Befehl:

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

Erteile als nächstes alle Rechte für beide Drupal-Datenbanken mit dem folgenden Befehl:

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

Als Nächstes entferne die Berechtigungen und verlasse MySQL mit dem folgenden Befehl:

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

Sobald du damit fertig bist, kannst du mit dem nächsten Schritt fortfahren.

Schritt 5: Drupal herunterladen

Als nächstes musst du die neueste Version von Drupal von der offiziellen Webseite herunterladen.

Wechsle zunächst mit dem folgenden Befehl in das Nginx-Web-Root-Verzeichnis:

cd /var/www/html

Als nächstes lädst du die neueste Version von Drupal mit dem folgenden Befehl herunter:

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

Dann extrahiere die heruntergeladene Datei mit dem folgenden Befehl:

tar -xf drupal-latest.tar.gz

Und nun kopierst du das entpackte Verzeichnis nach drupal1 und drupal2:

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

Setze als Nächstes die korrekten Besitzverhältnisse mit dem folgenden Befehl:

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

Sobald du damit fertig bist, kannst du mit dem nächsten Schritt fortfahren.

Schritt 6: Nginx konfigurieren

Als nächstes musst du zwei Nginx Virtual Host Konfigurationsdateien für jede Drupal Instanz erstellen.

Erstelle zunächst eine Nginx Virtual Host Konfigurationsdatei für die erste Drupal Instanz:

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

Füge die folgenden Zeilen hinzu:

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

Speichere und schließe die Datei, wenn du fertig bist.

Als nächstes erstellst du eine Nginx Virtual Host Konfigurationsdatei für die zweite Drupal Instanz:

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

Füge die folgenden Zeilen hinzu:

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

Speichere und schließe die Datei, wenn du fertig bist. Überprüfe dann den Nginx auf Syntaxfehler mit dem folgenden Befehl:

nginx -t

Du solltest die folgende Ausgabe sehen:

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

Starte als nächstes den Nginx-Dienst neu, um die Änderungen zu übernehmen:

systemctl restart nginx

Du kannst auch den Status des Nginx mit dem folgenden Befehl überprüfen:

systemctl status nginx

Du solltest die folgende Ausgabe erhalten:

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

Schritt 7: Zugriff auf Drupal

Öffne nun deinen Webbrowser und gib die URL http://drupal1.example.com oder http://drupal2.example.com ein. Du wirst zum Drupal Web-Installationsassistenten weitergeleitet, wie unten gezeigt:

Sprache wählen

Wähle deine Sprache aus und klicke auf die Schaltfläche Speichern und weiter. Du solltest die folgende Seite sehen:

Installationsprofil auswählen

Wähle den Standard-Installationstyp und klicke auf die Schaltfläche Speichern und fort fahren. Du solltest die folgende Seite sehen:

Datenbank Konfiguration

Gib deine Datenbankdetails an und klicke auf die Schaltfläche Speichern und fortfahren. Du solltest die folgende Seite sehen:

Website Konfiguration

Ländereinstellungen

Gib deine Site-Informationen an und klicke auf den Speichern und Weiter -Button. Auf der folgenden Seite solltest du das Drupal Dashboard sehen:

Drupal Website

Fazit

Im obigen Beitrag hast du gelernt, wie du mehrere Drupal Instanzen mit Nginx auf einem Ubuntu 20.04 Server bereitstellen kannst. Du kannst nun eine beliebige Anzahl von Drupal-Instanzen auf deinem Server bereitstellen. Es muss nur der Domainname und der Drupal-Installationspfad für jede neue Drupal-Instanz festlgelegt werden. Du kannst mich gerne fragen, wenn du Fragen hast.

Das könnte dich auch interessieren …