Wie installiere ich Linux, Nginx, MySQL, PHP (LEMP-Stack) auf Debian 9?

Einführung

Der LEMP-Software-Stack ist eine Gruppe von Software, mit der dynamische Webseiten und Webanwendungen bereitgestellt werden können. Dies ist ein Akronym, das ein Linux-Betriebssystem mit einem Nginx-Webserver beschreibt. Die Backend-Daten werden in der MySQL-Datenbank gespeichert und die dynamische Verarbeitung wird von PHP übernommen.

In diesem Handbuch installieren Sie einen LEMP-Stack auf einem Debian-Server mit den vom Betriebssystem bereitgestellten Paketen.

Voraussetzungen

Um dieses Handbuch zu vervollständigen, benötigen Sie einen Debian 9-Server mit einem Nicht-Root-Benutzer mit + sudo + - Berechtigungen. Sie können einen Benutzer mit diesen Berechtigungen in unserem Handbuch Initial Server Setup with Debian 9 einrichten.

Schritt 1 - Installieren des Nginx-Webservers

Um Webseiten für die Besucher unserer Website anzuzeigen, setzen wir Nginx ein, einen modernen, effizienten Webserver.

Die gesamte Software, die wir für dieses Verfahren verwenden, wird direkt aus Debians Standard-Paket-Repositorys stammen. Dies bedeutet, dass wir die Paketverwaltungssuite "+ apt +" verwenden können, um die Installation abzuschließen.

Da wir zum ersten Mal "+ apt +" für diese Sitzung verwenden, sollten wir zunächst unseren lokalen Paketindex aktualisieren. Wir können dann den Server installieren:

sudo apt update
sudo apt install nginx

Unter Debian 9 ist Nginx so konfiguriert, dass es bei der Installation ausgeführt wird.

Wenn die Firewall "+ ufw " ausgeführt wird, müssen Sie Verbindungen zu Nginx zulassen. Sie sollten das restriktivste Profil aktivieren, das weiterhin den gewünschten Datenverkehr zulässt. Da wir SSL für unseren Server noch nicht konfiguriert haben, müssen wir in diesem Handbuch nur den Datenverkehr auf dem Port " 80 +" zulassen.

Sie können dies aktivieren, indem Sie Folgendes eingeben:

sudo ufw allow 'Nginx HTTP'

Sie können die Änderung überprüfen, indem Sie Folgendes eingeben:

sudo ufw status

In der angezeigten Ausgabe sollte HTTP-Verkehr zulässig sein:

OutputStatus: active

To                         Action      From
--                         ------      ----
OpenSSH                    ALLOW       Anywhere
Nginx HTTP                 ALLOW       Anywhere
OpenSSH (v6)               ALLOW       Anywhere (v6)
Nginx HTTP (v6)            ALLOW       Anywhere (v6)

Testen Sie nun, ob der Server in Betrieb ist, indem Sie in Ihrem Webbrowser auf den Domainnamen oder die öffentliche IP-Adresse Ihres Servers zugreifen. Wenn auf Ihrem Server kein Domainname angezeigt wird und Sie die öffentliche IP-Adresse Ihres Servers nicht kennen, geben Sie eine der folgenden Zeichen in Ihr Terminal ein:

ip addr show eth0 | grep inet | awk '{ print $2; }' | sed 's/\/.*$//'

Dadurch werden einige IP-Adressen ausgedruckt. Sie können sie nacheinander in Ihrem Webbrowser ausprobieren.

Geben Sie eine der Adressen ein, die Sie in Ihrem Webbrowser erhalten. Sie sollten zur Standard-Zielseite von Nginx gelangen:

http://

Wenn Sie die obige Seite sehen, haben Sie Nginx erfolgreich installiert.

Schritt 2 - Installation von MySQL zum Verwalten von Site-Daten

Da wir nun einen Webserver haben, müssen wir MySQL, ein Datenbankverwaltungssystem, installieren, um die Daten für unsere Site zu speichern und zu verwalten.

