So installierst du den LEMP-Stack (Linux, Nginx, PHP und MariaDB) auf Ubuntu 24.04
Der LEMP Stack (Linux, Nginx, MySQL/MariaDB und PHP) ist eine Gruppe von freien und quelloffenen Softwareanwendungen für das Hosting und die Entwicklung von PHP-Webanwendungen. Der LEMP Stack kann sowohl für statische als auch für dynamische Webanwendungen eingesetzt werden.
Diese Anleitung zeigt dir, wie du den LEMP Stack (Linux, Nginx, MySQL/MariaDB und PHP) auf Ubuntu 24.04 „Noble Numbat“ installierst. Außerdem zeigen wir dir, wie du den MariaDB-Server absicherst und eine Nginx-Server-Blockkonfiguration erstellst, um Websites oder Domainnamen zu hosten.
Voraussetzungen
Bevor du beginnst, stelle sicher, dass du Ubuntu 24.04 „Noble Numbat“ mit dem Benutzer root oder als sudo/administrator mit Nicht-Root-Rechten verwendest. Außerdem musst du sicherstellen, dass die UFW (Uncomplicated Firewall) läuft und aktiviert ist.
Installation des Webservers Nginx
Nginx oder engine-x ist der beliebteste Webserver im Internet. Er wurde populär, weil Nginx mit minimalen Systemressourcen gleichzeitig einen hohen Datenverkehr bewältigen kann. In diesem ersten Schritt wirst du den Nginx-Webserver auf dem Ubuntu-Server installieren.
Bevor du die Pakete installierst, aktualisiere deine Ubuntu-Paketliste mit dem folgenden Befehl.
sudo apt update
Installiere den Nginx-Webserver mit dem folgenden Befehl auf deinem Ubuntu-Rechner. Gib Y ein, um die Installation zu bestätigen, wenn du dazu aufgefordert wirst.
sudo apt install nginx
Sobald die Installation abgeschlossen ist, sollte der Nginx-Dienst auf deinem System laufen und aktiviert sein. Überprüfe den Nginx-Dienst mit dem unten stehenden Befehl.
sudo systemctl is-enabled nginx sudo systemctl status nginx
Du solltest sehen, dass der Nginx-Dienst„aktiviert“ ist und der aktuelle Status„aktiv (läuft)“ lautet.
Bevor du auf Nginx zugreifen kannst, musst du sowohl den HTTP- als auch den HTTPS-Port auf deinem Ubuntu-Server über die UFW (Uncomplicated Firewall) öffnen.
Führe den folgenden„ufw„-Befehl aus, um das Profil„Nginx Full“ zu aktivieren, das den HTTP- und HTTPS-Zugang zu deinem Ubuntu-Server ermöglicht.
sudo ufw allow 'Nginx Full'
Überprüfe nun die UFW-Regeln mit dem folgenden Befehl. Stelle sicher, dass das Profil„Nginx Full“ mit dem Status „ALLOW“ aktiviert ist.
sudo ufw status
Rufe abschließend http://192.168.5.30/ mit deinem bevorzugten Webbrowser auf, um auf deine Nginx-Installation zuzugreifen. Wenn du erfolgreich bist, solltest du die Standardseite„index.html“ wie die folgende erhalten:
Installation des MariaDB-Servers
Nach der Installation von Nginx installierst du den MariaDB-Server unter Ubuntu. In diesem Beispiel installierst du MariaDB über das Ubuntu-Repository und sicherst dann die MariaDB-Installation mit dem Dienstprogramm„mariadb-secure-installation„.
Um den MariaDB-Server unter Ubuntu zu installieren, führe den folgenden Befehl„apt install“ aus. Gib Y ein und drücke ENTER, um mit dem Prozess fortzufahren.
sudo apt install mariadb-server
Sobald die Installation abgeschlossen ist, überprüfe den MariaDB-Dienst mit dem folgenden Befehl. Dadurch wird dir der Status des MariaDB-Dienstes angezeigt.
sudo systemctl is-enabled mariadb sudo systemctl status mariadb
Der MariaDB-Dienst ist„aktiviert“ und hat den aktuellen Status„aktiv (läuft)„.
Sobald du den MariaDB-Server installiert hast, musst du ihn mit„mariadb-secure-installation“ sichern. Damit kannst du das MariaDB Root-Passwort einrichten, die Remote-Authentifizierung für den Root-Benutzer deaktivieren und außerdem unnötige Datenbanken und Berechtigungen aus deiner MariaDB-Serverinstallation entfernen.
Führe den Befehl„mariadb-secure-installation“ aus, um den MariaDB-Server zu sichern.
sudo mariadb-secure-installation
Nun wirst du nach den folgenden MariaDB-Serverkonfigurationen gefragt:
Drücke ENTER, wenn du nach dem MariaDB Root-Passwort gefragt wirst.
Enter current password for root (enter for none): OK, successfully used password, moving on...
Gib’n‚ ein, wenn du zur unix_socket-Authentifizierung wechseln willst.
Switch to unix_socket authentication [Y/n] n ... skipping.
Gib Y ein, um das MariaDB Root-Passwort zu konfigurieren. Gib dann dein neues Passwort ein und wiederhole den Vorgang.
Change the root password? [Y/n] Y New password: Re-enter new password: Password updated successfully! Reloading privilege tables.. ... Success!
Gib Y ein, um den anonymen Standardbenutzer von deiner MariaDB-Serverinstallation zu entfernen.
Remove anonymous users? [Y/n] Y ... Success!
Gib Y ein, um die Fernanmeldung für den MariaDB-Root-Benutzer zu deaktivieren. Der Root-Benutzer sollte sich immer von localhost aus anmelden.
Disallow root login remotely? [Y/n] Y ... Success!
Tippe nun erneut Y ein, um den Standard-Datenbanktest und seine Berechtigungen von deinem MariaDB-Server zu entfernen.
Remove test database and access to it? [Y/n] Y - Dropping test database... ... Success! - Removing privileges on test database... ... Success!
Gib Y ein, um die Berechtigungstabellen neu zu laden und alle Änderungen, die du bisher vorgenommen hast, anzuwenden.
Reload privilege tables now? [Y/n] Y ... Success!
Wenn du fertig bist, siehst du die folgende Meldung:
All done! If you've completed all of the above steps, your MariaDB installation should now be secure.
Thanks for using MariaDB!
Installation von PHP-FPM
PHP-FPM (FastCGI Process Manager) ist eine Alternative zur FastCGI-Implementierung für PHP. Sie wird meist für Websites mit hohem Datenverkehr und Nginx als Webserver verwendet. In diesem Abschnitt installierst du PHP-FPM mit einigen zusätzlichen Erweiterungen, wie mysqli für den MySQL/MariaDB-Treiber, opcache und APCu für das Caching.
Installiere PHP-FPM mit folgendem Befehl auf deinem Ubuntu-Server. Wenn du dazu aufgefordert wirst, gib Y ein und drücke ENTER, um fortzufahren.
sudo apt install php-fpm php-mysql php-curl php-gd php-json php-intl php-bcmath php-opcache php-apcu php-mbstring php-fileinfo php-xml php-soap php-tokenizer php-zip
Nachdem die Installation abgeschlossen ist, sollte der PHP-FPM-Dienst laufen. Überprüfe den Status des PHP-FPM-Dienstes mit dem folgenden Befehl.
sudo systemctl is-enabled php8.3-fpm sudo systemctl status php8.3-fpm
Wie du unten sehen kannst, ist der PHP-FPM beim Systemstart„aktiv (läuft)“ und„aktiviert„:
Unter Ubuntu wird der PHP-FPM standardmäßig unter der Datei sock ausgeführt. Es ist wichtig, den Pfad der PHP-FPM sock-Datei zu kennen, die für die Integration mit dem Nginx-Webserver verwendet wird.
Überprüfe den Pfad der PHP-FPM sock-Datei mit dem folgenden Befehl.
ss -pl | grep php
In der folgenden Ausgabe siehst du, dass sich die PHP-FPM-Sock-Datei unter„/run/php/php8.3-fpm.sock“ befindet.
Nginx mit PHP-FPM einbinden
Nachdem du PHP-FPM installiert hast, ist es an der Zeit, es in den Nginx-Webserver zu integrieren. Dazu musst du den genauen Pfad der PHP-FPM-Sock-Datei kennen und die standardmäßige Nginx-Serverblockdatei ändern.
Öffne die Serverblock-Konfiguration„/etc/nginx/sites-available/default“ mit dem folgenden Editor-Befehl nano.
sudo nano /etc/nginx/sites-available/default
Hebe die Kommentare in den folgenden Zeilen auf und stelle sicher, dass du den Pfad der PHP-FPM sock-Datei mit dem neuen Ort änderst.
# pass PHP scripts to FastCGI server # location ~ \.php$ { include snippets/fastcgi-php.conf; # # With php-fpm (or other unix sockets): fastcgi_pass unix:/run/php/php8.3-fpm.sock; # # With php-cgi (or other tcp sockets): # fastcgi_pass 127.0.0.1:9000; }
Speichere die Datei und beende den Editor.
Führe nun den unten stehenden„nginx„-Befehl aus, um deine Nginx-Syntax zu überprüfen. Du musst diesen Befehl ausführen, nachdem du Änderungen an der Nginx-Konfiguration vorgenommen hast.
sudo nginx -t
Wenn du eine korrekte Nginx-Syntax hast, solltest du eine Bestätigung wie die folgende erhalten:
Als Nächstes führst du den folgenden Befehl aus, um den Nginx-Dienst neu zu starten und deine Integration zwischen Nginx und PHP-FPM anzuwenden.
sudo systemctl restart nginx
Nachdem Nginx neu gestartet wurde, kannst du deine Integration anhand der PHPINFO-Datei überprüfen. Führe den folgenden Befehl aus, um die PHPINFO-Datei„info.php“ im Standard-Web-Root-Verzeichnis„/var/www/html/“ zu erstellen.
echo "<?php phpinfo(); ?>" > /var/www/html/info.php
Gehe schließlich zurück zu deinem Webbrowser und besuche http://192.168.5.30/info.php. Wenn deine Integration von Nginx und PHP-FPM erfolgreich war, solltest du folgendes sehen:
Du kannst unten sehen, dass PHP 8.3 mit der Server-API PHP-FPM unter dem Nginx-Webserver läuft.
Wenn du auf der Seite nach unten scrollst, siehst du, dass die PHP-Erweiterung mysqli/mysqlnd ebenfalls installiert ist.
Schließlich siehst du auch, dass das Caching über APC in deiner PHP-Installation aktiviert ist.
Nginx-Serverblock erstellen (virtueller Host)
Ein Serverblock ist nur ein anderer Name für einen „virtuellen Host“ für einen Nginx-Webserver. Er wird verwendet, um mehrere Websites oder Domainnamen auf einem einzigen Server zu hosten. In diesem Abschnitt erfährst du, wie du einen Nginx-Serverblock erstellst.
Bevor du die Konfiguration des Serverblocks erstellst, führe den folgenden Befehl aus, um ein neues Web-Root-Verzeichnis „/var/www/newsite/public_html“ und eine benutzerdefinierte Seite „index.html“ zu erstellen.
mkdir -p /var/www/newsite/public_html echo "Welcome to newsite.com" > /var/www/newsite/public_html/index.html
Führe nun den unten stehenden Befehl aus, um den Eigentümer des Verzeichnisses„/var/www/newsite“ auf den Benutzer„www-data“ zu ändern. Auf dem Ubuntu-System läuft der Nginx-Webserver unter dem Benutzer„www-data„.
sudo chown -R www-data:www-data /var/www/newsite
Als Nächstes führst du den folgenden nano-Editor-Befehl aus, um eine neue Serverblock-Konfiguration „/etc/nginx/sites-available/newsite“ zu erstellen.
sudo nano /etc/nginx/sites-available/newsite
Füge die unten stehende Konfiguration ein und achte darauf, dass du die Option server_name durch deinen Domänennamen und das Web-Root-Verzeichnis durch den neuen Pfad wie„/var/www/newsite/public_html“ ersetzt.
server { listen 80; server_name newsite.com; root /var/www/newsite/public_html; index index.html; location ~ \.php$ { include snippets/fastcgi-php.conf; fastcgi_pass unix:/run/php/php8.3-fpm.sock; } location / { try_files $uri $uri/ =404; } }
Wenn du fertig bist, speichere und beende die Datei.
Führe nun den folgenden Befehl aus, um die Serverblockkonfiguration„newsite“ zu aktivieren. Mit diesem Befehl erstellst du einen neuen symbolischen Link von der Datei„/etc/nginx/sites-available/newsite“ zum Verzeichnis„/etc/nginx/sites-enabled/„.
sudo ln -s /etc/nginx/sites-available/newsite /etc/nginx/sites-enabled/
Nachdem der Serverblock aktiviert ist, führe den unten stehenden„nginx„-Befehl aus, um die Nginx-Syntax zu überprüfen.
sudo nginx -t
Wenn kein Fehler auftritt, solltest du die Ausgabe „… syntax is ok / … test is successful“ erhalten.
Führe abschließend den unten stehenden Befehl aus, um den Nginx-Webserver neu zu starten und deine neue Serverblockkonfiguration anzuwenden. Damit sollte die Konfiguration deines Serverblocks von deinem lokalen Rechner aus zugänglich sein.
sudo systemctl restart nginx
Testen deiner Serverblock-Konfiguration
Um sicherzustellen, dass deine Nginx-Serverblockkonfiguration erfolgreich ist, greifst du von deinem lokalen Computer aus auf den Domainnamen deiner Serverblockkonfiguration zu. Wenn du den öffentlichen Domainnamen verwendest, rufst du den Domainnamen direkt auf. Wenn du jedoch eine lokale Domain verwendest, bearbeite die Datei „hosts“ auf deinem lokalen Computer.
- Für Linux- und MacOS-Benutzer bearbeitest du die Datei„/etc/hosts“ als root/administrative Rechte.
- Für Windows-Benutzer bearbeitest du die Datei‚C:\Windows\System32\drivers\etc\hosts‚ als Administrator.
Füge die IP-Adresse und den Domänennamen deines Servers wie folgt hinzu:
192.168.5.30 newsite.com
Speichere die Datei und beende sie.
Öffne nun deinen Webbrowser und rufe http://newsite.com/ auf. Wenn die Konfiguration des Nginx-Servers erfolgreich war, solltest du die von dir erstellte Seite „index.html“ wie folgt sehen:
Fazit
Herzlichen Glückwunsch! Du hast jetzt den LEMP Stack (Linux, Nginx, MySQL/MariaDB und PHP) auf Ubuntu 24.04 „Noble Numbat“ installiert. Außerdem hast du die MariaDB Serverinstallation gesichert und einen Nginx Serverblock erstellt, um mehrere Websites zu hosten.