PHP-FPM unter Linux konfigurieren

PHP-FPM unter Linux konfigurieren

Nataliya Oteir Read 9 minutes

Wir werden nicht auf die Grundeinstellungen des Nginx-Servers selbst und seine Funktionalität eingehen, das haben wir bereits in unserem vorherigen Artikel getan. Aber einige Parameter müssen berücksichtigt werden.

Definieren und bestimmen Sie die Anzahl der Handler und die Anzahl der Verbindungen pro Prozessor. Zu diesem Zweck werden wir in der Datei /etc/nginx/nginx.conf die Werte festlegen:

worker_processes 1;
worker_connections 1024;

Der Grundgedanke bei der Wahl dieser Werte ist, dass die Anzahl der bedienten Clients gleich der Anzahl der Handler multipliziert mit der Anzahl der Verbindungen für jeden Prozessor ist. In unserem Fall sind es also 1.024 Clients. Um Eingabe-Ausgabe-Probleme zu vermeiden, folgen Sie der Regel 1 des Prozessors pro Prozessorkern. Sie können die Anzahl der Kerne per Befehl ermitteln:

cat /proc/cpuinfo | grep processor
processor : 0

Mein Prozessor hat einen Kern. Daher ist die Anzahl der Prozessoren eins. Die Anzahl der Verbindungen kann je nach Bedarf hinzugefügt werden. Dieser Parameter ist in der Praxis bereits ausgewählt.

Aus Sicherheitsgründen kann die Richtlinie aktiviert werden

server_tokens off

Aus dem Handbuch: "Erlaubt oder verbietet die Ausgabe der Nginx-Version in Fehlermeldungen und im Feld "Server" des Antworttitels."

Diese Direktive wird in den Abschnitt http/server/local der Konfigurationsdatei eingefügt.

Geben wir die Größe der vom Server übertragenen Daten an:

client_max_body_size 20m;
client_body_buffer_size 128k;

Diese Direktive wird in den Abschnitt http/server/local der Konfigurationsdatei eingefügt.

Konfigurieren Sie den Cache für statische Dateien. Dies dient dazu, Serverressourcen und Bandbreite zu sparen. Deaktivieren Sie die Protokollierung und setzen Sie das Verfallsdatum des Headers für statische Dateien auf 100 Tage.

location ~* \.(jpg|jpeg|gif|png|css|js|ico|xml)$ {
    access_log off;
    log_not_found off;
    expires 360d;
    }

Um mit PHP-FPM zu interagieren, können Sie einen Unix-Socket angeben. Dazu müssen wir einen Eintrag in unserem Konfigurations-Halo vornehmen:

# Pass PHP scripts to PHP-FPM
    location ~* \.php$ {
    fastcgi_index index.php;
    fastcgi_pass 127.0.0.1:9000;
    include fastcgi_params;
    fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
    fastcgi_param SCRIPT_NAME $fastcgi_script_name;
    }

In den PHP-FPM-Einstellungen sollten Sie angeben, dass auf die in unserer Konfiguration angegebene IP und den Port gelauscht werden soll. Dies geschieht durch die Listening-Direktive in der Pool-Konfigurationsdatei.

Aus Sicherheitsgründen können Sie den Zugriff auf versteckte Dateien verhindern.

location ~ /\. {
    access_log off;
    log_not_found off;
    deny all;
    }

Die PHP-FPM-Konfiguration selbst kann in 2 Schritte unterteilt werden: die Einstellung der globalen Parameter, die in der Datei

/etc/php5/fpm/php-fpm.conf

und die Pool-Konfiguration. Die Pool-Konfiguration wird in Verzeichnisdateien angegeben

/etc/php5/fpm/pool.d/

Globale Parameter sind nicht so interessant und können in der Dokumentation nachgelesen werden, aber die Hauptparameter der Konfiguration von Pools werden wir betrachten.

Jeder Pool wird mit einer eigenen Datei konfiguriert. Wenn Sie den Befehl

ls -l /etc/php5/fpm/pool. d/

aufrufen, werden wir sehen, dass das System bereits eine Konfigurationsdatei für den www-Pool hat. Schauen wir uns die Konfiguration in ihrem Beispiel an.

Ein wichtiger Punkt in der Konfiguration ist die Auswahl der Anzahl der Handler, die zur Ausführung von PHP-Skripten verwendet werden. Ihre Anzahl muss mit Bedacht gewählt werden. Zu wenige Handler erlauben keine effiziente und schnelle Bearbeitung von Anfragen, aber zu viele erschöpfen die Ressourcen, die der Server für andere Aufgaben benötigt. Die Anzahl der Prozessoren sollte unter dem Gesichtspunkt gewählt werden, dass selbst bei Spitzenanfragen an den Server die Auslastung seiner Ressourcen in vernünftigen Grenzen bleibt und nicht zu seiner Überlastung führt.

