Drupal CMS mit Apache auf Debian 12 installieren

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 ist eines der am weitesten verbreiteten CMS im Internet, das von mindestens 14% der 10.000 größten Websites im Internet genutzt wird, und wird für Websites von globalen Unternehmen, Regierungen, Bildungseinrichtungen und Institutionen eingesetzt. Drupal bietet 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 Drupal auf einem Debian 12 Server installierst. Wir werden Drupal auf dem LAMP-Stack (Apache2, MariaDB und PHP) installieren und Drupal mit SSL/TLS-Zertifikaten von Letsencrypt sichern.

Voraussetzungen

Überprüfe zunächst, ob du die folgenden Voraussetzungen hast:

  • Einen Debian 12 Server.
  • Einen Nicht-Root-Benutzer mit Administrator-Rechten.
  • Einen Domainnamen, der auf die IP-Adresse deines Servers zeigt.

Installieren der Abhängigkeiten

Drupal ist ein Open-Source Content Management System, das in PHP geschrieben ist und MySQL/MariaDB als Datenbank verwendet. Um Drupal zu installieren, musst du sowohl das PHP- als auch das MySQL/MariaDB-Paket auf deinem System installieren.

Im folgenden Schritt installierst du Paketabhängigkeiten für Drupal, darunter den LAMP-Stack (Apache2, MariaDB und PHP), den Composer PHP-Abhängigkeitsmanager und einige zusätzliche PHP-Erweiterungen.

Führe zunächst den folgenden apt-Befehl aus, um deinen Debian-Paketindex zu aktualisieren und aufzufrischen.

sudo apt update

Nach der Aktualisierung installierst du die Paketabhängigkeiten, indem du den folgenden Befehl ausführst. Mit dem folgenden Befehl installierst du das LAMP-Stack-Paket (Apache2, MariaDB und PHP), den Composer PHP Dependency Manager und zusätzliche PHP-Erweiterungen, die von Drupal benötigt werden.

sudo apt install apache2 mariadb-server composer 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

Gib y ein, um mit der Installation fortzufahren.

Abhängigkeiten installieren

Nachdem die Abhängigkeiten installiert wurden, überprüfe jede Abhängigkeit, um sicherzustellen, dass die Installation erfolgreich war.

Überprüfe den apache2-Dienst mit dem folgenden Befehl. Dadurch wird sichergestellt, dass der apache2-Dienst läuft und aktiviert ist.

sudo systemctl is-enabled apache2
sudo systemctl status apache2

Die angezeigte Ausgabe verrät, dass der apache2-Dienst läuft und aktiviert ist.

apache2 prüfen

Überprüfe nun den mariadb-Dienst, indem du den folgenden Befehl ausführst.

sudo systemctl is-enabled mariadb
sudo systemctl status mariadb

Die Ausgabe sollte in etwa so aussehen:

mariadb prüfen

Als Nächstes überprüfst du den Speicherort der Composer-Binärdatei und die installierte Version mit dem folgenden Befehl.

which composer
sudo -u www-data composer -v

Die Ausgabe bestätigt, dass Composer 2.5 unter /usr/bin/composer installiert ist.

Komponist prüfen

Überprüfe abschließend die PHP-Version und die PHP-fähigen Module mit dem folgenden Befehl.

php -v
php -m

PHP 8.2 sollte auf deinem Debian-Rechner installiert sein und die Standard-PHP-Erweiterungen sollten aktiviert sein.

php prüfen

MariaDB Server konfigurieren

Nachdem alle Abhängigkeiten installiert sind, musst du im nächsten Schritt deine MariaDB Serverinstallation sichern und eine neue Datenbank und einen neuen Benutzer anlegen, die von Drupal verwendet werden. Du sicherst MariaDB mit dem Dienstprogramm mariadb-secure-installation und erstellst dann eine neue Datenbank und einen neuen Benutzer über die Befehlszeile des mariadb-Clients.

Führe den folgenden Befehl mariadb-secure-installation aus, um deinen MariaDB-Server zu sichern.

sudo mariadb-secure-installation

