So installierst du Lighttpd mit MariaDB und PHP-FPM unter Ubuntu 22.04
Der LLMP Stack (Linux, Lighttpd, MariaDB und PHP-FPM) ist ein Software-Stack für die Bereitstellung von Webanwendungen. Jede Komponente des LLMP Stack ist kostenlos, quelloffen und kann auf mehreren Betriebssystemen installiert werden. Der LLMP Stack kann statische HTML-Seiten und PHP-Anwendungen wie WordPress, Drupal und Joomla bereitstellen.
Diese Anleitung zeigt dir, wie du den LLMP Stack (Linux, Lighttpd, MariaDB und PHP-FPM) auf dem aktuellen Ubuntu 22.04 System installierst und konfigurierst. In dieser Anleitung erfährst du auch, wie du den Virtual Host auf dem Lighttpd-Webserver einrichtest und SSL/HTTPS aktivierst.
Voraussetzungen
Für dieses Tutorial benötigen wir die folgenden Voraussetzungen:
- Einen Ubuntu 22.04 Server.
- Einen Nicht-Root-Benutzer mit Root-/Administrator-Rechten
Lighttpd Webserver installieren
Lighttpd oder Lighty ist ein Hochleistungs-Webserver, der als Proof-of-Concept für das c10k-Problem entwickelt wurde: „Wie kann man 10.000 Verbindungen parallel auf einem einzigen Server verarbeiten?
Der Lighttpd ist auf Geschwindigkeit, Sicherheit, geringes Gewicht und Flexibilität ausgelegt. Er hat eine minimale CPU- und Speichernutzung und bietet fortschrittliche Funktionen wie FastCGI, CGI, Auth, Komprimierung, URL-Rewriting und mehr.
Bevor du ein Paket installierst, führe den unten stehenden apt-Befehl aus, um den Paketindex deiner Ubuntu-Repositories zu aktualisieren und aufzufrischen.
sudo apt update
Installiere nun den Lighttpd Webserver mit dem folgenden Befehl.
sudo apt install lighttpd
Gib Y ein, um die Installation zu bestätigen und drücke ENTER, um fortzufahren. Nun beginnt die Installation von Lighttpd.
Nachdem die Installation von Lighttpd abgeschlossen ist, führe den folgenden Befehl aus, um den Lighttpd-Dienst zu starten und zu aktivieren.
sudo systemctl start lighttpd sudo systemctl enable lighttpd
Überprüfe und verifiziere den Lighttpd-Dienst mit dem folgenden Befehl. Du solltest sehen, dass der Lighttpd-Dienst läuft und aktiviert ist, d.h. er wird beim Systemstart automatisch ausgeführt.
sudo systemctl status lighttpd
Wenn du eine UFW-Firewall auf deinem Ubuntu-Rechner hast, musst du die Firewall-Regeln für den eingehenden Datenverkehr zum Lighttpd-Webserver hinzufügen.
Führe den unten stehenden ufw-Befehl aus, um die Lighttpd-Regeln zur UFW-Firewall hinzuzufügen, und überprüfe dann die Liste der UFW-Regeln wie folgt.
sudo ufw allow "Lighttpd Full" sudo ufw status
Du solltest sehen, dass das Anwendungsprofil „Lighttpd Full“ zur UFW-Firewall hinzugefügt wurde, was bedeutet, dass alle eingehenden HTTP- und HTTPS-Ports erlaubt sind.
Überprüfe nun das Verzeichnis „/var/www/html“ mit dem unten stehenden Befehl. Wenn du keine index.html-Datei siehst, kannst du sie mit dem unten stehenden Befehl erstellen.
ls -lah /var/www/html echo "<h1><center>Welcome to Lighttpd Web Server</center></h1>" > /var/www/html/index.html
Öffne deinen Webbrowser und rufe die IP-Adresse des Servers auf (z.B. http://192.168.5.28/). Du solltest die index.html Seite sehen.
Installation des MariaDB Servers
Nachdem du den Lighthttpd-Webserver installiert hast, ist es an der Zeit, den MariaDB-Server auf dem Ubuntu-System zu installieren. Hier erfährst du auch, wie du den MariaDB-Server mit dem Tool „mysql_secure_installation„, das im MariaDB-Paket enthalten ist, sicher installieren kannst.
Führe den folgenden apt-Befehl aus, um den MariaDB-Server zu installieren. Das Standard-Repository von Ubuntu stellt MariaDB v10.6 zur Verfügung.
sudo apt install mariadb-server
Gib nun Y ein, um die Installation zu bestätigen und drücke ENTER. Die MariaDB-Installation wird nun gestartet.
Nachdem die MariaDB-Installation abgeschlossen ist, führe den folgenden systemctl-Befehl aus, um den MariaDB-Dienst zu starten und zu aktivieren.
sudo systemctl start mariadb sudo systemctl enable mariadb
Überprüfe und verifiziere den MariaDB-Dienst mit dem folgenden Befehl. Du solltest sehen, dass der MariaDB-Dienst läuft.
sudo systemctl status mariadb
Als Nächstes richtest du den MariaDB-Einsatz mit dem Tool „mysql_secure_instalaltion“ ein. Damit kannst du das Root-Passwort für den MariaDB-Server einrichten, den Remote-Root-Login deaktivieren, die Standarddatenbank und den anonymen Benutzerzugang bereinigen usw.
Führe nun den Befehl „mysql_secure_installation“ wie unten beschrieben aus.
sudo mysql_secure_installation
Die Standardinstallation von MariaDB kommt ohne Root-Passwort. Drücke ENTER, um fortzufahren.
Gib nun„n“ ein, um die Standard-Authentifizierungsmethode (für den MariaDB-Root-Benutzer) beizubehalten.
Gib Y ein, um das Root-Passwort für deinen MariaDB-Server einzurichten. Achte darauf, dass du ein sicheres Passwort für deinen Einsatz verwendest.
Gib nun Y ein, um die Fernanmeldung für den MariaDB-Root-Benutzer zu deaktivieren. Wenn du dich nicht in einer Cluster-Umgebung befindest, ist es immer empfehlenswert, die Remote-Anmeldung für den MariaDB-Root-Benutzer zu deaktivieren.
Gib nun erneut Y ein, um den anonymen Standardbenutzer aus deiner MariaDB-Installation zu entfernen.
Gib noch einmal Y ein, um den Standard-Datenbanktest zu entfernen, auf den der anonyme Benutzer in MariaDB zugreifen kann.
Gib schließlich erneut Y ein, um alle Tabellenberechtigungen auf deinem MariaDB-Server neu zu laden und die neuen Änderungen anzuwenden.
Installation von PHP-FPM 8.1
Du hast nun den Lighttpd Webserver und den MariaDB Datenbankserver installiert. Jetzt installierst du den PHP-FPM auf deinem Ubuntu-System. Das Ubuntu-Repository stellt die neueste Version von PHP 8.1 zur Verfügung.
Führe den folgenden apt-Befehl aus, um PHP-FPM 8.1 auf deinem Ubuntu-System zu installieren.
sudo apt install php-fpm php-common php-mysql php-cli php-curl php-xml
Gib Y ein, um die Installation zu bestätigen und drücke ENTER. Die Installation wird nun beginnen.
Nachdem die Installation der PHP-FPM-Pakete abgeschlossen ist, führe den folgenden Befehl aus, um den PHP-FPM-Dienst zu starten und zu aktivieren.
sudo systemctl start php8.1-fpm sudo systemctl enable php8.1-fpm
Überprüfe und verifiziere den PHP-FPM-Dienst mit dem folgenden Befehl. Du solltest sehen, dass der PHP-FPM-Dienst läuft.
sudo systemctl status php8.1-fpm
Du kannst den PHP-FPM-Dienst auch mit dem Befehl „ss“ überprüfen. Der standardmäßige PHP-FPM-Prozess läuft unter der sock-Datei. Du kannst den PHP-FPM-Prozess mit dem folgenden Befehl überprüfen.
ss -pl | grep php
Du solltest sehen, dass der PHP-FPM-Dienst unter der Sock-Datei „/run/php/php8.1-fpm.sock“ läuft.
PHP-FPM mit Lighttpd konfigurieren
Die Installation der LLMP-Stack-Pakete ist abgeschlossen, aber du musst noch den Lighttpd-Webserver einrichten, damit er mit dem PHP-FPM-Dienst zusammenarbeiten kann. Das kannst du mithilfe der FastCGI-Module auf dem Lighttpd-Webserver tun.
Bearbeite zunächst die PHP-FPM-Konfigurationsdatei „/etc/php/8.1/fpm/php.ini“ mit dem Editor nano.
sudo nano /etc/php/8.1/fpm/php.ini
Füge die folgende Konfiguration in die Datei ein.
cgi.fix_pathinfo = 1
Speichere und schließe die Datei, wenn du fertig bist.
Starte nun den PHP-FPM-Dienst mit dem unten stehenden Befehl neu, um die Änderungen zu übernehmen.
sudo systemctl restart php8.1-fpm
Als nächstes führst du den folgenden Befehl aus, um die Lighttpd-Module „fastcgi“ und „fastcgi-php-fpm“ zu aktivieren.
sudo lighty-enable-mod fastcgi fastcgi-php-fpm
Bearbeite die Konfigurationsdatei „/etc/lighttpd/conf-available/15-fastcgi-php-fpm.conf“ mit dem Editor nano. Diese Datei ist die Konfiguration des fastcgi-php-fpm-Moduls, das für die Kommunikation mit der PHP-FPM-Socket-Datei verwendet wird.
sudo nano /etc/lighttpd/conf-available/15-fastcgi-php-fpm.conf
Ändere den Pfad der Socket-Option in„/run/php/php8.1-fpm.sock“ wie folgt.
## Use PHP-FPM service for PHP via FastCGI fastcgi.server += ( ".php" => (( "socket" => "/run/php/php8.1-fpm.sock", "broken-scriptfilename" => "enable" )) )
Speichere und schließe die Datei, wenn du fertig bist.
Führe abschließend den folgenden Befehl aus, um den Lighttpd-Dienst neu zu starten und die neuen Änderungen zu übernehmen. Jetzt ist dein LLMP-Stack bereit, sowohl statische HTML- als auch dynamische PHP-Webanwendungen zu bedienen
sudo systemctl restart lighttpd
Phpinfo testen
Um deine LLMP-Stack-Installation zu überprüfen, kannst du einfach das PHPINFO-Skript erstellen, das dir die detaillierte Konfiguration von Lighttpd und PHP-FPM anzeigt.
Führe den folgenden Befehl aus, um ein neues PHP-Skript „/var/www/html/info.php“ zu erstellen und ändere den Eigentümer auf den Benutzer „www-data„.
echo "<?php phpinfo(); ?>" > /var/www/html/info.php sudo chown -R www-data:www-data /var/www/html
Gehe zurück zu deinem Webbrowser und rufe die IP-Adresse des Ubuntu-Servers auf, gefolgt von dem URL-Pfad „/info.php„(http://192.168.5.28/info.php). Du solltest nun die detaillierte phpinfo-Seite im folgenden Screenshot sehen. Das bedeutet, dass die Konfiguration von Lighttpd und PHP-FPM abgeschlossen und erfolgreich ist.
Virtuellen Host auf Lighttpd einrichten
An diesem Punkt hast du die Installation und Konfiguration des LLMP-Stacks abgeschlossen. Der LLMP Stack ist außerdem bereit, eine dynamische PHP-Webanwendung über PHP-FPM zu betreiben. Jetzt erfährst du, wie du den Virtual Host auf dem Lighttpd-Webserver einrichtest. Der virtuelle Host ermöglicht es dir, mehrere Domainnamen auf einem einzigen Server oder einer einzigen IP-Adresse zu betreiben.
Führe nun den folgenden Befehl aus, um ein neues Verzeichnis„/etc/lighttpd/vhosts“ zu erstellen. In diesem Verzeichnis werden alle virtuellen Host-Konfigurationen des Lighttpd-Webservers gespeichert.
sudo mkdir -p /etc/lighttpd/vhosts/
Bearbeite nun die Lighttpd-Konfigurationsdatei„/etc/lighttpd/lighttpd.conf“ mit dem Editor nano.
sudo nano /etc/lighttpd/lighttpd.conf
Füge die folgende Konfiguration in die Datei ein.
include "/etc/lighttpd/vhosts/*.conf"
Speichere und schließe die Datei, wenn du fertig bist. Jetzt kannst du den virtuellen Lighttpd-Host einrichten.
Erstelle zunächst das Document Root-Verzeichnis für deinen virtuellen Host. In diesem Beispiel wird das Document Root-Verzeichnis„/var/www/hwdomain“ sein.
mkdir -p /var/www/hwdomain/
Erstelle eine neue Datei „index.html“ im Document Root-Verzeichnis „/var/www/hwdomain“ und ändere den Eigentümer auf den richtigen Benutzer „www-data“.
echo "<h1><center>Welcome to hwdomain.io virtual host</center></h1>" > /var/www/hwdomain/index.html sudo chown -R www-data:www-data /var/www/hwdomain
Als Nächstes erstellst du mit dem nano-Editor eine neue Konfigurationsdatei für den virtuellen Host„/etc/lighttpd/vhosts/hwdomain.conf„.
sudo nano /etc/lighttpd/vhosts/hwdomain.conf
Füge die folgende Konfiguration in die Datei ein. In diesem Beispiel wird die Domain „hwdomain.io“ für den virtuellen Host verwendet.
$HTTP["host"] =~ "(^|.)hwdomain.io$" { server.document-root = "/var/www/hwdomain" server.errorlog = "/var/log/lighttpd/hwdomain.io-error.log" accesslog.filename = "/var/log/lighttpd/hwdomain.io-access.log" }
Speichere und schließe die Datei, wenn du fertig bist.
Führe anschließend den folgenden Befehl aus, um die Lighttpd-Konfiguration zu prüfen und zu verifizieren. Wenn die Lighttpd-Konfiguration korrekt ist, siehst du eine Meldung wie„Syntax OK„.
sudo lighttpd -t -f /etc/lighttpd/lighttpd.conf
Starte nun den Lighttpd-Dienst neu, um die neue Konfiguration des virtuellen Hosts mit dem unten stehenden Befehl anzuwenden.
sudo systemctl restart lighttpd
Gehe zurück zu deinem Webbrowser und gib deinen Domainnamen in die Adressleiste ein (z.B. http://hwdomain.io/). Du solltest nun die Standardseite index.html für diesen virtuellen Host sehen.
Aktiviere HTTPS auf dem Lighttpd Webserver
Nachdem du den virtuellen Lighttpd-Host eingerichtet hast, erfährst du jetzt, wie du SSL/HTTPS auf dem Lighttpd-Webserver aktivierst.
Bevor du mit der Konfiguration von SSL beginnst, führe den folgenden Befehl aus, um das Modul „ssl“ für den Lighttpd-Webserver zu aktivieren. Dadurch wird eine Link-Datei zur„/etc/lighttpd/conf-enabled/10-ssl.conf“ erstellt, die die grundlegende SSL-Konfiguration für Lighttpd enthält. Außerdem musst du die SSL-Zertifikate für localhost mit dem Namen „server.pem“ erstellen.
sudo lighty-enable mod ssl
Führe nun den folgenden Befehl aus, um das SSL-Zertifikat für localhost mit dem Namen„server.pem“ zu erstellen und zu generieren.
openssl req -new -newkey rsa:2048 -nodes -keyout server.com.key -out server.com.csr openssl x509 -req -days 365 -in server.com.csr -signkey server.com.key -out server.com.crt
cat server.com.key server.com.crt > server.pem
Jetzt kannst du SSL/HTTPS in der Konfiguration des virtuellen Hosts „hwdomain.conf“ einrichten.
Bevor du mit der Konfiguration von SSL für den virtuellen Host beginnst, musst du sicherstellen, dass du SSL-Zertifikate für deinen Domainnamen erstellt hast. In diesem Beispiel lautet der Domainname „hwdomain.io“ und die SSL-Zertifikate sind im Verzeichnis „/etc/letsencrypt/live/hwdomain.io“ verfügbar.
Bearbeite die Konfiguration des virtuellen Hosts „/etc/lighttpd/vhosts/hwdomain.conf“ mit dem Editor nano.
sudo nano /etc/lighttpd/vhosts/hwdomain.conf
Ersetze die Konfiguration, die du gerade erstellt hast, durch die folgende Konfiguration.
$HTTP["scheme"] == "http" { $HTTP["host"] == "hwdomain.io" { url.redirect = ("/.*" => "https://hwdomain.io$0") } } $SERVER["socket"] == ":443" { ssl.engine = "enable" ssl.pemfile = "/etc/letsencrypt/live/hwdomain.io/fullchain.pem" ssl.privkey = "/etc/letsencrypt/live/hwdomain.io/privkey.pem" server.name = "hwdomain.io" server.document-root = "/var/www/hwdomain" server.errorlog = "/var/log/lighttpd/hwdomain.io-error.log" accesslog.filename = "/var/log/lighttpd/hwdomain.io-access.log" }
Speichere und schließe die Datei, wenn du fertig bist.
Als Nächstes führst du den folgenden Befehl aus, um die Konfiguration des Lighttpd-Webservers zu überprüfen und sicherzustellen, dass du eine Meldung wie „Syntax OK“ erhältst. Danach kannst du den Lighttpd-Dienst neu starten, um die neuen Änderungen zu übernehmen.
sudo lighttpd -t -f /etc/lighttpd/lighttpd.conf sudo systemctl restart lighttpd
Gehe schließlich zurück zu deinem Webbrowser und rufe den Domainnamen des virtuellen Hosts mit https vor der URL auf (z. B. https://hwdomain.io). Wenn deine SSL-Konfiguration erfolgreich war, siehst du das lokale Symbol auf der URL, wie im folgenden Screenshot zu sehen ist.
Fazit
Herzlichen Glückwunsch! Du hast den LLMP Stack (Linux, Lighttpd, MariaDB und PHP-FPM) erfolgreich auf dem Ubuntu 22.04 Server installiert. Du hast auch gelernt, wie du einen virtuellen Host auf dem Lighttpd-Webserver einrichtest und SSL/HTTPS auf dem Lighttpd für deinen Domainnamen aktivierst.