LEMP-Stack auf Rocky Linux 8 installieren
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
Schritt 1: Nginx installieren
Installiere zunächst den Nginx-Webserver.
$ sudo dnf install nginx
Aktiviere Nginx, damit der Dienst beim Systemstart automatisch gestartet wird.
$ sudo systemctl enable nginx
Starte anschließend den Nginx-Dienst manuell.
$ sudo systemctl start nginx
Erlaube HTTP-Verkehr durch die Firewall.
$ sudo firewall-cmd --zone=public --permanent --add-service=http
Lade die Firewall-Regeln neu, um die Änderungen zu übernehmen.
$ sudo firewall-cmd --reload
Um 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-server
Aktiviere MariaDB, damit der Dienst beim Systemstart automatisch gestartet wird.
$ sudo systemctl enable mariadb
Starte den MariaDB-Dienst.
$ sudo systemctl start mariadb
Schritt 3: PHP installieren
Fahre fort, indem du PHP zusammen mit PHP-FPM (FastCGI Process Manager) installierst.
$ sudo dnf install php php-fpm
Installiere 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-mbstring
Aktiviere PHP-FPM, sodass der Dienst beim Systemstart automatisch ausgeführt wird.
$ sudo systemctl enable php-fpm
Starte anschließend den PHP-FPM-Dienst.
$ sudo systemctl start php-fpm
Schritt 4: MariaDB konfigurieren
Starte die Initialisierung von MariaDB und lege ein Root-Passwort fest.
$ sudo mysql_secure_installation
Wenn 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 -p
Lege 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.
EXIT
Teste nun die Anmeldung mit dem neu erstellten Datenbankbenutzer.
mysql -u example-user -p
Zeige die verfügbaren Datenbanken an.
SHOW DATABASES;
Beende die Konsole erneut.
EXIT
Schritt 5: Nginx konfigurieren
Lege ein eigenes Verzeichnis an, um die Dateien deiner Webanwendung zu speichern.
$ sudo mkdir /usr/share/nginx/example.com
Verwende einen Texteditor, um eine einfache HTML-Datei in diesem Verzeichnis zu erstellen.
$ sudo nano /usr/share/nginx/example.com/index.html
Fü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.com
Erstelle eine neue Nginx-Konfigurationsdatei für deine Domain.
$ sudo nano /etc/nginx/conf.d/example.com.conf
Fü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 -t
Starte abschließend Nginx neu, um die neuen Einstellungen zu übernehmen.
$ sudo systemctl restart nginx
Schritt 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=http
Erlaube ebenfalls HTTPS-Verbindungen über die Firewall.
$ sudo firewall-cmd --zone=public --permanent --add-service=http
Aktualisiere die Firewall, um die Änderungen zu übernehmen.
$ sudo firewall-cmd --reload
Schritt 7: SSL-Zertifikate konfigurieren
Installiere das Extra Packages for Enterprise Linux (EPEL) Repository, um die Einrichtung von SSL-Zertifikaten vorzubereiten.
$ sudo dnf install epel-release
Aktiviere das PowerTools-Repository.
$ sudo dnf config-manager --set-enabled powertools
Installiere den Snap-Paketmanager.
$ sudo dnf install snapd -y
Aktiviere 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 /snap
Trenne 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 certbot
Fordere ein kostenloses SSL-Zertifikat für deine Domain mit Certbot an.
$ sudo certbot --nginx -d example.com
Ersetze dabei example.com
durch deinen tatsächlichen Domainnamen.
Starte den Nginx-Dienst neu, um die SSL-Konfiguration zu aktivieren.
$ sudo systemctl restart nginx
Schritt 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.php
Fü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.