Einführung
In der Welt des Internets kommen mehrere Technologien zusammen, um eine Lösung zu bilden, die es Internetnutzern ermöglicht, auf dynamische Inhalte im World Wide Web zuzugreifen. Der LEMP-Stack ist eine dieser Lösungen. Er vereint vier Technologien, die eine komplette Serverlösung für hochperformante und dynamische Websites bilden. LEMP ist ein Akronym für Linux, Nginx, MySQL und PHP. Linux ist das Server-Betriebssystem. Nginx (das wie Engine-X ausgesprochen wird, daher der Buchstabe E im Akronym) ist die Webserver-Software. Als Nächstes ist MySQL das Datenbanksystem, das die Daten der Website und der Benutzer enthält. PHP ist die serverseitige Skriptsprache für die dynamische Verarbeitung.
In diesem Tutorial zeigen wir Ihnen, wie Sie einen LEMP-Stack installieren und konfigurieren und überprüfen, ob alles wie erwartet läuft. Lassen Sie uns beginnen!
Schritt 1: Konfigurieren Ihres Servers mit Ubuntu 20.04
Ubuntu 20.04 ist ein Linux-basiertes Betriebssystem. Es gibt mehrere Linux-basierte Server-Betriebssysteme da draußen, sowohl kostenlose als auch Premium-Versionen. Der Fokus dieser Anleitung liegt auf Ubuntu 20.04, das kostenlos und Open-Source ist. Dieser Schritt deckt die erste Anforderung im LEMP-Stack-Akronym ab, das L. Sie sollten eine tatsächliche Ubuntu 20.04-Installation auf Ihrem VPS haben, um mit den folgenden Schritten fortzufahren. Sie können unserer Anleitung zur Einrichtung Ihres Ubuntu-Servers folgen. Wenn Sie dieser Anleitung auf Ihrem lokalen Computer folgen möchten, können Sie das Ubuntu 20.04 Server-Installationsimage optional direkt von der Ubuntu-Website herunterladen. Sie sollten einen regulären Nicht-Root-Benutzer mit sudo-Rechten konfigurieren, da wir einige Befehle ausführen werden, die sudo-Berechtigungen erfordern.
Schritt 2: Installieren und Konfigurieren des Nginx-Servers
Webserver ermöglichen es uns, Inhalte wie Webseiten für Website-Besucher bereitzustellen. Nginx ist ein beliebter Webserver, der zu den Top fünf Open-Source-Webservern gehört, die von Entwicklern bevorzugt werden. Dieser Schritt deckt die zweite Anforderung im LEMP-Stack ab, das E für Nginx. Ubuntu verfügt über ein Standard-Paket-Repository, aus dem wir die in dieser Anleitung verwendeten Pakete beziehen. Ubuntu basiert auf Debian, das apt oder dpkg zur Verwaltung seiner Pakete verwendet. Für Pakete aus dem Standard-Repository werden wir apt verwenden.
Als Faustregel gilt, dass Sie den Update-Befehl ausführen sollten, bevor Sie eine Installation auf einem Linux-System starten. Beginnen Sie mit der Eingabe des folgenden Befehls im Terminal:
|
1 |
sudo apt update |
Sobald Sie das Update durchgeführt haben, können Sie Nginx mit dem folgenden Befehl installieren:
|
1 |
sudo apt install nginx |
Sobald die Installation abgeschlossen ist, startet Nginx automatisch. Der nächste Schritt besteht darin, die Firewall so zu konfigurieren, dass Datenverkehr zugelassen wird. Ubuntu verwendet das ufw-Paket (Uncomplicated Firewall) zur Konfiguration von Firewalls. Nach der Installation registriert sich Nginx als Dienst bei ufw. Ubuntu startet den Firewall-Dienst automatisch beim Systemstart, aber um sicherzugehen, geben Sie den folgenden Befehl ein, um ihn zu aktivieren:
|
1 |
sudo ufw enable |
Um die von ufw zugelassene Anwendungskonfiguration aufzulisten, geben Sie den folgenden Befehl ein:
|
1 |
sudo ufw app list |
Unten sehen Sie einen Screenshot, der die Ausgabe des obigen Befehls zeigt:

Wie Sie sehen können, Nginx ist bereits bei ufw registriert und verfügt über drei Profile, wie unten erklärt:
- Nginx Full – öffnet sowohl Port 80 als auch 443. Port 80 ist für normalen/unverschlüsselten Datenverkehr, d. h. HTTP. Port 443 ist für TLS/SSL-verschlüsselten Datenverkehr, d. h. HTTPS.
- Nginx HTTP – öffnet nur Port 80 – unverschlüsselter Datenverkehr.
- Nginx HTTPS – öffnet nur Port 443 – TLS/SSL-verschlüsselter Datenverkehr.
Obwohl sich Nginx automatisch bei ufw registriert, ist kein Datenverkehr zu Ihrem Server zulässig, bis Sie dies selbst tun. Sie können alle oder einzelne Profile zulassen. Es ist jedoch besser, das restriktivste Profil zuzulassen, das dennoch den für Ihren Webserver konfigurierten Datenverkehr ermöglicht. Da wir in diesem Tutorial kein SSL konfiguriert haben, lassen wir nur HTTP-Datenverkehr auf Port 80 zu. Wenn Sie neugierig sind, haben wir eine Anleitung zur Konfiguration von SSL auf dem Nginx-Server von Let’s Encrypt unter Verwendung von Certbot.
Aktivieren wir den Datenverkehr auf Port 80, indem wir den folgenden Befehl eingeben:
|
1 |
sudo ufw allow 'Nginx HTTP' |
Um zu überprüfen, ob die Änderung erfolgreich war, geben Sie den folgenden Befehl ein:
|
1 |
sudo ufw status |

Die obige Ausgabe der Befehlsausführung zeigt, dass der HTTP-Datenverkehr nun zugelassen ist. Sie können überprüfen, ob der Server läuft, indem Sie Ihre Domain oder die öffentliche IP-Adresse Ihres Servers im Browser aufrufen. Wenn Sie keinen Domainnamen konfiguriert haben und sich über die öffentliche IP-Adresse Ihres Servers nicht sicher sind, können Sie diese herausfinden mit curl indem Sie den folgenden Befehl ausführen:
|
1 |
curl -4 icanhazip.com |
Kopieren Sie die Ausgabe des obigen Befehls, bei der es sich um Ihre öffentliche IP-Adresse handelt, in die Adressleiste Ihres Browsers. Wenn Sie die Seite laden, sehen Sie die Standard-Landingpage von Nginx:

Die obige Seite zeigt an, dass Sie Nginx erfolgreich installiert haben.
Schritt 3: Installation des MySQL-Datenbankverwaltungssystems
Die Datenverwaltung ist ein entscheidender Teil jeder dynamischen Website. MySQL ist ein Datenbankverwaltungssystem, das die Daten einer Website speichert und verwaltet. Dieser Schritt kümmert sich um die dritte Anforderung im LEMP-Stack, M. Geben Sie den folgenden Befehl ein, um MySQL zu installieren:
|
1 |
sudo apt install mysql-server |
Nachdem die MySQL-Installation abgeschlossen ist, müssen Sie sie konfigurieren, bevor sie einsatzbereit ist. Ein Teil der Konfiguration umfasst die Absicherung des Datenbankservers. MySQL wird mit einem Skript geliefert, das Sie bei der Absicherung und Einrichtung von Passwörtern unterstützt. Der folgende Befehl startet das Skript:
|
1 |
sudo mysql_secure_installation |