Während des Prozesses wirst du nach den folgenden Konfigurationen gefragt:

  • Die Standardinstallation von MariaDB wird ohne Passwort geliefert. Drücke ENTER, wenn du nach dem Passwort gefragt wirst.
  • Gib nun Y ein, um das MariaDB Root-Passwort einzurichten. Gib dann das neue Passwort für MariaDB ein und wiederhole das Passwort.
  • Gib Y ein, um den anonymen Benutzer aus deiner MariaDB-Installation zu entfernen.
  • Gib erneut Y ein, wenn du aufgefordert wirst, die Fernanmeldung für den MariaDB-Root-Benutzer zu deaktivieren.
  • Gib Y ein, um den Standard-Datenbanktest aus deiner MariaDB zu entfernen.
  • Gib schließlich Y ein, um die Tabellenberechtigungen neu zu laden und die neuen Änderungen anzuwenden.

Als Nächstes meldest du dich am MariaDB-Server an, indem du den unten stehenden Befehl mariadb ausführst. Gib dein MariaDB-Root-Passwort ein, wenn du dazu aufgefordert wirst.

sudo mariadb -u root -p

Sobald du eingeloggt bist, führe die folgenden Abfragen aus, um eine neue Datenbank drupaldb und einen neuen Benutzer drupal auf deinem MariaDB-Server zu erstellen. Achte darauf, dass du das Passwort mit deinem Passwort änderst.

CREATE DATABASE drupaldb;
CREATE USER drupal@localhost IDENTIFIED BY 'password';
GRANT ALL ON drupaldb.* TO drupal@localhost WITH GRANT OPTION;
FLUSH PRIVILEGES;

Datenbankbenutzer anlegen

Führe abschließend die folgende Abfrage aus, um sicherzustellen, dass der Benutzer drupal auf die Datenbank drupaldb zugreifen kann.

SHOW GRANTS FOR drupal@localhost;

Die unten angezeigte Ausgabe bestätigt, dass der Benutzer drupal auf die Datenbank drupaldb für die Drupal-Installation zugreifen kann.

Datenbankbenutzer verifizieren

PHP konfigurieren

Nachdem du den MariaDB-Server konfiguriert hast, musst du PHP für die Drupal-Installation konfigurieren:

  • Installation der Uploadprogress-Erweiterung über PECL (PHP Extension Community Library).
  • Bearbeiten der Datei php.ini.

Los geht’s.

Installation der Uploadprogress-Erweiterung über PECL

Die Uploadprogress-Erweiterung wird verwendet, um den Upload-Fortschritt von Dateien anzuzeigen und zu verfolgen, einschließlich der Upload-Geschwindigkeit und der geschätzten Restzeit. Die uploadprogress-Erweiterung ist auf PECL verfügbar und muss manuell über die pecl-Befehlszeile installiert werden.

Führe den folgenden pecl-Befehl aus, um uploadprogress auf deinem Debian-System zu installieren.

sudo pecl install uploadprogress

Die Installation von uploadprogress sollte beginnen.

uploadprogress installieren

Nachdem die Installation abgeschlossen ist, führe den folgenden Befehl aus, um die Erweiterung uploadprogress zu deiner PHP-Installation hinzuzufügen. Dadurch wird eine neue PHP-Erweiterungskonfiguration /etc/php/8.2/mods-available/uploadprogress.ini erstellt.

cat <<EOF | sudo tee /etc/php/8.2/mods-available/uploadprogress.ini
; configuration for php uploadprogress module
; priority 15
extension=uploadprogress.so
EOF

Führe abschließend den folgenden Befehl aus, um die Erweiterung uploadprogress in deiner PHP-Installation zu aktivieren.

sudo ln -s /etc/php/8.2/mods-available/uploadprogress.ini /etc/php/8.2/apache2/conf.d/15-uploadprogress.ini

Uploadfortschritt aktivieren

Bearbeiten der Datei php.ini

Öffne die standardmäßige php.ini-Konfiguration /etc/php/8.2/apache2/php.ini mit dem folgenden nano-Editor-Befehl.

sudo nano /etc/php/8.2/apache2/php.ini

Ändere die Standard-PHP-Konfiguration wie folgt. Achte darauf, dass du die Optionen memory_limit und date.timezone an deine Serverumgebung anpasst.

memory_limit = 512M
upload_max_filesize = 60M
max_execution_time = 300
date.timezone = Europe/Amsterdam

Speichere und beende die Datei, wenn du fertig bist.

Führe als Nächstes den Befehl systemctl aus, um den apache2-Dienst neu zu starten und die vorgenommenen Änderungen zu übernehmen.

sudo systemctl restart apache2