Werfen wir nun einen Blick auf die Konfigurationsdatei und geben wir die folgenden Optionen an. Ach ja, in der Konfigurationsdatei sind die Zeilen, die mit dem Symbol ";" beginnen, Kommentare und gelten nicht als Direktiven.

Legen Sie den dynamischen Modus für die Erstellung von Prozessen fest, so dass die Anzahl der gestarteten PHP-FPM-Prozesse direkt von der Belastung des Servers abhängt.

pm = dynamic

Legen Sie die maximale Anzahl der Kindprozesse fest.

pm.max_children = 6

Als nächstes müssen Sie die Anzahl der Kindprozesse angeben, die gestartet werden, sobald der Server geladen ist. Standardmäßig ist dieser Wert 2. Sie können ihn erhöhen, wenn die Ressourcen es zulassen; setzen wir ihn auf 3.

pm.start_servers = 3

Sie sollten auch die Mindest- und Höchstzahl der Prozesse im Leerlauf angeben. Die Mindestanzahl entspricht der Anzahl der Prozesse, die beim Booten des Servers laufen. Die maximale Anzahl wird so festgelegt, dass sie die maximal zulässige Anzahl von Kindprozessen nicht überschreitet.

pm.min_spare_servers = 3
    pm.max_spare_servers = 5

Diese Werte sind als Beispiel und zur Erläuterung angegeben. In jeder spezifischen Situation können sie jedoch variieren. Die optimalen Werte hängen von den Fähigkeiten und verfügbaren Ressourcen des Servers, der Anzahl und Komplexität des PHP-Codes, der Anzahl der Abfragen und der Belastung des Servers ab. Diese Parameter können nur durch praktische Anwendung und Tests der erstellten Website ermittelt werden.

Betrachten wir nun die spezifischen Einstellungen.

Zunächst konfigurieren wir die Protokollierung von Informationen über Skripte, die langsam laufen. Diese Informationen werden nützlich sein, um die Gründe für die Verzögerungen auf der Website zu klären. Zunächst legen wir einen Zeitschwellenwert fest, ab dem die Ausführung des Skripts als langsam gilt.

request_slowlog_timeout = 10s

Die Zeiteinheiten können in Sekunden (s), Minuten (m), Stunden (h) oder Tagen (d) angegeben werden. Wir haben eine Zeit von 10 Sekunden angegeben.

Jetzt geben wir auch den Namen der Datei an, an die die Informationen gesendet werden sollen.

slowlog = /var/log/slowphp.log

Diese Datei kann nun für die Untersuchung von "langsamen" Skripten verwendet werden.

Wenn Sie Skripte in einer isolierten Umgebung oder einer Chroot-Umgebung ausführen möchten. Diese Option wird normalerweise aus Sicherheitsgründen verwendet. Sie müssen die chroot-Option setzen, um diese Funktion zu aktivieren.

Wenn Sie diese Option setzen, sollten Sie daran denken, dass dies Änderungen in der Verarbeitung von PHP-Skripten zur Folge hat.

Alle Dateipfade werden nun relativ zum angegebenen Verzeichnis betrachtet, und PHP-Skripte können nicht auf Sockets zugreifen, die sich außerhalb des angegebenen Verzeichnisses befinden.

Um mehrere Sites zu verwalten, müssen Sie möglicherweise zusätzliche Pools hinzufügen. Auf diese Weise können Sie die Einstellungen für jede einzelne Site individuell konfigurieren. Um einen zusätzlichen Pool zu erstellen, kopieren Sie unsere Datei

/etc/php5/fpm/pool.d/www.conf

unter einem neuen Namen, zum Beispiel

/etc/php5/fpm/pool.d/www2.conf

Öffnen Sie eine neue Datei und ändern Sie den Namen des Pools. Ändern Sie dazu oben in der Datei die Zeile [www] in [www2].

Und ändern Sie die Zeile:

listen = /var/run/php5-fpm.sock

on

listen = /var/run/www2.sock

Wenn wir wollen, dass der Handler auf das Paar ip:port hört, sieht die listen-Anweisung wie folgt aus

listen = 127.0.0.1:9000

Dann starten wir den Dienst neu

/etc/init. d/php5-fpm restart

Wie nützlich war dieser Beitrag?

Klicken Sie auf einen Stern, um ihn zu bewerten!
Рейтинг: 0/5 - 0 голосов