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.

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.

Lege innerhalb der Konsole eine Testdatenbank an.

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.

Beende die MySQL-Konsole.

Teste nun die Anmeldung mit dem neu erstellten Datenbankbenutzer.

Zeige die verfügbaren Datenbanken an.

Beende die Konsole erneut.

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.

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.

Quelle: vultr.com

Jetzt 200€ Guthaben sichern

Registrieren Sie sich jetzt in unserer ccloud³ und erhalten Sie 200€ Startguthaben für Ihr Projekt.

Das könnte Sie auch interessieren: