Wie man Linux, Nginx, MySQL, PHP (LEMP) Stack auf Ubuntu installiert: Vollständiger Leitfaden
Der LEMP-Stack — ein Akronym für Linux, Nginx, MySQL und PHP — ist eine der am weitesten verbreiteten Webserver-Konfigurationen zum Betrieb dynamischer Websites und leistungsstarker Webanwendungen. Durch die Kombination der bewährten Stabilität von Linux, der blitzschnellen Geschwindigkeit von Nginx, der robusten Datenverwaltungsfunktionen von MySQL und der Vielseitigkeit von PHP bietet der LEMP-Stack eine leistungsstarke, skalierbare und ressourceneffiziente Hosting-Umgebung.
Egal ob Sie einen persönlichen Blog, eine Business-Website oder eine komplexe Enterprise-Anwendung bereitstellen — ein richtig konfigurierter LEMP-Stack bietet Ihnen bessere Skalierbarkeit, schnellere Seitenladezeiten und effiziente Speicherverwaltung — besonders unter hohem Datenverkehr.
Wenn Sie eine zuverlässige Grundlage für diesen Stack benötigen, bietet AlexHost’s VPS Hosting hochperformante Linux-basierte virtuelle Server mit vollständigem Root-Zugriff und gibt Ihnen die vollständige Kontrolle über jede Komponente Ihrer LEMP-Umgebung. Kombinieren Sie das mit einem SSL-Zertifikat, um Ihre Anwendung von Anfang an zu sichern.
In diesem umfassenden Leitfaden führen wir Sie durch jeden Schritt der Installation und Konfiguration des vollständigen LEMP-Stacks auf einem Ubuntu-Server — von der anfänglichen Systemvorbereitung bis zum Testen Ihrer Live-PHP-Umgebung.
1. Voraussetzungen
Bevor Sie beginnen, stellen Sie sicher, dass Sie folgendes haben:
- Ein Server mit Ubuntu 18.04, 20.04 oder 22.04 LTS
- Ein Benutzerkonto mit sudo-Rechten
- SSH-Zugriff oder direkter Terminalzugriff auf Ihren Server
- Ein registrierter Domainname (optional, aber empfohlen für Produktionsbereitstellungen — Sie können einen über AlexHost Domain Registration registrieren)
> Profi-Tipp: Für eine saubere, isolierte Umgebung mit garantierten Ressourcen ist ein VPS Hosting-Plan der ideale Ausgangspunkt für jede LEMP-Bereitstellung.
2. Aktualisieren Sie Ihr System
Bevor Sie Pakete installieren, ist es wichtig, Ihren Paketindex zu aktualisieren und alle ausstehenden Updates anzuwenden. Dies stellt sicher, dass Sie mit den neuesten und sichersten Versionen aller Software arbeiten.
Öffnen Sie Ihr Terminal und führen Sie aus:
sudo apt update && sudo apt upgrade -yDieser Befehl aktualisiert die lokale Paketdatenbank und aktualisiert alle installierten Pakete auf ihre neuesten verfügbaren Versionen.
3. Nginx installieren
Nginx (ausgesprochen „engine-x”) ist ein hochperformanter, ereignisgesteuerter Webserver und Reverse Proxy. Im Gegensatz zu Apache verarbeitet Nginx gleichzeitige Verbindungen mit minimalem Speicherverbrauch, was es zur bevorzugten Wahl für Hochlast-Umgebungen macht.
Schritt 1: Nginx installieren
sudo apt install nginx -ySchritt 2: Nginx starten und aktivieren
Nach der Installation starten Sie den Nginx-Dienst und konfigurieren ihn so, dass er beim Systemstart automatisch startet:
sudo systemctl start nginx
sudo systemctl enable nginxSchritt 3: Überprüfen Sie, ob Nginx läuft
Überprüfen Sie den Dienststatus, um zu bestätigen, dass Nginx aktiv ist:
sudo systemctl status nginxSie sollten eine Ausgabe sehen, die anzeigt, dass der Dienst aktiv (läuft) ist. Sie können auch einen Webbrowser öffnen und zur IP-Adresse Ihres Servers navigieren:
http://your_server_ipWenn Nginx korrekt läuft, werden Sie von der Standard-Seite „Welcome to nginx!” begrüßt.
Schritt 4: Firewall konfigurieren (falls zutreffend)
Wenn Sie UFW (Uncomplicated Firewall) aktiviert haben, erlauben Sie HTTP- und HTTPS-Verkehr:
sudo ufw allow 'Nginx Full'
sudo ufw status4. MySQL installieren
MySQL ist ein leistungsstarkes, quelloffenes relationales Datenbankverwaltungssystem (RDBMS), das als Datenbasis für die meisten dynamischen Webanwendungen dient, einschließlich WordPress, Joomla und benutzerdefinierten PHP-Anwendungen.
Schritt 1: MySQL Server installieren
sudo apt install mysql-server -ySchritt 2: MySQL-Installation sichern
Nach der Installation führen Sie das integrierte Sicherheitshärtungsskript aus. Dieses Skript hilft Ihnen, ein starkes Root-Passwort festzulegen, anonyme Benutzer zu entfernen, Remote-Root-Login zu deaktivieren und die Test-Datenbank zu löschen:
sudo mysql_secure_installationSie werden mit einer Reihe von Fragen aufgefordert. Die empfohlenen Antworten für einen Produktionsserver sind:
| Eingabeaufforderung | Empfohlene Antwort |
|---|---|
| VALIDATE PASSWORD-Komponente einrichten? | Ja |
| Passwortvalidierungsrichtlinienstufe | 2 (STARK) |
| Anonyme Benutzer entfernen? | Ja |
| Remote-Root-Login nicht zulassen? | Ja |
| Test-Datenbank entfernen? | Ja |
| Berechtigungstabellen neu laden? | Ja |
Schritt 3: Überprüfen Sie, ob MySQL ausgeführt wird
sudo systemctl status mysqlSchritt 4: Bei MySQL anmelden (optionale Überprüfung)
sudo mysql -u root -pGeben Sie Ihr Root-Passwort ein, wenn Sie dazu aufgefordert werden. Geben Sie exit ein, um die MySQL-Shell zu verlassen.
5. PHP installieren
PHP (Hypertext Preprocessor) ist die serverseitige Skriptsprache, die dynamische Inhalte verarbeitet und mit MySQL kommuniziert, um datengesteuerte Webseiten bereitzustellen. Bei Verwendung von Nginx wird PHP durch PHP-FPM (FastCGI Process Manager) verwaltet, das PHP-Anfragen unabhängig vom Webserver verarbeitet, um die Leistung zu verbessern.
Schritt 1: PHP-FPM und die MySQL-Erweiterung installieren
sudo apt install php-fpm php-mysql -ySie können auch häufig verwendete PHP-Erweiterungen installieren, um eine breitere Anwendungskompatibilität zu erreichen:
sudo apt install php-curl php-gd php-mbstring php-xml php-xmlrpc php-zip -ySchritt 2: PHP-FPM für Sicherheit konfigurieren
Öffnen Sie die PHP-FPM-Konfigurationsdatei. Ersetzen Sie 8.1 durch Ihre installierte PHP-Version (überprüfen Sie mit php -v):
sudo nano /etc/php/8.1/fpm/php.iniSuchen Sie die Direktive cgi.fix_pathinfo und setzen Sie sie auf 0, um eine kritische Sicherheitslücke zu verhindern:
cgi.fix_pathinfo=0> Warum das wichtig ist: Wenn cgi.fix_pathinfo auf 1 gesetzt ist, versucht PHP, die nächste Datei auszuführen, die es finden kann, wenn die angeforderte PHP-Datei nicht existiert. Dieses Verhalten kann von Angreifern ausgenutzt werden, um beliebigen Code auszuführen.
Speichern und schließen Sie die Datei (Ctrl+X, dann Y, dann Enter).
Schritt 3: PHP-FPM neu starten
Wenden Sie die Konfigurationsänderungen an, indem Sie den PHP-FPM-Dienst neu starten:
sudo systemctl restart php8.1-fpm6. Nginx zur Verarbeitung von PHP konfigurieren
Standardmäßig weiß Nginx nicht, wie PHP-Dateien verarbeitet werden. Sie müssen einen Server Block erstellen (das Nginx-Äquivalent eines Apache Virtual Host), der Nginx anweist, PHP-Anfragen an PHP-FPM zur Verarbeitung weiterzuleiten.
Schritt 1: Das Web-Root-Verzeichnis erstellen
Erstellen Sie das Verzeichnis, in dem Ihre Website-Dateien gespeichert werden:
sudo mkdir -p /var/www/your_domain
sudo chown -R www-data:www-data /var/www/your_domain
sudo chmod -R 755 /var/www/your_domainErsetzen Sie your_domain durch Ihren tatsächlichen Domainnamen oder einen beschreibenden Projektnamen.
Schritt 2: Einen neuen Nginx Server Block erstellen
Erstellen Sie eine neue Nginx-Konfigurationsdatei für Ihre Website:
sudo nano /etc/nginx/sites-available/your_domainFügen Sie den folgenden Konfigurationsblock hinzu. Lesen Sie die Inline-Kommentare sorgfältig durch – sie erklären, was jede Direktive bewirkt:
server {
listen 80;
listen [::]:80;
server_name your_domain www.your_domain; # Replace with your domain or server IP
root /var/www/your_domain; # Document root — where your files live
index index.php index.html index.htm; # Default files to serve
# Handle all requests; return 404 if file not found
location / {
try_files $uri $uri/ =404;
}
# Pass PHP scripts to PHP-FPM for processing
location ~ .php$ {
include snippets/fastcgi-php.conf;
fastcgi_pass unix:/var/run/php/php8.1-fpm.sock; # Adjust PHP version as needed
fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
include fastcgi_params;
}
# Deny access to hidden files (e.g., .htaccess)
location ~ /.ht {
deny all;
}
}> Wichtig: Ersetzen Sie your_domain durch Ihren tatsächlichen Domainnamen und passen Sie php8.1-fpm.sock an Ihre installierte PHP-Version an.
Schritt 3: Den Server Block aktivieren
Erstellen Sie einen symbolischen Link von sites-available zu sites-enabled, um die Konfiguration zu aktivieren:
sudo ln -s /etc/nginx/sites-available/your_domain /etc/nginx/sites-enabled/Um ein mögliches Hash-Bucket-Speicherproblem zu vermeiden, ist es auch eine gute Praxis, die Haupt-Nginx-Konfiguration zu öffnen und sicherzustellen, dass die Direktive server_names_hash_bucket_size auskommentiert ist:
sudo nano /etc/nginx/nginx.confSuchen und kommentieren Sie aus:
server_names_hash_bucket_size 64;Schritt 4: Die Nginx-Konfiguration testen
Testen Sie die Konfiguration vor dem Neustart von Nginx immer auf Syntaxfehler:
sudo nginx -tWenn die Ausgabe zeigt:
nginx: configuration file /etc/nginx/nginx.conf test is successfulDann können Sie fortfahren.
Schritt 5: Nginx neu starten
Wenden Sie alle Änderungen an, indem Sie den Nginx-Dienst neu starten:
sudo systemctl restart nginx7. PHP-Info-Datei erstellen und testen
Um zu bestätigen, dass Nginx PHP-Anfragen korrekt an PHP-FPM weiterleitet, erstellen Sie eine einfache PHP-Testdatei in Ihrem Document Root.
Schritt 1: PHP-Info-Datei erstellen
sudo nano /var/www/your_domain/info.phpFügen Sie den folgenden Inhalt hinzu:
<?php
phpinfo();
?>Speichern und schließen Sie die Datei.
Schritt 2: Auf die PHP-Info-Seite zugreifen
Öffnen Sie Ihren Webbrowser und navigieren Sie zu:
http://your_domain/info.phpOder, falls Sie noch keine Domain konfiguriert haben:
http://your_server_ip/info.phpSie sollten die PHP-Informationsseite sehen — einen detaillierten Überblick über Ihre PHP-Installation, geladene Module, Konfigurationswerte und Umgebungsvariablen. Dies bestätigt, dass alle drei Komponenten (Nginx, PHP-FPM und MySQL) korrekt zusammenarbeiten.
Schritt 3: PHP-Info-Datei entfernen (kritischer Sicherheitsschritt)
Nachdem Sie bestätigt haben, dass alles funktioniert, löschen Sie die info.php Datei sofort. Diese Datei offenbart sensible Serverkonfigurationsdetails, die von böswilligen Akteuren ausgenutzt werden könnten:
sudo rm /var/www/your_domain/info.php8. Nächste Schritte: Härten und Optimieren Sie Ihren LEMP Stack
Mit Ihrem LEMP Stack in Betrieb sollten Sie die folgenden zusätzlichen Schritte in Betracht ziehen, um Ihren Server für die Produktion vorzubereiten:
HTTPS mit einem kostenlosen SSL-Zertifikat aktivieren
Sichern Sie Ihre Website mit TLS/SSL-Verschlüsselung mit Certbot und Let’s Encrypt:
sudo apt install certbot python3-certbot-nginx -y
sudo certbot --nginx -d your_domain -d www.your_domainAlternativ können Sie AlexHost SSL-Zertifikate für Premium-Zertifikate mit kommerzieller Validierung erkunden, die höhere Vertrauensstufen für Geschäfts- und E-Commerce-Anwendungen bieten.
Nginx-Leistung optimieren
Fügen Sie die folgenden Direktiven zu Ihrer Nginx-Konfiguration hinzu, um die Leistung zu verbessern:
# Enable Gzip compression
gzip on;
gzip_types text/plain text/css application/json application/javascript text/xml application/xml;
# Enable browser caching for static assets
location ~* .(jpg|jpeg|png|gif|ico|css|js)$ {
expires 30d;
add_header Cache-Control "public, no-transform";
}Richten Sie einen dedizierten MySQL-Benutzer ein
Vermeiden Sie die Verwendung des Root-MySQL-Kontos für Ihre Anwendungen. Erstellen Sie einen dedizierten Datenbankbenutzer mit eingeschränkten Berechtigungen:
CREATE DATABASE your_app_db;
CREATE USER 'app_user'@'localhost' IDENTIFIED BY 'StrongPassword123!';
GRANT ALL PRIVILEGES ON your_app_db.* TO 'app_user'@'localhost';
FLUSH PRIVILEGES;Erwägen Sie ein Kontrollpanel für einfachere Verwaltung
Wenn Sie eine grafische Benutzeroberfläche zur Verwaltung Ihres LEMP Stack, Nginx Virtual Hosts, Datenbanken und E-Mail-Konten bevorzugen, erwägen Sie die Bereitstellung eines Kontrollpanels. AlexHost bietet VPS mit cPanel und eine Reihe weiterer VPS-Kontrollpanels an, um die Serververwaltung zu vereinfachen, ohne Leistung oder Kontrolle zu beeinträchtigen.
9. Fazit
Sie haben erfolgreich einen vollständigen LEMP-Stack (Linux, Nginx, MySQL, PHP) auf Ihrem Ubuntu-Server installiert und konfiguriert. Hier ist eine kurze Zusammenfassung dessen, was Sie erreicht haben:
- ✅ Nginx installiert, gestartet und als Webserver konfiguriert
- ✅ MySQL installiert und mit dem Härtungsskript gesichert
- ✅ PHP-FPM mit sicherheitsorientierter Konfiguration installiert
- ✅ Nginx-Serverblock konfiguriert, um PHP-Anfragen an PHP-FPM weiterzuleiten
- ✅ PHP-Verarbeitung über die
phpinfo()Testseite verifiziert
Dieser Stack bietet Ihnen eine produktionsreife Grundlage für das Hosting praktisch jeder PHP-basierten Anwendung – von WordPress und Laravel bis zu benutzerdefinierten Plattformen. Die Kombination aus Nginx’s ereignisgesteuerter Architektur und PHP-FPM’s Prozessverwaltung macht sie besonders gut für Workloads mit hoher Parallelität geeignet.
Für optimale Leistung und Zuverlässigkeit hosten Sie Ihren LEMP-Stack in einer speziell dafür entwickelten Linux-Umgebung. AlexHost’s VPS-Hosting Pläne bieten SSD-gestützte Speicherung, garantierter RAM, vollständiger Root-Zugriff und 24/7 technischer Support – alles, was Sie benötigen, um eine schnelle, sichere und skalierbare Webanwendung auszuführen.
Denken Sie daran, alle Komponenten regelmäßig zu aktualisieren, Ihre Serverprotokolle zu überwachen und eine Firewall sowie ein Eindringungserkennungssystem als Teil Ihrer laufenden Sicherheitsstrategie zu implementieren.
bei allen Hosting-Diensten