Das Skript fragt, ob Sie die Komponente VALIDATE PASSWORD einrichten möchten, oder ob Sie eine beliebige Taste drücken möchten, um fortzufahren, ohne die Komponente zu aktivieren.
Die Komponente VALIDATE PASSWORD ist eine Funktion, mit der überprüft wird, ob das von Ihnen für einen bestimmten Benutzer auf Ihrem Datenbankserver eingegebene Passwort einem bestimmten Kriterium entspricht. Sie können sie so konfigurieren, dass Dinge wie Länge, numerische Zeichen, das Vorhandensein von Groß- oder Kleinbuchstaben usw. überprüft werden. Wenn sie nicht aktiviert ist, können Sie ein beliebiges Passwort Ihrer Wahl konfigurieren. Wenn sie jedoch aktiviert ist, müssen Sie ein Passwort verwenden, das den von Ihnen angegebenen Kriterien entspricht. Die Aktivierung kann zu Problemen mit Paketen führen, die MySQL-Benutzeranmeldedaten automatisch konfigurieren, wie z. B. das phpMyAdmin-Paket für Ubuntu. Ob Sie sie aktivieren oder nicht, ist eine persönliche Entscheidung. Ihre Datenbank ist auch dann sicher, wenn Sie sie nicht aktivieren, stellen Sie einfach sicher, dass Sie starke und einzigartige Passwörter verwenden.
Wenn Sie Y gedrückt haben, um die Komponente zu aktivieren, fordert Sie das Skript auf, eine Stufe der Passwortvalidierung auszuwählen:

Das Skript bietet 3 Stufen der Passwortvalidierung. Die Stufe LOW erfordert, dass Ihr Passwort nur 8 oder mehr Zeichen enthält. Die Stufe MEDIUM erfordert, dass Ihr Passwort 8 oder mehr Zeichen enthält, die eine Mischung aus Großbuchstaben, Kleinbuchstaben und Sonderzeichen sein müssen. Die Stufe STRONG erfordert ein komplexes Passwort mit 8 oder mehr Zeichen, das eine Mischung aus Großbuchstaben, Kleinbuchstaben, Sonderzeichen und Wörtern sein muss und nicht auf gängigen Wörterbuchwörtern basieren darf, da Sie andernfalls Fehlermeldungen erhalten. Wählen wir die Stufe Low, geben Sie 0 ein und drücken Sie die Eingabetaste.
Das Skript fordert Sie auf, das Passwort einzugeben und erneut einzugeben:

Geben Sie y ein und drücken Sie die Eingabetaste, um das eingegebene Passwort als Ihr Root-Passwort zu akzeptieren. Die folgenden Eingabeaufforderungen dienen der Verbesserung der Sicherheit des MySQL-Servers. Dies beginnt mit dem Entfernen der standardmäßigen anonymen Benutzer, die bei jeder MySQL-Installation vorhanden sind, dem Deaktivieren des Root-Logins über eine Remoteverbindung und dem Entfernen von Testdatenbanken. Die letzte Aufforderung bittet Sie, die Berechtigungstabelle neu zu laden, damit die Befehle wirksam werden. Geben Sie bei allen Aufforderungen y ein und drücken Sie die Eingabetaste:

Die anfängliche Sicherheitskonfiguration ist abgeschlossen.
Sie können die installierte MySQL-Version überprüfen, indem Sie folgenden Befehl ausführen:
|
1 |
sudo mysql –V |
Hier ist die Version, die wir für dieses Tutorial verwenden:
![]()
Für Ubuntu-Systeme, auf denen MySQL-Versionen ab 5.7 ausgeführt werden, ist der Root-Benutzer so konfiguriert, dass er sich über das auth_socket-Plugin und nicht mit dem Passwort authentifiziert. Dies sorgt für mehr Sicherheit, kann jedoch bei externen Paketen wie dem phpMyAdmin-Paket zu Problemen führen. Wenn Sie lieber mit dem auth_socket-Plugin fortfahren möchten, fahren Sie mit Schritt 4 fort.
Wenn Sie sich stattdessen mit einem Passwort verbinden möchten, müssen Sie die Authentifizierungsmethode so konfigurieren, dass mysql_native_password verwendet wird.
Starten Sie die MySQL-Eingabeaufforderung, indem Sie den folgenden Befehl eingeben:
|
1 |
sudo mysql |
MySQL wird mit mehreren Standarddatenbanken geliefert. Sie können eine Liste der Standarddatenbanken anzeigen, indem Sie die folgende Abfrage in Ihrem Terminal eingeben:
|
1 |
show databases; |

