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

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 diesen Leitfaden zu vervollständigen, benötigen Sie:

  • Ein Debian 8-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 8 einrichten.

Schritt 1 - Installieren Sie den Nginx-Webserver

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-get update
sudo apt-get install nginx

Unter Debian 8 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 für unseren Server noch kein SSL 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.

Alternativ können Sie überprüfen, auf welche IP-Adresse von anderen Standorten im Internet aus zugegriffen werden kann:

curl -4 icanhazip.com

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 - Installieren Sie MySQL, um Site-Daten zu verwalten

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-get install mysql-server

Sie werden aufgefordert, ein Root-Kennwort (Administratorkennwort) für die Verwendung innerhalb des MySQL-Systems einzugeben, und Sie müssen dieses Kennwort bestätigen.

Die MySQL-Datenbanksoftware ist jetzt installiert, die Konfiguration ist jedoch noch nicht vollständig.

Um die Installation zu sichern, können wir ein einfaches 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 einzugeben, das Sie für das MySQL * root * -Konto festgelegt haben. Dann werden Sie gefragt, ob Sie dieses Passwort ändern möchten. Wenn Sie mit Ihrem aktuellen Passwort zufrieden sind, geben Sie an der Eingabeaufforderung "+ N +" für "nein" ein:

Using existing password for root.

Setting the root password ensures that nobody can log into the MySQL
root user without the proper authorisation.

You already have a root password set, so you can safely answer 'n'.

Change the root password? [Y/n]
... skipping.

Für die restlichen Fragen, die das Skript stellt, sollten Sie bei jeder Eingabeaufforderung die Tastenkombination "+ Y " und anschließend die Tastenkombination " ENTER +" drücken. 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 - Installieren Sie PHP für die Verarbeitung

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.

Diese Pakete sind aufgrund von Lizenzproblemen nicht in den Standard-Repositorys verfügbar. Daher müssen Sie die Repository-Quellen ändern, um sie abzurufen.

Öffne + / etc / apt / sources.list + in deinem Texteditor:

sudo nano /etc/apt/sources.list

Fügen Sie dann für jede Quelle die Repositorys "+ contrib " und " non-free +" an jede Quelle an. Ihre Datei sollte wie folgt aussehen, nachdem Sie diese Änderungen vorgenommen haben:

/etc/apt/sources.list

...
deb http://mirrors.digitalocean.com/debian jessie main
deb-src http://mirrors.digitalocean.com/debian jessie main

deb http://security.debian.org/ jessie/updates main
deb-src http://security.debian.org/ jessie/updates main

# jessie-updates, previously known as 'volatile'
deb http://mirrors.digitalocean.com/debian jessie-updates main
deb-src http://mirrors.digitalocean.com/debian jessie-updates main

Speichern und schließen Sie die Datei. Dann aktualisiere deine Quellen:

sudo apt-get update

Dann installiere die + php5-fpm und` + php 5-mysql` Module:

sudo apt-get install php5-fpm php5-mysql

Wir haben jetzt unsere PHP-Komponenten installiert, müssen aber eine kleine Konfigurationsänderung vornehmen, um unser Setup sicherer zu machen.

Öffnen Sie die Hauptkonfigurationsdatei + php-fpm + mit root-Rechten:

sudo nano /etc/php5/fpm/php.ini

Suchen Sie in der Datei nach dem Parameter, der "+ cgi.fix_pathinfo +" festlegt. Dies wird mit einem Semikolon (;) auskommentiert und standardmäßig auf „1“ gesetzt.

Dies ist eine extrem unsichere Einstellung, da PHP aufgefordert wird, die nächstgelegene Datei auszuführen, die es finden kann, wenn die angeforderte PHP-Datei nicht gefunden werden kann. Auf diese Weise können Benutzer PHP-Anforderungen so erstellen, dass sie Skripts ausführen können, die sie nicht ausführen dürfen.

Wir werden diese beiden Bedingungen ändern, indem wir die Zeile auskommentieren und wie folgt auf "0" setzen:

/etc/php5/fpm/php.ini

cgi.fix_pathinfo=0

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

Jetzt müssen wir nur noch Ihren PHP-Prozessor neu starten, indem wir Folgendes eingeben:

sudo systemctl restart php5-fpm

Dadurch wird die von uns vorgenommene Änderung umgesetzt.

Schritt 4 - Konfigurieren Sie Nginx für die 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.

Wir tun dies auf der Ebene der Serverblöcke (Serverblöcke ähneln den virtuellen Apache-Hosts). Öffnen Sie die Standardkonfigurationsdatei für den Nginx-Serverblock, indem Sie Folgendes eingeben:

sudo nano /etc/nginx/sites-available/default

Derzeit sieht die Nginx-Standard-Serverblockdatei mit den entfernten Kommentaren folgendermaßen aus:

/ etc / nginx / sites-available / default

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

   root /var/www/html;
   index index.html index.htm index.nginx-debian.html;

   server_name _;

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

Wir müssen einige Änderungen an dieser Datei für unsere Site vornehmen.

  • Zuerst müssen wir "+ index.php" als ersten Wert unserer "+ index " - Direktive hinzufügen, damit Dateien mit dem Namen " index.php" geliefert werden, falls verfügbar, wenn ein Verzeichnis angefordert wird.

  • Wir können die Anweisung "+ Servername" so ändern, dass sie auf den Domainnamen oder die öffentliche IP-Adresse Ihres Servers verweist.

  • Für die eigentliche PHP-Verarbeitung müssen wir nur ein Segment der Datei auskommentieren, das PHP-Anforderungen verarbeitet. Dies ist der + location ~ \ .php $ + location-Block, das enthaltene + fastcgi-php.conf + Snippet und der mit + php-fpm + verknüpfte Socket.

  • Wir werden auch den Location Block entfernen, der sich mit + .htaccess + Dateien befasst. Nginx verarbeitet diese Dateien nicht. Wenn eine dieser Dateien in den Dokumentenstamm gelangt, sollte sie nicht an Besucher weitergeleitet werden.

Die Änderungen, die Sie vornehmen müssen, sind im folgenden Text rot dargestellt:

/ etc / nginx / sites-available / default

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

   root /var/www/html;
   index  index.html index.htm index.nginx-debian.html;

   server_name ;

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









}

Wenn Sie die obigen Änderungen vorgenommen haben, können Sie die Datei speichern und schließen.

Testen Sie Ihre Konfigurationsdatei 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 neu, um die erforderlichen Änderungen vorzunehmen:

sudo systemctl reload nginx

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/html/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/html/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.