Dieses Tutorial zeigt Ihnen, wie Sie den LEMP-Stack installieren (Nginx, MariaDB und PHP7.4) auf Ubuntu 20.04. Ein Software-Stack ist eine Reihe von Software-Tools, die gebündelt sind. LEMP steht für Linux, Nginx (Engine-X), MariaDB/MySQL und PHP, die alle Open Source und kostenlos nutzbar sind. Es ist der am weitesten verbreitete Software-Stack, der dynamische Websites und Webanwendungen unterstützt. Linux ist das Betriebssystem; Nginx ist der Webserver; MariaDB/MySQL ist der Datenbankserver und PHP ist die serverseitige Skriptsprache, die für die Generierung dynamischer Webseiten verantwortlich ist.
Voraussetzungen
Um diesem Tutorial zu folgen, benötigen Sie ein Ubuntu 20.04-Betriebssystem, das auf Ihrem lokalen Computer oder auf einem Remote-Server ausgeführt wird.
Wenn Sie nach einem VPS (Virtual Private Server) suchen, können Sie über diesen speziellen Link ein Konto bei DigitalOcean registrieren, um ein kostenloses Guthaben von 50 $ zu erhalten. (Nur für neue Benutzer). Wenn Sie bereits DigitalOcean-Benutzer sind, können Sie über diesen speziellen Link ein Konto bei Vultr registrieren, um ein kostenloses Guthaben von 50 $ zu erhalten (nur für neue Benutzer).
Und wenn Sie einen LEMP-Stack mit einem Domainnamen einrichten müssen, empfehle ich den Kauf von Domainnamen von NameCheap, da der Preis niedrig ist und Whois-Datenschutz lebenslang kostenlos ist.
Schritt 1:Softwarepakete aktualisieren
Bevor wir den LEMP-Stack installieren, empfiehlt es sich, das Repository und die Softwarepakete zu aktualisieren, indem Sie die folgenden Befehle auf Ihrem Ubuntu 20.04-Betriebssystem ausführen.
sudo apt update sudo apt upgrade
Schritt 2:Nginx-Webserver installieren
Nginx ist ein Hochleistungs-Webserver und heutzutage sehr beliebt. Es kann auch als Reverse-Proxy und Caching-Server verwendet werden. Geben Sie den folgenden Befehl ein, um den Nginx-Webserver zu installieren.
sudo apt install nginx
Nach der Installation können wir Nginx so aktivieren, dass es beim Booten automatisch startet, indem wir den folgenden Befehl ausführen.
sudo systemctl enable nginx
Starten Sie dann Nginx mit diesem Befehl:
sudo systemctl start nginx
Überprüfen Sie jetzt seinen Status.
sudo systemctl status nginx
Ausgabe:
● nginx.service - A high performance web server and a reverse proxy server Loaded: loaded (/lib/systemd/system/nginx.service; enabled; vendor preset: enabled) Active: active (running) since Fri 2020-04-10 14:11:43 UTC; 3s ago Docs: man:nginx(8) Process: 8533 ExecStartPre=/usr/sbin/nginx -t -q -g daemon on; master_process on; (code=exited, status=0/SUCCESS) Process: 8545 ExecStart=/usr/sbin/nginx -g daemon on; master_process on; (code=exited, status=0/SUCCESS) Main PID: 8549 (nginx) Tasks: 3 (limit: 9451) Memory: 3.9M CGroup: /system.slice/nginx.service ├─8549 nginx: master process /usr/sbin/nginx -g daemon on; master_process on; ├─8550 nginx: worker process └─8551 nginx: worker process
„Aktiviert “ zeigt an, dass der automatische Start beim Booten aktiviert ist, und wir können sehen, dass Nginx ausgeführt wird. Sie können auch sehen, wie viel RAM Nginx aus der Ausgabe verwendet. Wenn der obige Befehl nach dem Ausführen nicht sofort beendet wird. Sie müssen „q drücken ” um es zu beenden.
Überprüfen Sie die Nginx-Version.
nginx -v
Ausgabe:
nginx version: nginx/1.17.9 (Ubuntu)
Geben Sie nun die öffentliche IP-Adresse Ihres Ubuntu 20.04-Servers in die Adressleiste des Browsers ein. Sie sollten die Webseite „Willkommen bei Nginx“ sehen, was bedeutet, dass der Nginx-Webserver ordnungsgemäß ausgeführt wird. Wenn Sie LEMP auf Ihrem lokalen Ubuntu 20.04-Computer installieren, geben Sie 127.0.0.1
ein oder localhost
in der Adressleiste des Browsers.
Wenn die Verbindung abgelehnt wird oder nicht hergestellt werden kann, verhindert möglicherweise eine Firewall eingehende Anfragen an TCP-Port 80. Wenn Sie die iptables-Firewall verwenden, müssen Sie den folgenden Befehl ausführen, um TCP-Port 80 zu öffnen.
sudo iptables -I INPUT -p tcp --dport 80 -j ACCEPT
Wenn Sie eine UFW-Firewall verwenden, führen Sie diesen Befehl aus, um TCP-Port 80 zu öffnen.
sudo ufw allow http
Schließlich müssen wir www-data
erstellen (Nginx-Benutzer) als Eigentümer des Webverzeichnisses. Standardmäßig gehört es dem Root-Benutzer.
sudo chown www-data:www-data /usr/share/nginx/html -R
Schritt 3:MariaDB-Datenbankserver installieren
MariaDB ist ein Drop-in-Ersatz für MySQL. Es wurde von ehemaligen Mitgliedern des MySQL-Teams entwickelt, die befürchten, dass Oracle MySQL in ein Closed-Source-Produkt verwandeln könnte. Geben Sie den folgenden Befehl ein, um MariaDB auf Ubuntu 20.04 zu installieren.
sudo apt install mariadb-server mariadb-client
Nach der Installation sollte der MariaDB-Server automatisch gestartet werden. Verwenden Sie systemctl um seinen Status zu überprüfen.
systemctl status mariadb
Ausgabe:
● mariadb.service - MariaDB 10.3.22 database server Loaded: loaded (/lib/systemd/system/mariadb.service; enabled; vendor preset: enabled) Active: active (running) since Fri 2020-04-10 14:19:16 UTC; 18s ago Docs: man:mysqld(8) https://mariadb.com/kb/en/library/systemd/ Main PID: 9161 (mysqld) Status: "Taking your SQL requests now..." Tasks: 31 (limit: 9451) Memory: 64.7M CGroup: /system.slice/mariadb.service └─9161 /usr/sbin/mysqld
Wenn es nicht läuft, starten Sie es mit diesem Befehl:
sudo systemctl start mariadb
Damit MariaDB beim Booten automatisch startet, führen Sie
aussudo systemctl enable mariadb
Führen Sie nun das Sicherheitsskript nach der Installation aus.
sudo mysql_secure_installation
Wenn Sie aufgefordert werden, das MariaDB-Root-Passwort einzugeben, drücken Sie die Eingabetaste, da das Root-Passwort noch nicht festgelegt ist. Geben Sie dann y ein um das Root-Passwort für den MariaDB-Server festzulegen.
Als nächstes können Sie die Eingabetaste drücken, um alle verbleibenden Fragen zu beantworten, wodurch der anonyme Benutzer entfernt, die Remote-Root-Anmeldung deaktiviert und die Testdatenbank entfernt wird. Dieser Schritt ist eine Grundvoraussetzung für die MariaDB-Datenbanksicherheit. (Beachten Sie, dass Y großgeschrieben wird, was bedeutet, dass es die Standardantwort ist. )
Standardmäßig verwendet das MaraiDB-Paket auf Ubuntu unix_socket
um die Benutzeranmeldung zu authentifizieren, was im Grunde bedeutet, dass Sie den Benutzernamen und das Passwort des Betriebssystems verwenden können, um sich bei der MariaDB-Konsole anzumelden. Sie können also den folgenden Befehl ausführen, um sich anzumelden, ohne das MariaDB-Root-Passwort anzugeben.
sudo mariadb -u root
Führen Sie zum Beenden
ausexit;
Überprüfen Sie die Versionsinformationen des MariaDB-Servers.
mariadb --version
Wie Sie sehen können, haben wir MariaDB 10.3.22 installiert.
mariadb Ver 15.1 Distrib 10.3.22-MariaDB, for debian-linux-gnu (x86_64) using readline 5.2
Schritt 4:PHP7.4 installieren
PHP7.4 ist im Ubuntu 20.04-Repository enthalten und hat eine geringfügige Leistungsverbesserung gegenüber PHP7.3. Geben Sie den folgenden Befehl ein, um PHP7.4 und einige gängige Erweiterungen zu installieren.
sudo apt install php7.4 php7.4-fpm php7.4-mysql php-common php7.4-cli php7.4-common php7.4-json php7.4-opcache php7.4-readline php7.4-mbstring php7.4-xml php7.4-gd php7.4-curl
PHP-Erweiterungen werden häufig für Content-Management-Systeme (CMS) wie WordPress benötigt. Zum Beispiel, wenn Ihrer Installation php7.4-xml
fehlt , dann sind einige Ihrer WordPress-Site-Seiten möglicherweise leer und Sie finden einen Fehler im Nginx-Fehlerprotokoll wie:
PHP message: PHP Fatal error: Uncaught Error: Call to undefined function xml_parser_create()
Die Installation dieser PHP-Erweiterungen stellt sicher, dass Ihr CMS reibungslos läuft. Starten Sie nun php7.4-fpm.
sudo systemctl start php7.4-fpm
Autostart beim Booten aktivieren.
sudo systemctl enable php7.4-fpm
Status prüfen:
systemctl status php7.4-fpm
Beispielausgabe:
● php7.4-fpm.service - The PHP 7.4 FastCGI Process Manager Loaded: loaded (/lib/systemd/system/php7.4-fpm.service; enabled; vendor pr> Active: active (running) since Fri 2020-04-10 14:40:26 UTC; 12s ago Docs: man:php-fpm7.4(8) Process: 21019 ExecStartPost=/usr/lib/php/php-fpm-socket-helper install /ru> Main PID: 21012 (php-fpm7.4) Status: "Processes active: 0, idle: 2, Requests: 0, slow: 0, Traffic: 0req> Tasks: 3 (limit: 9451) Memory: 9.4M CGroup: /system.slice/php7.4-fpm.service ├─21012 php-fpm: master process (/etc/php/7.4/fpm/php-fpm.conf) ├─21017 php-fpm: pool www └─21018 php-fpm: pool www
Wenn der obige Befehl nach dem Ausführen nicht sofort beendet wird. Sie müssen „q drücken ” um es zu beenden.
Schritt 5:Erstellen Sie einen Nginx-Serverblock
Ein Nginx-Serverblock ist wie ein virtueller Host in Apache. Wir werden den Standardserverblock nicht verwenden, da er nicht ausreicht, um PHP-Code auszuführen, und wenn wir ihn ändern, wird es zu einem Chaos. Entfernen Sie also den default
Symlink in sites-enabled
Verzeichnis, indem Sie den folgenden Befehl ausführen. (Es ist immer noch als /etc/nginx/sites-available/default
verfügbar .)
sudo rm /etc/nginx/sites-enabled/default
Verwenden Sie dann einen Befehlszeilen-Texteditor wie Nano, um eine brandneue Serverblockdatei unter /etc/nginx/conf.d/ zu erstellen Verzeichnis.
sudo nano /etc/nginx/conf.d/default.conf
Fügen Sie den folgenden Text in die Datei ein. Das folgende Snippet veranlasst Nginx, IPv4-Port 80 und IPv6-Port 80 mit einem Catch-All-Servernamen zu überwachen.
server { listen 80; listen [::]:80; server_name _; root /usr/share/nginx/html/; index index.php index.html index.htm index.nginx-debian.html; location / { try_files $uri $uri/ /index.php; } location ~ \.php$ { fastcgi_pass unix:/run/php/php7.4-fpm.sock; fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name; include fastcgi_params; include snippets/fastcgi-php.conf; } # A long browser cache lifetime can speed up repeat visits to your page location ~* \.(jpg|jpeg|gif|png|webp|svg|woff|woff2|ttf|css|js|ico|xml)$ { access_log off; log_not_found off; expires 360d; } # disable access to hidden files location ~ /\.ht { access_log off; log_not_found off; deny all; } }
Speichern und schließen Sie die Datei. (Um eine Datei im Nano-Texteditor zu speichern, drücken Sie Ctrl+O
, und drücken Sie dann Enter
bestätigen. Drücken Sie zum Beenden Ctrl+X
.)
Testen Sie dann die Nginx-Konfigurationen.
sudo nginx -t
Wenn der Test erfolgreich ist, laden Sie Nginx neu.
sudo systemctl reload nginx
Schritt 6:PHP testen
Um PHP-FPM mit dem Nginx-Webserver zu testen, müssen wir eine info.php
erstellen Datei im Webroot-Verzeichnis.
sudo nano /usr/share/nginx/html/info.php
Fügen Sie den folgenden PHP-Code in die Datei ein.
<?php phpinfo(); ?>
Speichern und schließen Sie die Datei. Geben Sie nun in der Adressleiste des Browsers server-ip-address/info.php
ein . Ersetzen Sie sever-ip-address
mit deiner aktuellen IP. Wenn Sie dieser Anleitung auf Ihrem lokalen Computer folgen, geben Sie 127.0.0.1/info.php
ein oder localhost/info.php
.
Sie sollten die PHP-Informationen Ihres Servers sehen. Dies bedeutet, dass PHP-Skripte ordnungsgemäß mit dem Nginx-Webserver ausgeführt werden können.
Herzlichen Glückwunsch! Sie haben Nginx, MariaDB und PHP7.4 erfolgreich auf Ubuntu 20.04 installiert. Zur Sicherheit Ihres Servers sollten Sie info.php
löschen Datei jetzt, um zu verhindern, dass Hacker sie sehen.
sudo rm /usr/share/nginx/html/info.php
Tipp zur Fehlerbehebung
Wenn Fehler auftreten, können Sie das Nginx-Fehlerprotokoll überprüfen (/var/log/nginx/error.log
), um herauszufinden, was falsch ist.
Automatischer Nginx-Neustart
Wenn Ihr Nginx-Prozess aus irgendeinem Grund beendet wird, müssen Sie den folgenden Befehl ausführen, um ihn neu zu starten.
sudo systemctl restart nginx
Anstatt diesen Befehl manuell einzugeben, können wir Nginx automatisch neu starten lassen, indem wir nginx.service
bearbeiten Systemd-Diensteinheit. Um die standardmäßige systemd-Dienstkonfiguration zu überschreiben, erstellen wir ein separates Verzeichnis.
sudo mkdir -p /etc/systemd/system/nginx.service.d/
Erstellen Sie dann eine Datei in diesem Verzeichnis.
sudo nano /etc/systemd/system/nginx.service.d/restart.conf
Fügen Sie der Datei die folgenden Zeilen hinzu, wodurch Nginx 5 Sekunden automatisch neu gestartet wird nachdem ein Fehler erkannt wurde. Der Standardwert von RetartSec
beträgt 100 ms , was zu klein ist. Nginx kann sich darüber beschweren, dass „Startanforderung zu schnell wiederholt wird“, wenn RestartSec
ist nicht groß genug.
[Service] Restart=always RestartSec=5s
Speichern und schließen Sie die Datei. Laden Sie dann systemd neu, damit die Änderungen wirksam werden.
sudo systemctl daemon-reload
Um zu überprüfen, ob dies funktioniert, beenden Sie Nginx mit:
sudo pkill nginx
Überprüfen Sie dann den Nginx-Status. Nginx wird automatisch neu gestartet.
systemctl status nginx
Nächster Schritt
Ich hoffe, dieses Tutorial hat Ihnen geholfen, den LEMP-Stack unter Ubuntu 20.04 LTS zu installieren . Möglicherweise möchten Sie phpMyAdmin installieren, ein kostenloses und webbasiertes Open-Source-Datenbankverwaltungstool.
- So installieren Sie phpMyAdmin mit Nginx (LEMP) auf Ubuntu 20.04 LTS
Sie können WordPress auch auf dem LEMP-Stack installieren, um Ihre eigene Website oder Ihren eigenen Blog zu erstellen.
- Installieren Sie WordPress auf Ubuntu 20.04 mit Nginx, MariaDB, PHP7.4 (LEMP)
Wenn Sie diesen Beitrag nützlich fanden, abonnieren Sie wie immer unseren kostenlosen Newsletter, um weitere Tipps und Tricks zu erhalten. Pass auf dich auf 🙂