Dieses Tutorial zeigt Ihnen, wie Sie Nginx, MariaDB und PHP7.3 (LEMP-Stack) auf Debian 10 Buster installieren. Ein Software-Stack ist eine Reihe von Software-Tools, die gebündelt sind. LEMP steht für L inux, Nginx , M ariaDB/M ySQL und P HP, die alle Open Source sind und kostenlos verwendet werden können. Es ist ein sehr verbreiteter 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.
Alle vier Komponenten sind kostenlos und Open Source. Da MySQL jetzt jedoch im Besitz von Oracle ist und die Möglichkeit besteht, dass Oracle es in ein Closed-Source-Produkt umwandelt, werden wir uns für MariaDB anstelle von MySQL entscheiden.
Voraussetzungen für die Installation von LEMP Stack auf Debian 10 Buster
Um diesem Tutorial zu folgen, benötigen Sie ein Debian 10-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 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.
Bitte beachten Sie, dass Sie Root-Rechte haben müssen, wenn Sie Software unter Debian installieren. Sie können sudo hinzufügen am Anfang eines Befehls oder verwenden Sie su -
Befehl, um zum Root-Benutzer zu wechseln.
Schritt 1:Softwarepakete aktualisieren
Bevor wir den LEMP-Stack installieren, ist es eine gute Idee, das Repository und die Softwarepakete zu aktualisieren. Führen Sie den folgenden Befehl auf Ihrem Debian 10-Betriebssystem aus.
sudo apt update sudo apt upgrade
Schritt 2:Nginx-Webserver auf Debian 10 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 sollte Nginx automatisch gestartet werden. Überprüfen Sie seinen Status mit systemctl
.
systemctl status nginx
Beispielausgabe:
● nginx.service - A high performance web server and a reverse proxy server Loaded: loaded (/lib/systemd/system/nginx.service; enabled; vendor preset: en Active: active (running) since Sat 2019-08-10 06:20:26 UTC; 54s ago Docs: man:nginx(8) Main PID: 19713 (nginx) Tasks: 2 (limit: 1149) Memory: 4.6M CGroup: /system.slice/nginx.service ├─19713 nginx: master process /usr/sbin/nginx -g daemon on; master_pr └─19714 nginx: worker process
Hinweis:Wenn der obige Befehl nicht sofort beendet wird, können Sie die Q-Taste drücken, um die Kontrolle über das Terminalfenster zurückzugewinnen.
Wenn es nicht läuft, verwenden Sie systemctl, um es zu starten.
sudo systemctl start nginx
Es ist auch eine gute Idee, Nginx so zu aktivieren, dass es beim Booten automatisch startet.
sudo systemctl enable nginx
Überprüfen Sie die Nginx-Version:
sudo nginx -v
Ausgabe:
nginx version: nginx/1.14.2
Geben Sie nun die öffentliche IP-Adresse Ihres Debian 10-Servers in die Adressleiste des Browsers ein. Sie sollten die Standardwebseite „Welcome to nginx“ sehen, was bedeutet, dass der Nginx-Webserver ordnungsgemäß ausgeführt wird. Wenn Sie LEMP auf Ihrem lokalen Debian 10-Computer installieren, sollten Sie 127.0.0.1
eingeben 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
Jetzt müssen wir www-data
festlegen (Nginx-Benutzer) als Besitzer des Dokumentstammverzeichnisses (auch bekannt als Webstammverzeichnis). Standardmäßig gehört es dem Root-Benutzer. (Beachten Sie, dass Nginx standardmäßig /usr/share/nginx/html/
verwendet als Web-Root, während der Apache-Webserver /var/www/html/
verwendet wie wir rooten.)
sudo chown www-data:www-data /usr/share/nginx/html/ -R
Schritt 3:MariaDB-Datenbankserver auf Debian 10 installieren
MariaDB ist ein Drop-in-Ersatz für MySQL. Geben Sie den folgenden Befehl ein, um es unter Debian 10 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.15 database server Loaded: loaded (/lib/systemd/system/mariadb.service; enabled; vendor preset: Active: active (running) since Sat 2019-08-10 06:38:58 UTC; 13s ago Docs: man:mysqld(8) https://mariadb.com/kb/en/library/systemd/ Main PID: 20669 (mysqld) Status: "Taking your SQL requests now..." Tasks: 31 (limit: 1149) Memory: 77.7M CGroup: /system.slice/mariadb.service └─20669 /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 einfach die Eingabetaste drücken, um alle verbleibenden Fragen zu beantworten. Dadurch wird der anonyme Benutzer entfernt, die Remote-Root-Anmeldung deaktiviert und die Testdatenbank entfernt. Dieser Schritt ist eine Grundvoraussetzung für die MariaDB-Datenbanksicherheit. (Beachten Sie, dass der Buchstabe Y
wird groß geschrieben, was bedeutet, dass es die Standardantwort ist.)
Standardmäßig verwendet das MaraiDB-Paket auf Debian 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
oder
sudo mysql -u root
Führen Sie zum Beenden
ausexit;
Überprüfen Sie die Versionsinformationen des MariaDB-Servers.
mariadb --version
Ausgabe:
mariadb Ver 15.1 Distrib 10.3.15-MariaDB, for debian-linux-gnu (x86_64) using readline 5.2
Schritt 4:Installieren Sie PHP7.3 auf Debian 10
Zum Zeitpunkt der Erstellung dieses Artikels ist PHP7.3 die neueste stabile Version von PHP und weist gegenüber früheren Versionen eine geringfügige Leistungsverbesserung auf. Geben Sie den folgenden Befehl ein, um PHP7.3 und einige gängige PHP-Erweiterungen aus dem Debian 10-Repository zu installieren.
sudo apt install php7.3 php7.3-fpm php7.3-mysql php-common php7.3-cli php7.3-common php7.3-json php7.3-opcache php7.3-readline
Überprüfen Sie die PHP-Versionsinformationen.
php --version
Ausgabe:
PHP 7.3.4-2 (cli) (built: Apr 13 2019 19:05:48) ( NTS ) Copyright (c) 1997-2018 The PHP Group Zend Engine v3.3.4, Copyright (c) 1998-2018 Zend Technologies with Zend OPcache v7.3.4-2, Copyright (c) 1999-2018, by Zend Technologies
Starten Sie nun php7.3-fpm.
sudo systemctl start php7.3-fpm
Autostart beim Booten aktivieren.
sudo systemctl enable php7.3-fpm
Status prüfen:
systemctl status php7.3-fpm
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
Erstellen Sie dann eine brandneue Serverblockdatei unter /etc/nginx/conf.d/ Verzeichnis mit einem Befehlszeilen-Texteditor wie Nano.
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.3-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 zur Bestätigung die Eingabetaste. 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-Skripte mit dem Nginx-Server zu testen, müssen wir eine info.php
erstellen Datei im Web-Root-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. Sie können feststellen, dass Zend OPcache aktiviert 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 nach Erkennung eines Fehlers automatisch neu gestartet wird.
[Service] Restart=always RestartSec=5s
Speichern und schließen Sie die Datei. Laden Sie dann systemd neu.
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