Die Datenbank namens mysql speichert mehrere MySQL-bezogene Konfigurationen. Diese Datenbank enthält eine Tabelle namens users, die die Benutzerdetails und die Authentifizierungsmethode für jeden Benutzer enthält. Wir können SQL-Abfragen verwenden, um Informationen aus einer Tabelle abzurufen, zu ändern und zu löschen. Geben Sie die folgende Abfrage in Ihrem Terminal ein, um Details darüber zu erhalten, welche Authentifizierungsmethode jeder Benutzer verwendet:
|
1 |
SELECT user, authentication_string, plugin, host FROM mysql.user; |

Die obige Ausgabe zeigt, dass sich der Root-Benutzer tatsächlich über das auth_socket-Plugin authentifiziert. Um die Authentifizierungsmethode für den Root-Benutzer zu ändern, geben Sie die folgende Anweisung in Ihrem Terminal ein. Denken Sie daran, das Passwort so zu ändern, dass es der Passwortstärke für die mittlere Stufe entspricht, die wir in einem vorherigen Schritt festgelegt haben, da andernfalls ein Fehler auftritt:
|
1 |
ALTER USER 'root'@'localhost' IDENTIFIED WITH mysql_native_password BY 'mypassword'; |
Sobald die Abfrage erfolgreich ausgeführt wurde, führen Sie den Befehl „flush privileges“ aus, damit die Änderungen sofort wirksam werden:
|
1 |
FLUSH PRIVILEGES; |
Führen Sie die folgende SELECT-Anweisung erneut aus, um zu überprüfen, ob die Änderungen wirksam geworden sind:
|
1 |
SELECT user,authentication_string,plugin,host FROM mysql.user; |

Aus der Ausgabe geht hervor, dass sich der Root-Benutzer nun mit mysql_native_password authentifiziert. Sie können die MySQL-Eingabeaufforderung verlassen, indem Sie „exit“ eingeben und die Eingabetaste drücken.
Sie können versuchen, sich mit dem von Ihnen festgelegten Passwort anzumelden, indem Sie den folgenden Befehl eingeben:
|
1 |
mysql -u root –p |
Sie werden nach Ihrem Passwort gefragt. Wenn es übereinstimmt, sehen Sie die MySQL-Eingabeaufforderung. Sie haben Ihren Server erfolgreich mit MySQL eingerichtet. Verlassen Sie als Nächstes die MySQL-Eingabeaufforderung.
Schritt 4: Installieren von PHP und Einrichten von Nginx zur Verwendung des PHP-Prozessors
PHP ist ein Akronym für PHP: Hypertext Preprocessor. Es ist eine weit verbreitete Open-Source-serverseitige Skriptsprache für Websites und Webanwendungen. PHP deckt die vierte Anforderung im LEMP-Stack ab. PHP hilft bei der Generierung dynamischer Inhalte auf einer Website. Es kann als Vermittler zwischen Ihren Webseiten und dem Datenbanksystem verwendet werden. Es liest Daten aus der Datenbank und präsentiert sie Ihren Website-Besuchern. Darüber hinaus kann es Daten in der Datenbank einfügen, aktualisieren und löschen.
Nginx fehlen die nativen PHP-Verarbeitungs-Plugins wie bei anderen Webservern, daher müssen Sie php-fpm installieren, um Anfragen von Nginx zur Verarbeitung an PHP weiterzuleiten. Fügen Sie zunächst das Ubuntu-Universe-Repository hinzu, das freie und Open-Source-Software enthält, die von der Ubuntu-Community gepflegt wird. Geben Sie den folgenden Befehl in Ihrem Terminal ein:
|
1 |
sudo add-apt-repository universe |
Installieren Sie dann das php-fpm-Paket zusammen mit dem php-msql-Hilfspaket, um PHP die Kommunikation mit MySQL zu ermöglichen, indem Sie den folgenden Befehl verwenden:
|
1 |
sudo apt install php-fpm php-mysql |
Zum Zeitpunkt der Erstellung dieses Leitfadens ist die über den obigen Befehl installierte PHP-Version 7.2.24. Daher wird das Paket php-fpm7.2 installiert. Denken Sie daran, wenn Sie die Server-Blöcke aktualisieren, und stellen Sie sicher, dass Sie die richtige Version eingeben, da Ihre Seite sonst nicht geladen wird.
Sie können die PHP-Version überprüfen, indem Sie den folgenden Befehl eingeben:
|
1 |
php -v |

