Der LEMP-Stack, bestehend aus Linux, Nginx (oft ausgesprochen als Engine X), MySQL und PHP, und ist eine Sammlung von Anwendungen, die auf einem Server installiert werden, um dynamische Webseiten bereitzustellen. In dieser Konfiguration übernimmt Nginx die Funktion des Webservers, MySQL dient als Datenbankserver, und PHP fungiert als dynamische Skriptsprache, die zahlreiche Web-Frameworks unterstützt. Diese Anleitung zeigt, wie du LEMP auf Rocky Linux 8 installieren kannst.
Voraussetzungen
- Stelle einen neuen Rocky Linux 8 Server bereit
- Melde dich als Benutzer mit sudo-Rechten an (kein Root-Account)
- Führe ein vollständiges Update des Servers durch
- Richte eine Domain ein und verknüpfe sie mit deinem Server
Passende Infrastruktur bei centron
Zum Ausprobieren braucht es keine eigene Hardware: ccloud³ VMs mit vollem Root-Zugriff gibt es ab 3,12 € im Monat, stundengenau abgerechnet und in Sekunden bereit. Cloud Server mieten →
Schritt 1: Nginx installieren
Installiere zunächst den Nginx-Webserver.
$ sudo dnf install nginxAktiviere Nginx, damit der Dienst beim Systemstart automatisch gestartet wird.
$ sudo systemctl enable nginxStarte anschließend den Nginx-Dienst manuell.
$ sudo systemctl start nginxErlaube HTTP-Verkehr durch die Firewall.
$ sudo firewall-cmd --zone=public --permanent --add-service=httpLade die Firewall-Regeln neu, um die Änderungen zu übernehmen.
$ sudo firewall-cmd --reloadUm die Funktionalität von Nginx zu überprüfen, öffne einen Browser und rufe die IP-Adresse deines Servers auf:
http://1.2.3.4
Schritt 2: MySQL/MariaDB installieren
Installiere nun den MariaDB-Datenbankserver.
$ sudo dnf install mariadb-serverAktiviere MariaDB, damit der Dienst beim Systemstart automatisch gestartet wird.
$ sudo systemctl enable mariadbStarte den MariaDB-Dienst.
$ sudo systemctl start mariadbSchritt 3: PHP installieren
Fahre fort, indem du PHP zusammen mit PHP-FPM (FastCGI Process Manager) installierst.
$ sudo dnf install php php-fpmInstalliere die gängigen PHP-Erweiterungen, die von den meisten Webanwendungen benötigt werden.
$ sudo dnf install php-mysqlnd php-cgi php-bcmath php-json php-xml php-gd php-zip php-intl php-mbstringAktiviere PHP-FPM, sodass der Dienst beim Systemstart automatisch ausgeführt wird.
$ sudo systemctl enable php-fpmStarte anschließend den PHP-FPM-Dienst.
$ sudo systemctl start php-fpmSchritt 4: MariaDB konfigurieren
Starte die Initialisierung von MariaDB und lege ein Root-Passwort fest.
$ sudo mysql_secure_installationWenn du zur Eingabe eines Root-Passworts aufgefordert wirst, drücke die Eingabetaste. Bestätige anschließend mit y, um ein neues Root-Passwort zu setzen, anonyme Benutzer zu entfernen, Root-Logins aus der Ferne zu verbieten und die Testdatenbank zu löschen.
Melde dich als Root-Benutzer an der MySQL-Shell an.
$ sudo mysql -u root -pLege innerhalb der Konsole eine Testdatenbank an.
CREATE DATABASE sampledb;Erstelle einen neuen Datenbankbenutzer und weise ihm ein starkes Passwort zu.
CREATE USER 'example-user'@'localhost' IDENTIFIED BY 'ultra-strong-password';Erteile dem neuen Benutzer vollständige Rechte für die Testdatenbank.
GRANT ALL PRIVILEGES ON sampledb.* TO 'example-user'@'localhost';Aktualisiere die Berechtigungen, damit die Änderungen wirksam werden.
FLUSH PRIVILEGES;Beende die MySQL-Konsole.
EXITTeste nun die Anmeldung mit dem neu erstellten Datenbankbenutzer.
mysql -u example-user -pZeige die verfügbaren Datenbanken an.
SHOW DATABASES;Beende die Konsole erneut.
EXITSchritt 5: Nginx konfigurieren
Lege ein eigenes Verzeichnis an, um die Dateien deiner Webanwendung zu speichern.
$ sudo mkdir /usr/share/nginx/example.comVerwende einen Texteditor, um eine einfache HTML-Datei in diesem Verzeichnis zu erstellen.
$ sudo nano /usr/share/nginx/example.com/index.htmlFüge den folgenden Inhalt in die HTML-Datei ein:
Hello World!! Your WebServer Works!
Speichere deine Änderungen und schließe den Editor.
Ändere den Besitzer des neuen Verzeichnisses auf den Nginx-Benutzer und die Nginx-Gruppe.
$ sudo chown -R nginx.nginx /usr/share/nginx/example.comErstelle eine neue Nginx-Konfigurationsdatei für deine Domain.
$ sudo nano /etc/nginx/conf.d/example.com.confFüge die folgenden Konfigurationseinstellungen in die Datei ein:
server {
listen 80;
listen [::]:80;
server_name _;
root /usr/share/nginx/example.com;
index index.php index.html index.htm;
error_log /var/log/nginx/example.com.error;
access_log /var/log/nginx/example.com.access;
location ~ \.php$ {
fastcgi_pass unix:/run/php/php-fpm.sock;
fastcgi_split_path_info ^(.+\.php)(/.+)$;
fastcgi_index index.php;
fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
}
location ~ /\. {
deny all;
access_log off;
}
}Speichere die Datei und schließe den Editor.
Überprüfe die Nginx-Konfiguration auf Syntaxfehler.
$ sudo nginx -tStarte abschließend Nginx neu, um die neuen Einstellungen zu übernehmen.
$ sudo systemctl restart nginxSchritt 6: Serversicherheit verbessern
Nginx verwendet die Ports HTTP und HTTPS, um Webanwendungen bereitzustellen. Diese Ports müssen in der Firewall freigegeben werden.
Erlaube HTTP-Verbindungen über die Firewall.
$ sudo firewall-cmd --zone=public --permanent --add-service=httpErlaube ebenfalls HTTPS-Verbindungen über die Firewall.
$ sudo firewall-cmd --zone=public --permanent --add-service=httpAktualisiere die Firewall, um die Änderungen zu übernehmen.
$ sudo firewall-cmd --reloadSchritt 7: SSL-Zertifikate konfigurieren
Installiere das Extra Packages for Enterprise Linux (EPEL) Repository, um die Einrichtung von SSL-Zertifikaten vorzubereiten.
$ sudo dnf install epel-releaseAktiviere das PowerTools-Repository.
$ sudo dnf config-manager --set-enabled powertoolsInstalliere den Snap-Paketmanager.
$ sudo dnf install snapd -yAktiviere den Snap-Socket-Dienst und erstelle einen symbolischen Link, um die klassische Snap-Unterstützung bereitzustellen.
$ sudo systemctl enable --now snapd.socket && sudo ln -s /var/lib/snapd/snap /snapTrenne die SSH-Verbindung und verbinde dich erneut, um die Snap-Integration abzuschließen.
Installiere anschließend das Certbot-Tool, um SSL-Zertifikate zu verwalten.
$ sudo snap install --classic certbotFordere ein kostenloses SSL-Zertifikat für deine Domain mit Certbot an.
$ sudo certbot --nginx -d example.comErsetze dabei example.com durch deinen tatsächlichen Domainnamen.
Starte den Nginx-Dienst neu, um die SSL-Konfiguration zu aktivieren.
$ sudo systemctl restart nginxSchritt 8: Installation testen
Öffne einen Webbrowser und rufe deine konfigurierte Domain auf, um sicherzustellen, dass die Website korrekt geladen wird.
https://example.com
Deine einfache HTML-Anwendung sollte die Nachricht "Hello World" anzeigen.
Um die Verbindung zur Datenbank zu überprüfen, erstelle eine neue Datei namens dbtest.php im Stammverzeichnis deines Webservers.
$ sudo nano /usr/share/nginx/example.com/dbtest.phpFüge den folgenden PHP-Code in die Datei ein und ersetze die Datenbankinformationen entsprechend deinen vorherigen Einstellungen:
<?php
$server = "localhost";
$user = "example-user";
$password = "ultra-strong-password";
$connect = new mysqli($server, $user, $password);
if ($connect->connect_error) {
die("<h2>Verbindung fehlgeschlagen: </h2>" . $connect->connect_error);
}
echo "<h2>Datenbankverbindung erfolgreich</h2>";
echo "<h2><br>Server PHP-Informationen</h2><br>";
phpinfo();
?>Speichere die Änderungen und schließe den Editor.
Rufe anschließend die folgende URL in deinem Browser auf, um die Verbindung zu testen:
https://example.com/dbtest.php
Wenn alles korrekt eingerichtet ist, sieht man eine Erfolgsnachricht, zusammen mit den PHP-Serverinformationen.
Fazit
Herzlichen Glückwunsch! Du hast erfolgreich den LEMP-Stack auf deinem Rocky Linux 8 Server installiert und die Kommunikation zwischen allen wichtigen Komponenten getestet. Ab jetzt kannst du sichere und funktionale Webanwendungen auf deinem Server bereitstellen.
Testen Sie Ihr Setup auf ccloud³
Registrieren Sie sich in der ccloud³ und erhalten Sie 200 € Startguthaben für Ihr Projekt – z. B. für eine PostgreSQL-VM mit automatischen Backups.