Sie können dies einfach installieren, indem Sie Folgendes eingeben:

sudo apt install mysql-server

Die MySQL-Datenbanksoftware ist jetzt installiert, ihre Konfiguration ist jedoch nicht abgeschlossen.

Um die Installation zu sichern, können wir ein Sicherheitsskript ausführen, das Sie fragt, ob Sie einige unsichere Standardeinstellungen ändern möchten. Beginnen Sie das Skript, indem Sie Folgendes eingeben:

sudo mysql_secure_installation

Sie werden aufgefordert, das Kennwort für das MySQL-Konto * root * einzugeben. Wir haben dies noch nicht festgelegt, drücken Sie also einfach "+ ENTER ". Dann werden Sie gefragt, ob Sie dieses Passwort festlegen möchten. Sie sollten ` y +` eingeben und dann ein * root * -Passwort festlegen.

Für den Rest der Fragen, die das Skript stellt, sollten Sie "+ y " drücken, gefolgt von der " ENTER +" - Taste bei jeder Eingabeaufforderung. Dadurch werden einige anonyme Benutzer und die Testdatenbank entfernt, Remote-Root-Anmeldungen deaktiviert und diese neuen Regeln geladen, sodass MySQL die von Ihnen vorgenommenen Änderungen sofort berücksichtigt.

Zu diesem Zeitpunkt ist Ihr Datenbanksystem nun eingerichtet und gesichert. Lassen Sie uns PHP einrichten.

Schritt 3 - PHP für die Verarbeitung installieren

Wir haben jetzt Nginx installiert, um unsere Seiten zu bedienen, und MySQL installiert, um unsere Daten zu speichern und zu verwalten. Wir haben jedoch immer noch nichts, was dynamische Inhalte erzeugen könnte. Hier kommt PHP ins Spiel.

Da Nginx wie einige andere Webserver keine native PHP-Verarbeitung enthält, müssen wir "+ fpm +" installieren, was für "fastCGI process manager" steht. Wir werden Nginx anweisen, PHP-Anfragen zur Verarbeitung an diese Software weiterzuleiten. Außerdem installieren wir ein zusätzliches Hilfspaket, mit dem PHP mit unserem MySQL-Datenbank-Backend kommunizieren kann. Bei der Installation werden die erforderlichen PHP-Kerndateien abgerufen, damit dies funktioniert.

Dann installieren Sie die Pakete + php-fpm und` + php-mysql`:

sudo apt install php-fpm php-mysql

Wir haben jetzt unsere PHP-Komponenten installiert. Als nächstes konfigurieren wir Nginx, um sie zu verwenden.

Schritt 4 - Konfigurieren von Nginx zur Verwendung des PHP-Prozessors

Jetzt haben wir alle erforderlichen Komponenten installiert. Die einzige Konfigurationsänderung, die wir noch vornehmen müssen, besteht darin, Nginx anzuweisen, unseren PHP-Prozessor für dynamische Inhalte zu verwenden.

Dies geschieht auf Serverblockebene (Serverblöcke ähneln den virtuellen Hosts von Apache). Wir lassen die Standardkonfiguration von Nginx unverändert und erstellen stattdessen eine neue Konfigurationsdatei und ein neues Web-Stammverzeichnis, in dem unsere PHP-Dateien gespeichert werden. Wir benennen die Konfigurationsdatei und das Verzeichnis nach dem Domainnamen oder Hostnamen, auf den der Server antworten soll.

Erstellen Sie zunächst ein neues Verzeichnis in + / var / www +, in dem sich die PHP-Site befindet:

sudo mkdir /var/www/

Öffnen Sie dann eine neue Konfigurationsdatei im Verzeichnis "+ sites-available +" von Nginx:

sudo nano /etc/nginx/sites-available/

Dadurch wird eine neue leere Datei erstellt. Fügen Sie die folgende Bare-Bones-Konfiguration ein:

/ etc / nginx / sites-available / your_domain