An diesem Punkt sind alle Komponenten des LEMP-Stacks installiert. Als Nächstes müssen Sie Nginx so konfigurieren, dass Anfragen an den PHP-Prozessor weitergeleitet werden. In Nginx erfolgt die Konfiguration innerhalb von Server-Blöcken. Server-Blöcke entsprechen den virtuellen Hosts von Apache. Weitere Informationen finden Sie in unserem Tutorial über Nginx-Server-Blöcke.
Für dieses Tutorial erstellen wir einen Server-Block für eine test.com-Domain mit demselben Namen. Es steht Ihnen frei, einen Namen Ihrer Wahl zu wählen. Server-Blöcke befinden sich im Verzeichnis /etc/nginx/sites-available/. Verwenden Sie nano, um die Server-Block-Datei zu erstellen, indem Sie den folgenden Befehl eingeben:
|
1 |
sudo nano /etc/nginx/sites-available/test.com |
Geben Sie das folgende Skript in die Datei ein:
|
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 |
server { listen 80; root /var/www/html; index index.php index.html index.htm index.nginx-debian.html; server_name test.com; location / { try_files $uri $uri/ =404; } location ~ \.php$ { include snippets/fastcgi-php.conf; fastcgi_pass unix:/var/run/php/php7.2-fpm.sock; } location ~ /\.ht { deny all; } } |
Hier ist eine kurze Beschreibung der Funktion der einzelnen Direktiven:
- listen – definiert den Port, auf dem Nginx lauscht. Port 80 ist der Standardport. Wenn Sie jedoch SSL eingerichtet hätten, würden Sie 443 eintragen.
- root – enthält das Verzeichnis, in dem das Verzeichnis der Website gespeichert wird.
- index – weist Nginx an, die Bereitstellung von index.php-Dateien zu priorisieren, falls diese auf Anfrage verfügbar sind.
- server_name – definiert den Namen des Server-Blocks; er enthält die öffentliche IP-Adresse oder den Domainnamen Ihres Servers.
- location/ – der erste Location-Block enthält die try_files-Direktive. Sie prüft, ob Dateien vorhanden sind, die einer URI-Anfrage entsprechen. Wenn keine gefunden werden, wird ein 404-Fehler zurückgegeben.
- location ~ \.php$ – diese Direktive verarbeitet PHP, indem sie Nginx-Anfragen über die Datei fastcgi-php.conf und die Datei php7.2-fpm.sock leitet, die definiert, welcher Socket mit php-fpm verknüpft werden soll. Dieser Befehl überprüft den Status von php-fpm. Wir geben die Version als 7.2 an, was unserer Version entspricht. Stellen Sie sicher, dass Sie dies mit Ihrer jeweiligen Version überprüfen:
|
1 |
sudo service php7.2-fpm status |
- location ~ /\.ht – diese Direktive verarbeitet die .htaccess-Dateien, die von Nginx nicht verarbeitet werden. Die Direktive deny all stellt sicher, dass den Besuchern keine htaccess-Datei bereitgestellt wird.
Nachdem Sie das Skript zu Ihrer test.com-Datei hinzugefügt haben, drücken Sie Strg + O und dann die Eingabetaste, um die Datei zu speichern. Drücken Sie Strg + X, um den Editor zu schließen.
Anschließend müssen Sie den Server-Block aktivieren, indem Sie den folgenden Befehl eingeben, um einen symbolischen Link zu /etc/nginx/sites-enabled zu erstellen:
|
1 |
sudo ln -s /etc/nginx/sites-available/test.com /etc/nginx/sites-enabled/ |
Trennen Sie dann die Verknüpfung des Standard-Server-Blocks von sites-enabled, indem Sie den folgenden Befehl eingeben:
|
1 |
sudo unlink /etc/nginx/sites-enabled/default |
Testen Sie Ihre neue Konfiguration, indem Sie den folgenden Befehl eingeben:
|
1 |
sudo nginx -t |
Wenn die Syntax in Ordnung ist, laden Sie Nginx mit dem folgenden Befehl neu:
|
1 |
sudo systemctl reload nginx |
In diesem Schritt wurde Ihr LEMP-Stack installiert und konfiguriert. Im nächsten Schritt erstellen wir eine Testdatei, um sicherzustellen, dass die verschiedenen Komponenten gut miteinander verbunden sind.
Schritt 5: Erstellen einer PHP-Datei zum Testen Ihres LEMP-Stacks
In diesem Schritt erstellen wir eine .php-Datei und führen sie auf dem Nginx-Server aus, um zu überprüfen, ob sie ordnungsgemäß läuft. Wir werden die globale Funktion phpinfo() verwenden, um die verfügbaren PHP-Pakete zu überprüfen. Geben Sie den folgenden Befehl ein, um eine .php-Datei in nano zu öffnen:
|
1 |
sudo nano /var/www/html/test.php |
Geben Sie im nano-Editor das folgende Code-Snippet ein:
|
1 |
<?php phpinfo(); |
Speichern und schließen Sie die Datei. Um die soeben erstellte Seite in Ihrem Browser aufzurufen, suchen Sie Ihre Domain oder IP-Adresse und rufen Sie diese wie folgt auf:
|
1 |
http://your_server_domain_or_IP/test.php |
Sie sollten nun die PHP-Infoseite sehen können:

Die obige Seite zeigt, dass Sie Nginx erfolgreich eingerichtet haben. Da die von Ihnen zu Testzwecken erstellte Datei detaillierte Informationen über Ihren Server enthält, sollten Sie daran denken, sie wieder zu entfernen. Geben Sie den folgenden Befehl ein, um die Datei zu löschen:
|
1 |
sudo rm /var/www/html/test.php |
Wenn Sie Ihre Konfigurationen in Zukunft jemals testen müssen, können Sie die Datei jederzeit wieder neu erstellen.
Fazit
In diesem Tutorial haben Sie einen LEMP-Stack auf Ihrem Ubuntu 20.04 konfiguriert, einem der leistungsstärksten Stacks für die Entwicklung von Webanwendungen, die es gibt. Von hier aus sollten Sie in der Lage sein, fast jede Website, Web-App oder serverseitige Logik für Ihre mobile Anwendung zu hosten. Um sicherzustellen, dass Ihre Website Inhalte über eine sichere SSL-Verbindung bereitstellt, empfehlen wir Ihnen einen Blick auf unser Tutorial zur Konfiguration von SSL-Zertifikaten auf dem Nginx-Server zu werfen.
Viel Spaß beim Computing!
Kommentare
Noch keine Kommentare. Schreiben Sie den ersten.