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.

lighttpd installieren

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

lighttpd starten

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.

ufw firewall einrichten

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

lighttpd index

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.

mariadb installieren

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.

mysql_sichere_Installation

Gib nun„n“ ein, um die Standard-Authentifizierungsmethode (für den MariaDB-Root-Benutzer) beizubehalten.

kein unix_socket auth für root

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.

Root-Passwort einrichten

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.

Fernanmeldung deaktivieren

Gib nun erneut Y ein, um den anonymen Standardbenutzer aus deiner MariaDB-Installation zu entfernen.

anonymen Benutzer entfernen

Gib noch einmal Y ein, um den Standard-Datenbanktest zu entfernen, auf den der anonyme Benutzer in MariaDB zugreifen kann.

Datenbank-Test entfernen

Gib schließlich erneut Y ein, um alle Tabellenberechtigungen auf deinem MariaDB-Server neu zu laden und die neuen Änderungen anzuwenden.

Tabellen neu laden Privilegien

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.

php-fpm installieren

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

php-fpm starten

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 prüfen

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

php-fpm lighttpd konfigurieren

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.

php info llmp

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

lighttpd virtueller Host

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.

lighttpd virtueller Host

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.

enable SSL/HTTPS Lighttpd

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.

Das könnte dich auch interessieren …