Führe dann den folgenden Befehl aus, um eine neue PHPINFO-Datei /var/www/html/info.php zu erstellen und deine PHP-Konfiguration zu überprüfen.

cat <<EOF | sudo tee /var/www/html/info.php
<?php
phpinfo();
?>
EOF

Starte deinen Webbrowser und rufe deine Server-IP-Adresse auf, z. B. http://192.168.10.15/info.php. Wenn deine PHP-Konfiguration erfolgreich ist, solltest du die PHPINFO-Seite wie die folgende sehen:

phpinfo

Herunterladen des Drupal-Quellcodes

Nachdem du den MariaDB-Server und die PHP-Installation konfiguriert hast, lädst du den Drupal-Quellcode herunter und installierst die PHP-Abhängigkeiten über Composer. In diesem Fall lädst du die neueste Version von Drupal herunter.

Verschiebe dein Arbeitsverzeichnis /var/www und lade Drupal mit dem unten stehenden wget-Befehl herunter. Der Quellcode von Drupal ist in der Datei drupal.tar.gz enthalten.

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

Entpacke die Datei drupal.tar.gz mit dem unten stehenden tar-Befehl. Benenne dann das entpackte Verzeichnis in drupal um. Das bedeutet, dass das Web-Root-Verzeichnis für Drupal /var/www/drupal sein wird.

tar -xvf drupal.tar.gz
mv drupal-* /var/www/drupal

Zum Schluss führst du den folgenden Befehl aus, um die Rechte und den Eigentümer des Drupal-Web-Root-Verzeichnisses /var/www/drupal zu ändern. Dieses Verzeichnis gehört nun dem Benutzer www-data mit der Berechtigung 755.

sudo chown -R www-data:www-data /var/www/drupal/
sudo chmod -R 755 /var/www/drupal/

Apache2 Virtual Host konfigurieren

Nachdem du Drupal heruntergeladen und das Web-Root-Verzeichnis /var/www/drupal konfiguriert hast, musst du im nächsten Schritt eine neue Konfiguration für den virtuellen Apache2-Host erstellen, auf dem Drupal laufen soll. Bevor du fortfährst, musst du sicherstellen, dass der Domainname auf die IP-Adresse deines Servers zeigt.

Führe zunächst den folgenden Befehl aus, um einige Apache2-Module zu aktivieren, die für Drupal benötigt werden.

sudo a2enmod rewrite ssl headers deflate

Apache2-Module aktivieren

Anschließend erstellst du mit dem folgenden nano-Editor-Befehl eine neue virtuelle Host-Konfiguration /etc/apache2/sites-available/drupal.conf.

sudo nano /etc/apache2/sites-available/drupal.conf

Füge die folgende Konfiguration ein und achte darauf, dass du die Option ServerName durch deinen Domainnamen ersetzt.

<VirtualHost *:80>
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

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

Wenn du fertig bist, speichere und schließe die Datei.

Als Nächstes führst du den folgenden Befehl aus, um die virtuelle Hostdatei drupal.conf zu aktivieren und deine Apache2-Syntax zu überprüfen.

sudo a2ensite drupal.conf
sudo apachectl configtest

Wenn du eine korrekte Apache2-Syntax hast, wird die Ausgabe Syntax OK angezeigt.

vhost-Einrichtung

Starte nun den Apache2-Dienst mit dem folgenden Befehl neu, um die vorgenommenen Änderungen zu übernehmen.

sudo systemctl restart apache2

Erzeugen von SSL/TLS-Zertifikaten Letsencrypt für Drupal

Im folgenden Schritt wirst du deine Drupal-Installation mit SSL/TLS-Zertifikaten von Letsencrypt sichern. Dazu musst du Certbot und das Certbot Apache Plugin auf deinem Debian-System installieren und dann SSl/TLS-Zertifikate für deinen Drupal-Domainnamen generieren.

Installiere Certbot und das Certbot-Apache-Plugin mit dem folgenden apt install-Befehl. Gib y ein, um mit der Installation fortzufahren.

sudo apt install certbot python3-certbot-apache

certbot installieren

Als Nächstes führst du den folgenden Certbot-Befehl aus, um SSL/TLS-Zertifikate für deine Drupal-Website zu generieren. Achte darauf, dass du die E-Mail-Adresse und den Domainnamen im folgenden Befehl änderst.

sudo certbot --apache --agree-tos --redirect --hsts --staple-ocsp --email alice@hwdoamin.io -d hwdomain.io

