Nachdem ich die php-fpm-Poolkonfiguration eines neuen Servers anpassen muss, frage ich mich, ob es möglich / erlaubt / empfohlen ist, eine neue Pooldatei zu haben, deren Name alphabetisch nach der ursprünglichen Datei steht und die nur Werte enthält, die die ursprüngliche Konfiguration überschreiben.
Die ursprüngliche Konfiguration ist /etc/php/7.0/fpm/pool.d
benannt www.conf
.
Laut den Seiten, die sich auf die Installation beziehen, scheinen die Ingenieure das Original direkt zu ändern (indem sie eine Kopie der Anfangswerte speichern). Z.B
[www]
...
user www-data
group www-data
pm.max_children 2
gibt nach Änderung
[www]
...
user myapp ; was www-data
group myapp ; was www-data
pm.max_children 8 ; was 2
Aber es scheint, dass dies eine Aufgabe sein könnte, die nach dem nächsten Upgrade von php-fpm wiederholt werden muss (außerdem befindet sich die Konfiguration in einem 7.0
Pfad, der besorgniserregend ist).
Anstatt die Originaldatei zu ändern, möchte ich sie unverändert lassen und eine weitere hinzufügen, beispielsweise wwwmyapp.conf
denselben Pool deklarieren und nur die geänderten Werte haben
im wwwmyapp.conf
[www] ; same pool!
user myapp
group myapp
pm.max_children 8
in pool.d
, Liste der Dateien
www.conf
wwwmyapp.conf
Da in php-fpm.conf
allen Pool-Conf-Dateien geladen werden, werden die Werte von wwwmyapp
nach denen von www
(im selben www
Pool) gelesen und sollten die ersten Werte überschreiben.
- Es scheint in ein paar Tests zu funktionieren und es wurde kein Fehler gemeldet, aber wird es die ganze Zeit und für alle Werte funktionieren?
- Sollten wir stattdessen die Konfigurationsdatei direkt überschreiben?
Konnte in keinem Dokument eine Antwort finden, auch nicht auf php.net.
quelle
Antworten:
Konnte keine "offizielle" Bestätigung aus einer anderen Quelle finden, aber hier ist ein Ergebnis nach einigen Recherchen:
Wenn man den Quellcode von
php7.0-fpm
und genauer analysiertfpm-conf.c
, scheint es, dassphp-fpm.conf
wird zuerst gelesen [ fpm_conf_load_ini_file ()],include
Richtlinien werden in der Reihenfolge, so dass eine Liste von Dateien dank lesen glob () ,include
hat einen rekursiven Aufruf der Includes-Verarbeitungsfunktion undGLOB_NOSORT
Option).Daher können wir - zumindest in dieser Version, aber angesichts des vorliegenden Codes wird sich dies wahrscheinlich nicht bald ändern - davon ausgehen, dass es sicher ist, die
pool.d
Verzeichniskonfigurationsdateien in alphabetischer Reihenfolge anzuordnen . Jeder zuvor aufgezeichnete Wert wird durch einen Eintrag mit demselben Namen überschrieben, der danach gelesen wird.Wir haben eine saubere Möglichkeit, Konfigurationsdateien zu verwalten
php-fpm
, die Verteilungsdateien unberührt zu lassen und benutzerdefinierte Dateien hinzuzufügen, deren Name alphabetisch größer ist als die gepackten, die die wenigen Optionen enthalten, die geändert werden müssen.quelle
[global]
section verwendet werden. zBemergency_restart_threshold
. Getestet auf php7.1-fpm Ubuntu (Server 18).www
der einzige Weg zur Überschreibung verwendet pool.d Dateinamen wiewwwsomething
oder beginnend mitx
,y
oderz
.Falls Sie eine Datei wie php-overrides.ini haben, sollten Sie diese kopieren
/etc/php/7.0/fpm/conf.d/99-overrides.ini
Das Präfix 99 ist auf die Ausführungsreihenfolge zurückzuführen
quelle
conf.d
Überschreibungen könnenphp-fpm.conf
Variablen nicht überschreiben (nur inpool.d/
unter[global]
) (Hinweis für das zukünftige Selbst)