server {
   listen 80;
   listen [::]:80;

   root /var/www/;
   index index.php index.html index.htm;

   server_name ;

   location / {
       try_files $uri $uri/ =404;
   }

   location ~ \.php$ {
       include snippets/fastcgi-php.conf;
       fastcgi_pass unix:/var/run/php/php7.0-fpm.sock;
   }
}

Dies ist eine sehr grundlegende Konfiguration, die Port 80 überwacht und Dateien aus dem soeben erstellten Webstamm bereitstellt. Es wird nur auf Anfragen an den Namen antworten, der nach "+ Servername " angegeben wurde, und alle Dateien, die auf " .php " enden, werden vom " php-fpm +" - Prozess verarbeitet, bevor Nginx die Ergebnisse an den Benutzer sendet.

Speichern und schließen Sie die Datei, wenn Sie mit dem Anpassen fertig sind.

Aktivieren Sie Ihre Konfiguration, indem Sie im Verzeichnis + sites-enabled + von Nginx auf die Konfigurationsdatei verweisen:

sudo ln -s /etc/nginx/sites-available/.conf /etc/nginx/sites-enabled/

Dadurch wird Nginx angewiesen, die Konfiguration beim nächsten Laden zu verwenden. Testen Sie zunächst Ihre Konfiguration auf Syntaxfehler, indem Sie Folgendes eingeben:

sudo nginx -t

Wenn Fehler gemeldet werden, überprüfen Sie Ihre Datei erneut, bevor Sie fortfahren.

Wenn Sie bereit sind, laden Sie Nginx erneut, um die Änderungen vorzunehmen:

sudo systemctl reload nginx

Als Nächstes erstellen wir eine Datei in unserem neuen Web-Stammverzeichnis, um die PHP-Verarbeitung zu testen.

Schritt 5 - Erstellen Sie eine PHP-Datei zum Testen der Konfiguration

Ihr LEMP-Stack sollte jetzt vollständig eingerichtet sein. Wir können es testen, um zu überprüfen, ob Nginx + .php + Dateien korrekt an unseren PHP-Prozessor übergeben kann.

Wir können dies tun, indem wir eine Test-PHP-Datei in Ihrem Dokumentenstamm erstellen. Öffnen Sie eine neue Datei mit dem Namen "+ info.php +" in Ihrem Dokumentenstamm in Ihrem Texteditor:

sudo nano /var/www//info.php

Geben Sie die folgenden Zeilen ein oder fügen Sie sie in die neue Datei ein. Dies ist ein gültiger PHP-Code, der Informationen über unseren Server zurückgibt:

/var/www/your_domain/info.php

<?php
 phpinfo();
?>

Wenn Sie fertig sind, speichern und schließen Sie die Datei.

Sie können diese Seite jetzt in Ihrem Webbrowser aufrufen, indem Sie den Domain-Namen oder die öffentliche IP-Adresse Ihres Servers gefolgt von "+ / info.php +" aufrufen:

http:///info.php

Sie sollten eine von PHP generierte Webseite mit Informationen zu Ihrem Server sehen:

image: https: //assets.digitalocean.com/articles/lemp_debian8/ZP3DpyX.png [PHP-Seiteninfo]

Wenn Sie eine Seite sehen, die so aussieht, haben Sie die PHP-Verarbeitung mit Nginx erfolgreich eingerichtet.

Nachdem Sie sichergestellt haben, dass Nginx die Seite korrekt wiedergibt, entfernen Sie am besten die von Ihnen erstellte Datei, da sie nicht autorisierten Benutzern Hinweise zu Ihrer Konfiguration geben kann, die ihnen beim Versuch helfen können, einzudringen.

Entfernen Sie vorerst die Datei, indem Sie Folgendes eingeben:

sudo rm /var/www/html/info.php

Sie können diese Datei jederzeit neu generieren, wenn Sie sie später benötigen.

Fazit

Sie sollten jetzt einen LEMP-Stapel auf Ihrem Debian-Server konfiguriert haben. Dies gibt Ihnen eine sehr flexible Grundlage für die Bereitstellung von Webinhalten für Ihre Besucher.