Installation und Konfiguration von Nginx und PHP-fpm unter Debian
Nginx ist ein Webserver, der im Jahr 2004 veröffentlicht wurde. Dieser Server ist einfach zu bedienen, aber trotzdem kann er viele Verbindungen perfekt verarbeiten. Diese Eigenschaft ist auf seine interne Architektur zurückzuführen. Ursprünglich wurde er als Server für statische Inhalte entwickelt (sogenannter Caching-Server). Im Gegensatz zum Apache verfügt Nginx nicht über einen eingebauten Interpreter für die Bearbeitung von Anfragen nach dynamischen Inhalten.
Dies erfordert eine weitere Interaktion zwischen dem Webserver und der Anwendung. Mit dem Prozessmanager PHP-FPM (FastCGI) wird dieses Problem erfolgreich gelöst. Wichtig ist, dass sich der Binder Nginx + PHP-FPM bei der Arbeit mit PHP als weniger produktiv erweist als Apache + php_mod.
Wenn Ihr Server also hohe Anforderungen an die Leistungsfähigkeit von PHP stellt, sollten Sie sich lieber das Paket apache + php_mod ansehen. Ein weiterer wichtiger Punkt ist, dass Nginx mehr Aufwand bei der Konfiguration erfordert als Apache.
Dieser Artikel befasst sich mit der Installation und einfachen Konfiguration des Nginx-Servers in Verbindung mit dem Prozessmanager PHP-FPM in Debian 8. Alle Operationen werden mit den Rechten des Benutzers root durchgeführt.
Zuerst müssen Sie aktualisieren:
apt-get update
Als nächstes installieren wir Nginx:
apt-get -y install nginx
Nach der Installation werden wir den Server testen. Dazu öffnen Sie einfach die Webbrowser-Adresse unseres Servers. Der folgende Inhalt sollte sich öffnen:
Dies ist die Standard-Plug-in-Seite für Nginx. Der nächste Schritt ist die Installation von php5-fpm. Das ist sehr einfach:
apt-get -y install php5-fpm
Als nächstes müssen Sie die Einrichtung vornehmen. Konfigurieren Sie zunächst den Nginx-Server. Die Konfigurationsdatei befindet sich in der Datei /etc/nginx/nginx.conf.
Öffnen Sie diese Datei. Wir verwenden den Texteditor vi, aber Sie können auch einen anderen Editor verwenden, der Ihnen zusagt.
vi /etc/nginx/nginx.conf
Lassen Sie uns ein wenig über die Struktur der Datei selbst verstehen. Die gesamte Datei ist ähnlich aufgebaut wie der Programmcode. Sie enthält Direktiven. Sie sind in zwei Typen unterteilt:
- Einfach - eine Zeichenkette mit Operatoren, die mit dem Symbol ";" enden. Zum Beispiel: pid /run/nginx.pid;
- Block - eine Direktive mit zusätzlichen Parametern, die in geschweiften Klammern {} stehen.
Andere Direktiven können innerhalb geschweifter Klammern gesetzt werden. In diesem Fall wird er als Kontext bezeichnet, und alle Direktiven, die in der Konfigurationsdatei stehen, aber nicht in geschweiften Klammern, befinden sich im globalen Kontext oder im sogenannten Hauptkontext.
Zeichenketten, die mit dem Symbol # gekennzeichnet sind, sind Kommentare und werden in der Konfiguration nicht berücksichtigt.
Wie Sie in der Datei sehen können, gibt es eine Direktive:
include /etc/nginx/sites-enabled/*;
Diese Anweisung besagt, dass diese Konfigurationsdatei alle Konfigurationsdateien aus dem Verzeichnis /etc/nginx/sites-enabled/d einschließt. Dieses Verzeichnis enthält im Wesentlichen symbolische Links auf die Konfiguration der virtuellen Hosts (im Wesentlichen die auf dem Server angebotenen Sites).
Nun müssen wir einen virtuellen Host konfigurieren, der für unsere einfachste Ressource zuständig sein wird (z. B. test.net). Zuerst legen wir ein Verzeichnis für ihn an. Machen wir daraus einen Befehl:
mkdir -p /var/www/test.net/html
Nun legen wir in diesem Verzeichnis eine Datei index.html mit folgendem Inhalt an:
<html> <head> <title>Hallo Welt</title> </head> <body> <h>Dies ist eine Testseite.</h> </body> </html>
Jetzt haben wir den Inhalt der Site, lassen und eine Seite von allem. Für diese Website müssen Sie einen virtuellen Host erstellen. Kopieren Sie die Standarddatei für den virtuellen Host:
cp /etc/nginx/sites-available/default /etc/nginx/sites-available/test.net
Öffnen Sie dann die Datei zur Bearbeitung. Die listen-Direktive hat Optionen für default_server. Es kann nur ein Block mit diesem Wert gesetzt werden, was bedeutet, dass dieser Block Anfragen bedient, für die kein geeigneterer gefunden wird. Daher die Zeilen
listen 80 default_server; listen [::]:80 default_server;
aus dieser Datei entfernen. Als nächstes müssen Sie das Stammverzeichnis konfigurieren, das den Inhalt unserer Website enthält. Dazu schreiben wir die Root-Direktive wie folgt:
root /var/www/test.net/html;
Die folgende index-Direktive definiert die Dateien, die als Indexdateien verwendet werden sollen. Die Reihenfolge, in der die Dateien überprüft werden, entspricht der Reihenfolge in der Konfigurationsdatei. Diese Direktive wird wie folgt geschrieben:
index index.html index.htm index.nginx-debian.html;
Die folgende server_name-Direktive gibt den Servernamen an. Als Werte geben wir den Domainnamen und den Alias an, wenn der Domainname mit dem Präfix www angegeben wird.
server_name test.net www.test.net;
Als Nächstes müssen Sie nur noch eine location-Direktive angeben, die die Site-Konfiguration auf der Grundlage des in der Anfrage angegebenen URI-Namens festlegt. In unserem Fall sieht das einfach aus:
location / { try_files $uri $uri/ =404; }
Das bedeutet, dass zuerst die Dateien und dann die Verzeichnisse geprüft werden, und wenn nichts Passendes gefunden wird, wird Not Found (404) zurückgegeben.
Das war's mit der Konfigurationsdatei. Ihr endgültiger Inhalt ist wie folgt:
#cat /etc/nginx/sites-available/test.net
server { root /var/www/test.net/html; index index.html index.htm index.nginx-debian.html; server_name test.net www.test.net; location / { try_files $uri $uri/ =404; } }
Alle anderen Direktiven und ihre Werte können in der offiziellen Nginx-Dokumentation nachgelesen werden, die hier zu finden ist: http: //nginx.org/en/docs/.
Jetzt haben wir den Inhalt der Website und ihre Konfigurationsdatei. Nun müssen wir sie noch einbinden. Dazu erstellen Sie einen symbolischen Link:
ln -s /etc/nginx/sites-available/test.net /etc/nginx/sites-enabled/
Starten Sie den Server neu, damit die Änderungen wirksam werden:
/etc/init.d/nginx restart
Überprüfen wir nun die Arbeit der erstellten Ressource.
Um eine Seite zu öffnen, müssen Sie eventuell eine Zeile in die Hosts-Datei auf dem Computer hinzufügen, von dem aus Sie prüfen:
xxx.xxx.xxx.xxx test.net
Где xxx.xxx.xxx.xxx - это IP-адрес сервера с установленным Nginx. Файл hosts, находится:
- C:\Windows\System32\drivers\etc (в Win7);
- /etc/hosts (в Debian).
Wir haben Nginx und php5-fpm installiert und die einfachste Website erstellt. Der nächste Schritt besteht darin, PHP zu konfigurieren und es mit Nginx anzuwenden.
Zuerst werden wir eine Seite mit PHP-Code auf unserem virtuellen Host erstellen. Wir erstellen die Datei /var/www/test.net/html/info.php wie folgt:
<?php phpinfo(); ?>
Öffnen Sie nun diese Seite im Browser http://test.net/info.php
Aber was ist mit der Ausführung von PHP-Code? Einen PHP-Code haben wir nicht ausgeführt, weil der PHP-Interpreter in Nginx nicht konfiguriert ist. Gehen wir folgendermaßen vor.
Öffnen Sie unsere Konfigurationsdatei /etc/nginx/sites-available/test.net. Fügen Sie die folgende Blockanweisung hinzu:
location ~ \.php$ { try_files $uri =404; fastcgi_pass unix:/var/run/php5-fpm.sock; fastcgi_index index.php; fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name; include fastcgi_params; }
Diese Richtlinie beschreibt die Parameter für die Verarbeitung von Anfragen, die an PHP-Dateien gehen. Ich werde nicht jeden einzelnen Parameter und seinen Wert beschreiben. Diese Informationen finden Sie in der offiziellen Dokumentation hier http://nginx.org/en/docs/dirindex.html
Unsere Konfigurationsdatei sieht nun wie folgt aus:
server { root /var/www/test.net/html; index index.html index.htm index.nginx-debian.html; server_name test.net www.test.net; location / { try_files $uri $uri/ =404; } location ~ \.php$ { try_files $uri =404; fastcgi_pass unix:/var/run/php5-fpm.sock; fastcgi_index index.php; fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name; include fastcgi_params; }
Speichern Sie die Änderungen in der Datei und starten Sie unseren Nginx-Server neu.
/etc/init.d/nginx neustart
Versuchen wir nun erneut, http://test.net/info.php zu öffnen. Das Ergebnis sollte wie folgt aussehen:
Ich habe die Informationen im Screenshot markiert, die auf die Verwendung des FPM-Managers hinweisen.
In der Tat ist die einfachste Konfiguration von Nginx + PHP-FPM-Server abgeschlossen. Die einfachste Website wird erstellt und für die Arbeit mit PHP konfiguriert.
Siehe den folgenden Artikel über die Konfiguration von PHP-FPM.
Content