Sparen Sie 15% bei allen Hosting-Diensten

Teste deine Fähigkeiten und erhalte Rabatt auf jeden Hosting-Plan

Benutze den Code: Skills Anfangen
Abschnitte
Betriebssysteme Linux Verwaltung

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 -y

Dieser 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 -y

Schritt 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 nginx

Schritt 3: Überprüfen Sie, ob Nginx läuft

Überprüfen Sie den Dienststatus, um zu bestätigen, dass Nginx aktiv ist:

sudo systemctl status nginx

Sie 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_ip

Wenn 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 status

4. 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 -y

Schritt 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_installation

Sie werden mit einer Reihe von Fragen aufgefordert. Die empfohlenen Antworten für einen Produktionsserver sind:

EingabeaufforderungEmpfohlene Antwort
VALIDATE PASSWORD-Komponente einrichten?Ja
Passwortvalidierungsrichtlinienstufe2 (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 mysql

Schritt 4: Bei MySQL anmelden (optionale Überprüfung)

sudo mysql -u root -p

Geben 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 -y

Sie 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 -y

Schritt 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.ini

Suchen 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-fpm

6. 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_domain

Ersetzen 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_domain

Fü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.conf

Suchen 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 -t

Wenn die Ausgabe zeigt:

nginx: configuration file /etc/nginx/nginx.conf test is successful

Dann können Sie fortfahren.

Schritt 5: Nginx neu starten

Wenden Sie alle Änderungen an, indem Sie den Nginx-Dienst neu starten:

sudo systemctl restart nginx

7. 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.php

Fü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.php

Oder, falls Sie noch keine Domain konfiguriert haben:

http://your_server_ip/info.php

Sie 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.php

8. 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_domain

Alternativ 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.