Wie installiere ich das Drupal CMS mit Apache2 auf Ubuntu 22.04
Drupal ist ein freies und quelloffenes Web-Content-Management-System, das in PHP geschrieben und unter der GNU General Public License vertrieben wird. Drupal bietet ein robustes Content-Management-Tool mit ausgefeilten APIs für die Veröffentlichung über mehrere Kanäle. Drupal wird von mindestens 14% der 10.000 wichtigsten Websites im Internet verwendet und wird für Websites von globalen Unternehmen, Regierungen, Bildungseinrichtungen und Institutionen genutzt. Drupal ist ein hoch skalierbares System, das in digitale Anwendungen integriert ist und für die Erstellung von Multisites für verschiedene Organisationen mit mehrsprachiger Unterstützung verwendet werden kann.
In dieser Anleitung zeige ich dir, wie du die neueste Version von Drupal auf einem Ubuntu 22.04-System installierst. Diese Anleitung beinhaltet die Installation einiger Paketabhängigkeiten wie Apache2 Webserver, MariaDB Datenbank, PHP 8.1 und Composer als PHP-Paketverwaltungstool. Das Ziel ist, dass du die Drupal-Installation mit dem LAMP-Stack abgeschlossen und mit SSL-Zertifikaten abgesichert hast.
Voraussetzungen
Um diese Anleitung fertigzustellen, brauchst du die folgenden Voraussetzungen:
- Einen Ubuntu 22.04 Server. Diese Demo verwendet einen Ubuntu-Server mit dem Hostnamen ’server-ubuntu‘ und aktivierter UFW-Firewall.
- Ein Nicht-Root-Benutzer mit administrativen Rechten.
- Ein Domainname, der auf die IP-Adresse des Ubuntu-Servers zeigt.
Installation des Apache2 Webservers
Im ersten Schritt installierst du den Apache-Webserver über APT aus den Ubuntu-Repositories. Zum Zeitpunkt der Erstellung dieses Artikels benötigt die neueste Version von Drupal 9 mindestens Apache v2.x.
Der Großteil der Drupal-Entwicklung läuft mit dem Apache-Webserver, aber auch noch ein anderer Webserver wie Nginx.
Bevor du die Pakete installierst, führe den folgenden apt-Befehl als Nicht-Root-Benutzer sudo aus, um dein Paketindex-Repository zu aktualisieren und aufzufrischen. Du kannst auch den direkten Root-Benutzer auf deinem Server verwenden.
sudo apt update
Installiere nun den Apache-Webserver, indem du den folgenden apt-Befehl ausführst. Du wirst aufgefordert, die Apache-Installation zu bestätigen. Gib Y ein, um zuzustimmen, und drücke ENTER.
sudo apt install apache2
Als Nächstes führst du die folgenden systemctl-Befehle aus, um den Dienst„apache2“ zu überprüfen und zu bestätigen.
Du solltest die Ausgabe erhalten, dass der„apache2„-Dienst„aktiviert“ ist und beim Systemstart automatisch ausgeführt wird. Außerdem erhältst du die Ausgabe, dass der„apache2„-Dienst läuft.
sudo systemctl is-enabled apache2 sudo systemctl status apache2
Zum Schluss musst du die Regel„Apache Full“ zur UFW-Firewall hinzufügen. Die Regel„Apache Full“ erlaubt automatisch den Zugriff auf HTTP- und HTTPS-Ports und ist standardmäßig in den Apache-Paketen enthalten.
Führe den folgenden Befehl aus, um die Regel „Apache Full“ hinzuzufügen. Überprüfe anschließend den Status der UFW-Firewall. Du solltest eine Meldung erhalten, dass die Regel„Apache Full“ zur UFW-Firewall hinzugefügt wurde.
sudo ufw allow "Apache Full" sudo ufw status
Installation von MariaDB Server
Drupal unterstützt mehrere RDBMS (Relational Database Management System) wie MySQL/MariaDB, PostgreSQL und SQLite. In diesem Beispiel wirst du Drupal mit dem MariaDB-Datenbankserver installieren.
Die aktuellste Version von Drupal 9 benötigt mindestens den MariaDB-Server v10.3.x. Und das neueste Ubuntu-Repository bietet den MariaDB-Server v10.6.
Verwende den folgenden apt-Befehl, um die MariaDB-Serverpakete zu installieren. Wenn du aufgefordert wirst, die Installation zu bestätigen, gibst du zur Bestätigung Y ein und drückst dann ENTER.
sudo apt install mariadb-server mariadb-client
Sobald der MariaDB-Server installiert ist, führe den folgenden systemctl-Befehl aus, um den Status des Dienstes„mariadb“ zu überprüfen.
Du erhältst die Ausgabe, dass der„mariadb„-Server„aktiviert“ ist und beim Systemstart automatisch ausgeführt wird. Und der aktuelle Status des„mariadb„-Dienstes ist„running„.
sudo systemctl is-enabled mariadb sudo systemctl status mariadb
Jetzt, wo der Dienst„mariadb“ läuft, musst du die Installation des MariaDB-Servers einrichten und sichern. Dazu kannst du das Kommandozeilen-Tool„mysql_secure_installation“ verwenden, das im MariaDB-Serverpaket enthalten ist.
Führe den folgenden Befehl aus, um die Installation des MariaDB-Servers zu konfigurieren und zu sichern.
sudo mysql_secure_installation
Du wirst nun mit den folgenden Fragen konfrontiert:
- Bei der Standard-MariaDB-Serverinstallation ohne Root-Passwort drückst du ENTER, wenn du nach dem Passwort gefragt wirst.
- Die lokale Authentifizierung für MariaDB-Root-Benutzer ist standardmäßig gesichert. Gib„n“ ein, wenn du die Authentifizierungsmethode auf„unix_socket“ ändern möchtest.
- Gib„Y“ ein, um ein neues MariaDB Root-Passwort zu erstellen. Gib dann das sichere Passwort für deinen MariaDB-Root-Benutzer ein und wiederhole den Vorgang.
- Wenn du gefragt wirst, ob du die Fernauthentifizierung für den MariaDB-Root-Benutzer deaktivieren möchtest, gibst du„Y“ ein, um zuzustimmen.
- Die Standardinstallation des MariaDB-Servers enthält die Datenbank „test“ und erlaubt einem anonymen Benutzer den Zugriff auf diese Datenbank. Gib für beide Einstellungen„Y“ ein, um die Standarddatenbank „test“ und die anonymen Rechte zu entfernen.
- Gib schließlich„Y“ ein, um die Berechtigung zum Nachladen von Tabellen zu bestätigen.
Jetzt hast du das MariaDB Root-Passwort konfiguriert und die Installation des MariaDB-Servers gesichert. Jetzt wirst du eine neue Datenbank und einen neuen Benutzer für Drupal erstellen. Dazu musst du dich zunächst über den Befehl „mysql“ (MySQL/MariaDB-Client) in der MariaDB-Shell anmelden.
Verwende den folgenden „mysql“-Befehl, um dich in der MariaDB-Shell als Benutzer root anzumelden. Wenn du zur Eingabe des Passworts aufgefordert wirst, gibst du dein MariaDB-Root-Passwort ein. Du kannst auch einfach ENTER drücken, wenn du diesen Befehl als Linux-Benutzer „root“ ausführst.
sudo mysql -u root -p
Als nächstes führst du die folgenden Abfragen aus, um eine neue MariaDB-Datenbank und einen neuen Benutzer für Drupal zu erstellen. In diesem Beispiel erstellst du die Datenbank„drupaldb“ mit dem Benutzer„drupal“ und dem Passwort„password„. Du kannst das„password“ durch dein neues sicheres Passwort ersetzen.
CREATE DATABASE drupaldb; CREATE USER drupal@localhost IDENTIFIED BY 'password'; GRANT ALL ON drupaldb.* TO drupal@localhost WITH GRANT OPTION; FLUSH PRIVILEGES;
Führe nun die folgende Abfrage aus, um die Rechte des MariaDB-Benutzers„drupal@localhost“ zu überprüfen. Dann kannst du die MariaDB-Shell mit der Abfrage„quit“ verlassen oder einfach„Strg+d“ drücken.
Du solltest die Ausgabe erhalten, dass der MariaDB-Benutzer„drupal@localhost“ Zugriff auf die Datenbank„drupaldb“ hat.
SHOW GRANTS FOR drupal@localhost; quit
Installieren und Konfigurieren von PHP 8.x
Zum Zeitpunkt der Erstellung dieses Artikels wird für die Installation der neuesten Version von Drupal 9 die Verwendung von PHP 8.x empfohlen. Außerdem musst du einige zusätzliche PHP-Erweiterungen installieren, z. B. „php-apcu“ für den Cache, „php-gd“ für die Bildverarbeitung, „php-mysql“ als Treiber für die MariaDB-Datenbank und andere.
In diesem Beispiel wirst du PHP 8.1 aus den Ubuntu-Repositories installieren. Verwende den folgenden „apt“-Befehl, um PHP 8.1 und einige zusätzlich benötigte Erweiterungen und Pakete zu installieren.
Wenn du aufgefordert wirst, die Installation zu bestätigen, gibst du„Y“ ein und drückst ENTER.
sudo apt install php php-apcu php-dev libapache2-mod-php libcurl4-openssl-dev php-cli php-mysql php-zip php-gd php-fpm php-json php-common php-intl php-mbstring php-curl php-xml php-pear php-tidy php-soap php-bcmath php-xmlrpc
Sobald PHP installiert ist, musst du eine zusätzliche PHP-Erweiterung„uploadprogress“ aus dem PECL (PHP Extensions Community Library) Repository installieren. Dazu kannst du die Befehlszeile„pecl“ aus dem Paket„php-pear“ verwenden.
Die Erweiterung„uploadprogress“ wird von Drupal verwendet, um den Fortschritt eines Datei-Uploads anzuzeigen und zu verfolgen, einschließlich der geschätzten verbleibenden Zeit und des Zugriffs auf den Inhalt der Datei, während sie hochgeladen wird.
Verwende den Befehl„pecl„, um die PHP-Erweiterung„uploadprogress“ zu installieren. Der Befehl„pecl“ lädt nun den Quellcode der Erweiterung„uploadprogress“ herunter und kompiliert und installiert die Erweiterung automatisch.
sudo pecl install uploadprogress
Sobald die Installation abgeschlossen ist, führe den folgenden Befehl aus, um eine neue Konfigurationsdatei für die PHP-Erweiterung„uploadprogress“ zu erstellen.
cat <<EOF | sudo tee /etc/php/8.1/mods-available/uploadprogress.ini ; configuration for php uploadprogress module ; priority 15 extension=uploadprogress.so EOF
Führe nun den folgenden Befehl aus, um die Erweiterung „uploadprogress“ in deiner PHP-Installation zu aktivieren.
sudo ln -s /etc/php/8.1/mods-available/uploadprogress.ini /etc/php/8.1/apache2/conf.d/15-uploadprogress.ini
Du hast nun die Installation aller PHP-Pakete für Drupal abgeschlossen. Jetzt musst du deine PHP-Installation einrichten, indem du die Datei„php.ini“ bearbeitest.
Öffne die Datei „/etc/php/8.1/apache2/php.ini“ mit deinem Texteditor. In diesem Beispiel verwenden wir„nano„.
sudo nano /etc/php/8.1/apache2/php.ini
Ändere einige der Optionen wie unten beschrieben. Die Option„memory_limit“ sollte von der Speicherkapazität des Servers abhängig sein und die Option„date.timezone“ von deiner Zeitzone.
memory_limit = 512M upload_max_filesize = 60M max_execution_time = 300 date.timezone = Europe/Paris
Speichere und schließe die Datei, wenn du fertig bist.
Als Nächstes verwendest du den folgenden systemctl-Befehl, um den Dienst„apache2“ neu zu starten und die neuen Änderungen an den PHP-Konfigurationen anzuwenden.
sudo systemctl restart apache2
Nachdem du die Installation und Konfiguration von PHP 8.1 abgeschlossen hast, kannst du nun die Installation überprüfen, indem du die phpinfo-Datei erstellst.
Führe den folgenden Befehl aus, um eine neue phpinfo-Datei„/var/www/html/info.php“ zu erstellen. Diese Datei enthält das phpinfo-Skript, das dir die detaillierten Konfigurationen deines PHP in deinem Webbrowser anzeigt.
cat <<EOF | sudo tee /var/www/html/info.php <?php phpinfo(); ?> EOF
Öffne deinen Webbrowser und rufe die IP-Adresse deines Ubuntu-Servers auf, indem du der Pfad-URL„/info.php“ folgst (z.B.: http://192.168.5.100/info.php). Du solltest die Seite mit den Details zu deiner PHP 8.1-Installation sehen.
Installieren des Composers
Ein Composer ist ein Kommandozeilen-Tool zur Verwaltung von PHP-Paketabhängigkeiten. Du musst den Composer installieren, der für die Installation der PHP-Paketabhängigkeiten deiner Drupal-Installation verwendet wird.
Um Composer zu installieren, führst du den folgenden Befehl aus.
php -r "copy('https://getcomposer.org/installer', 'composer-setup.php');" php -r "if (hash_file('sha384', 'composer-setup.php') === '55ce33d7678c5a611085589f1f3ddf8b3c52d662cd01d4ba75c0ee0459970c2200a51f492d557530c71c15d8dba01eae') { echo 'Installer verified'; } else { echo 'Installer corrupt'; unlink('composer-setup.php'); } echo PHP_EOL;" php composer-setup.php php -r "unlink('composer-setup.php');"
Im Folgenden werden die einzelnen Befehle erläutert:
- Mit dem ersten Befehl wird das Composer-Installationsskript in die Datei „composer-setup.php“ heruntergeladen. Mit dem zweiten Befehl wird der Hash des Installationsskripts überprüft. Achte darauf, dass du die Meldung „Installer verified“ erhältst.
- Die letzten beiden Befehle führen das Installer-Skript aus und installieren das Composer PHP-Pakete-Abhängigkeitsmanagement-Tool. Danach wird das Installer-Skript „composer-setup.php“ gelöscht.
- Als letztes erhältst du die Composer-Binärdatei „composer.phar“ in deinem aktuellen Arbeitsverzeichnis.
Als Nächstes führst du den folgenden Befehl aus, um die Binärdatei„composer.phar“ nach„/usr/local/bin/composer“ zu verschieben. Dadurch können alle Benutzer den Befehl „composer“ ausführen.
sudo mv composer.phar /usr/local/bin/composer
Du kannst nun den Befehl„composer“ ausführen, um deine Installation zu überprüfen. Der folgende Befehl zeigt dir eine ausführliche Hilfeseite für den Composer-Befehl.
composer --help
Drupal neueste Version herunterladen
Da du alle Paketabhängigkeiten für Drupal installiert hast, wirst du nun den Drupal-Quellcode herunterladen und die PHP-Paketabhängigkeiten über den Composer installieren.
Verwende den folgenden wget-Befehl, um die neueste Version von Drupal herunterzuladen. Du siehst die Datei„drupal.tar.gz“ in deinem aktuellen Arbeitsverzeichnis.
wget https://www.drupal.org/download-latest/tar.gz -O drupal.tar.gz
Entpacke nun die Datei„drupal.tar.gz“ mit dem unten stehenden tar-Befehl. Verschiebe dann das entpackte drupal-Verzeichnis nach„/var/www/drupal“. Dieses Verzeichnis wird als „Document-root“-Verzeichnis für deine Drupal-Installation verwendet.
tar -xvf drupal.tar.gz mv drupal-* /var/www/drupal
Als Nächstes änderst du mit folgendem Befehl die Eigentümerschaft und die Berechtigungen für das Drupal-Installationsverzeichnis„/var/www/drupal„. Der Eigentümer muss der Benutzer und die Gruppe „www-data“ mit dem normalen Benutzerrecht„755“ sein.
sudo chown -R www-data:www-data /var/www/drupal/ sudo chmod -R 755 /var/www/drupal/
Wechsle nun in das Verzeichnis„/var/www/drupal“ und führe den Composer-Befehl wie unten beschrieben aus, um alle PHP-Abhängigkeiten für deine Drupal-Installation zu installieren.
cd /var/www/drupal sudo -u www-data composer install --no-dev
Einrichten des virtuellen Apache2-Hosts für Drupal
Nachdem du Drupal heruntergeladen und die PHP-Paketabhängigkeiten installiert hast, musst du nun den virtuellen Apache-Host für deine Drupal-Installation einrichten und konfigurieren.
Bevor du mit der Konfiguration des virtuellen Hosts beginnst, musst du sicherstellen, dass dein Domainname, der für Drupal verwendet werden soll, auf deine Server-IP-Adresse zeigt. Vergewissere dich außerdem, dass deine SSL-Zertifikate bereit sind.
Führe den folgenden Befehl a2enmod aus, um einige Apache2-Module für dein Drupal zu aktivieren.
sudo a2enmod rewrite ssl headers deflate
Erstelle nun eine neue virtuelle Hostdatei für Drupal„/etc/apache2/sites-available/drupal.conf“ mit dem folgenden Befehl. In diesem Beispiel wird der Editor„nano“ verwendet.
sudo nano /etc/apache2/sites-available/drupal.conf
Füge die folgende vollständige Konfiguration für den virtuellen Drupal-Host hinzu. Achte darauf, dass du den Domainnamen und den Pfad der SSL-Zertifikate änderst. In dieser Demo werden wir die Domain„hwdomain.io“ für unsere Drupal-Installation verwenden.
<VirtualHost *:80> ServerName hwdomain.io ServerAdmin admin@hwdomain.io # Redirect Requests to SSL Redirect permanent "/" "https://hwdomain.io/" ErrorLog ${APACHE_LOG_DIR}/hwdomain.io.error.log CustomLog ${APACHE_LOG_DIR}/hwdomain.io.access.log combined </VirtualHost> <IfModule mod_ssl.c> <VirtualHost _default_:443> ServerName hwdomain.io ServerAdmin admin@hwdomain.io DocumentRoot /var/www/drupal # Add security php_flag register_globals off ErrorLog ${APACHE_LOG_DIR}/hwdomain.io.error.log CustomLog ${APACHE_LOG_DIR}/hwdomain.io.access.log combined SSLEngine on SSLCertificateFile /etc/letsencrypt/live/hwdomain.io/fullchain.pem SSLCertificateKeyFile /etc/letsencrypt/live/hwdomain.io/privkey.pem <FilesMatch "\.(cgi|shtml|phtml|php)$"> SSLOptions +StdEnvVars </FilesMatch> <Directory /var/www/drupal> Options FollowSymlinks #Allow .htaccess AllowOverride All Require all granted <IfModule security2_module> SecRuleEngine Off # or disable only problematic rules </IfModule> </Directory> <Directory /var/www/drupal/> RewriteEngine on RewriteBase / RewriteCond %{REQUEST_FILENAME} !-f RewriteCond %{REQUEST_FILENAME} !-d RewriteRule ^(.*)$ index.php?q=$1 [L,QSA] </Directory> </VirtualHost> </IfModule>
Speichere deine Konfiguration und schließe die Datei, wenn du fertig bist.
Als Nächstes führst du den folgenden Befehl aus, um die virtuelle Hostdatei„drupal.conf“ zu aktivieren. Teste und überprüfe dann deine Apache-Konfigurationen. Wenn deine Apache-Konfiguration korrekt ist, erhältst du eine Meldung wie„Syntax OK„.
sudo a2ensite drupal.conf sudo apachectl configtest
Starten Sie abschließend den Dienst„apache2“ neu, um die neuen Änderungen und die neue virtuelle Hostdatei zu übernehmen. Jetzt kannst du den Drupal-Installer über den Domainnamen und den Webbrowser aufrufen.
sudo systemctl restart apache2
Ausführen des Drupal Web Installers
Um den Drupal-Installer aufzurufen, öffnest du deinen Webbrowser und rufst den Domainnamen deiner Drupal-Installation auf (z. B.: https://hwdomain.io/).
Wähle in den Spracheinstellungen deine bevorzugte Sprache aus und klicke auf „Speichern und weiter“. Die Standard-Spracheinstellung ist„Englisch„.
Wähle das Installationsprofil für deine Drupal-Installation. Klicke dann auf„Speichern und weiter“.
Du verwendest das„Standard„-Profil, das für neue Drupal-Nutzer empfohlen wird, oder das„Minimal„-Profil, wenn du mit Drupal vertraut bist, oder das„Demo„-Profil, das Beispiele für Drupal-Sites und -Konfigurationen enthält.
Gib nun die Details der MariaDB-Datenbank für deine Drupal-Installation ein und klicke auf„Speichern und weiter“. Wenn du MariaDB auf einem anderen Host verwendest, gibst du unter„Erweiterte Optionen“ die IP-Adresse des MariaDB-Server-Hosts ein.
Die Drupal-Installation wird nun gestartet.
Als Nächstes gibst du die Details deiner Drupal-Site-Konfiguration ein, darunter den Site-Namen und den Administrator-Benutzer deines Drupals. Wenn du fertig bist, klicke auf„Speichern und weiter„.
Jetzt solltest du die Seite erhalten, die dich darüber informiert, dass die Drupal-Installation abgeschlossen ist. Du siehst dann eine Meldung wie„Herzlichen Glückwunsch, du hast Drupal installiert!‚.
Du hast die Drupal-Installation nun abgeschlossen, musst aber noch weitere Konfigurationen vornehmen. In diesem Beispiel wirst du die Drupal-Konfiguration„trusted_host“ einrichten, die deine Drupal-Installation vor Angriffen auf den HTTP HOST-Header schützt.
Um die „trusted_host“ -Konfiguration zu aktivieren, musst du die Drupal-Konfiguration„/var/www/drupal/sites/default/settings.php“ bearbeiten.
Führe Folgendes aus, um die Datei„/var/www/drupal/sites/default/settings.php“ schreibbar zu machen. Öffne die Datei dann mit deinem Texteditor. In dieser Demo verwenden wir„nano„.
sudo chmod 644 /var/www/drupal/sites/default/settings.php sudo nano /var/www/drupal/sites/default/settings.php
Drücke„Strg+w„, um nach dem Muster„trusted_host“ zu suchen. Füge dann die folgende Konfiguration in die Datei ein und achte darauf, dass der Domainname mit deiner Drupal-Installation übereinstimmt. Der Domänenname sollte in Regex formatiert sein.
$settings['trusted_host_patterns'] = [ '^hwdomain\.io$', ];
Speichere die Konfiguration und beende sie, wenn du fertig bist. Ändere dann noch einmal die Berechtigung der Datei, um sie mit folgendem Befehl unbeschreibbar zu machen.
sudo chmod 444 /var/www/drupal/sites/default/settings.php
Gehe schließlich zurück zu deinem Webbrowser und rufe den Statusbericht deiner Drupal-Installation auf (z.B.: https://hwdomain.io/admin/reports/status).
Dort siehst du die detaillierten Serverkonfigurationen deiner Drupal-Installation. Außerdem kannst du sehen, dass alle 25 Drupal-Konfigurationen erfolgreich überprüft wurden.
Scrolle die Seite nach unten und du siehst die detaillierten Systemkonfigurationen deiner Drupal-Installation. Im Folgenden siehst du, dass die Einstellungen„trusted_host“ und„Upload Progress“ aktiviert sind.
Fazit
In dieser Anleitung hast du die neueste Version von Drupal v9 auf einem Ubuntu 22.04 Server installiert und konfiguriert. Außerdem hast du die grundlegende Installation des LAMP-Stacks (Linux, Apache, MariaDB und PHP) auf dem Ubuntu-System und die grundlegende Installation der PHP-Erweiterung aus dem PECL-Repository (PHP Extension Community Library) gelernt.
Jetzt hast du Drupal installiert und mit SSL-Zertifikaten und aktivierten „trusted_host“-Einstellungen gesichert. Du kannst deine aktuelle Drupal-Installation erweitern, indem du Themes für deine Website installierst und einige zusätzliche Drupal-Plugins installierst.