Sobald der Vorgang abgeschlossen ist, sind deine SSL/TLS-Zertifikate im Verzeichnis /etc/letsencrypt/live/domain.com verfügbar. Deine Drupal-Installation wird automatisch mit HTTPS konfiguriert, das über das Certbot Apache Plugin eingerichtet wird.

Installation von Drupal über den Web-Installer

Starte deinen Webbrowser und rufe den Domainnamen deiner Drupal-Website auf, z. B. http://hwdomain.io/. Wenn alles gut geht, solltest du auf HTTPS-Verbindungen umgeleitet werden und die Drupal-Installationsseite wird angezeigt.

Wähle die Standardsprache, die für die Drupal-Installation verwendet werden soll, und klicke auf Speichern und weiter.

Sprache wählen

Wähle das Drupal-Installationsprofil, das du verwenden möchtest. Das Standard-Profil wird für neue Website-Betreiber empfohlen, während das Minimal-Profil ein umfassendes Verständnis von Drupal erfordert. Du kannst aber auch ein Profil mit Demo wählen.

Im folgenden Beispiel wird das Profil Standard verwendet. Klicke dann auf Speichern und fahre fort.

Installationsprofil auswählen

Jetzt überprüft der Drupal Web Installer deine Systemumgebung für die Drupal-Installation. Du solltest zur Datenbankkonfiguration weitergeleitet werden, wenn dein Server die Anforderungen von Drupal erfüllt.

Gib den Namen, den Benutzer und das Passwort deiner MariaDB-Datenbank ein, die Drupal verwenden soll. Klicke dann auf Speichern und fahre wieder fort.

Datenbank-Konfiguration

Nachdem du die Datenbank konfiguriert hast, sollte die Installation von Drupal beginnen.

Montagebeginn

Sobald der Installationsprozess abgeschlossen ist, konfigurierst du deine Drupal-Website. Gib den Namen der Website, die E-Mail-Adresse der Website, den Benutzernamen des Administrators, das Passwort, das Standardland und die Zeitzone ein. Klicke dann auf Speichern und fahre fort.

Standortkonfiguration

Wenn deine Drupal-Installation erfolgreich war, sollte die Meldung„Congratulations, you installed Drupal!“ auf deinem Bildschirm erscheinen.

drupal installiert

Von hier aus kannst du deine Drupal-Inhalte, Website-Strukturen und die Drupal-Administration verwalten und den Status deiner Drupal-Installation überprüfen. Klicke auf Verwalten und wähle das Menü Konfiguration, um deine Drupal-Installation zu konfigurieren.

Standortkonfiguration

Zusätzliche Konfiguration für Drupal

Um diese Anleitung zu vervollständigen, musst du einige zusätzliche Konfigurationen für dein Drupal vornehmen.

Gehe zunächst zurück zu deinem Terminalserver und führe den folgenden Befehl aus, um die Berechtigung der Datei settings.php zu ändern und öffne sie mit dem nano-Editor.

sudo chmod 644 /var/www/drupal/sites/default/settings.php
sudo nano /var/www/drupal/sites/default/settings.php

Suche den Abschnitt„trusted_host_patterns“ und gib den Domainnamen deiner Drupal-Installation wie folgt ein.

$settings['trusted_host_patterns'] = [
  '^hwdomain\.io$',
];

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

Führe nun den folgenden Befehl aus, um die Berechtigung der Datei settings.php auf 444 zurückzusetzen.

sudo chmod 444 /var/www/drupal/sites/default/settings.php

Als Nächstes wählst du das Menü Berichte und klickst auf Statusberichte.

Lageberichte

Du solltest detaillierte Informationen über deine Drupal-Installation sehen. Im folgenden Screenshot ist Drupal 10 mit Apache2 Webserver 2.4, MariaDB Server 10.11 und PHP 8.2 installiert.

statusbericht drupal

Klicke nun auf den Link Details im Statusbericht und du erhältst den Detailbericht zu deiner Drupal-Serverumgebung.

Statusbericht

Fazit

Nach dieser Schritt-für-Schritt-Anleitung hast du das Drupal Content Management System auf dem Debian 12-Server mit dem LAMP-Stack und SSL/TLS Letsencrypt installiert. Von hier aus kannst du nun Drupal als deine Website nutzen und neue Themes und Erweiterungen für dein Drupal CMS installieren.

Das könnte dich auch interessieren …