Sostituisci i valori di configurazione del pool php-fpm con un altro file


12

Dovendo personalizzare la configurazione del pool php-fpm di un nuovo server, mi chiedo se sia possibile / permesso / consigliato avere un nuovo file del pool, il cui nome va in ordine alfabetico dopo quello originale, che ha solo valori che hanno la precedenza sulla configurazione iniziale.

La configurazione originale è /etc/php/7.0/fpm/pool.ddenominata www.conf.

Sembra che, secondo le pagine relative all'installazione, gli ingegneri modifichino direttamente l'originale (salvando una copia dei valori iniziali). Per esempio

[www]
...
user www-data
group www-data
pm.max_children 2

dà dopo la modifica

[www]
...
user myapp         ; was www-data
group myapp        ; was www-data
pm.max_children 8  ; was 2

Ma sembra che potrebbe essere un'attività da ripetere dopo il prossimo aggiornamento di php-fpm (inoltre la configurazione è in un 7.0percorso, questo è preoccupante).

Invece di modificare il file originale, vorrei mantenerlo invariato e aggiungerne un altro, dire wwwmyapp.confche dichiarerebbe lo stesso pool e che avesse solo i valori che sono cambiati

nel wwwmyapp.conf

[www]        ; same pool!
user myapp
group myapp
pm.max_children 8

in pool.d, elenco di file

www.conf
wwwmyapp.conf

poiché in php-fpm.conftutti i file di wwwmyappconfigurazione del pool vengono caricati, i valori di verranno letti dopo quelli di www(nello stesso wwwpool) e dovrebbero sovrascrivere i primi valori.

  • Sembra funzionare in alcuni test e nessun errore segnalato, ma funzionerà sempre e per tutti i valori?
  • Dovremmo invece sovrascrivere direttamente il file di configurazione?

Impossibile trovare una risposta in nessun documento, nemmeno su php.net.


Almeno nelle distribuzioni basate su Debian / Ubuntu, il processo di aggiornamento chiede se dovrebbe conservare i vecchi file di configurazione o installare quelli aggiornati dal pacchetto. Installerà il nuovo file di configurazione con un suffisso in modo da poter verificare le modifiche in questo modo. Presumo che altri gestori di pacchetti abbiano una funzione simile. Pertanto penso che sia una questione di opinione. Tuttavia, avere definizioni di pool troppo con lo stesso nome non sembra che funzionerebbe anche in futuro.
Tero Kilkanen,

Risposte:


15

Impossibile trovare una conferma "ufficiale" da un'altra fonte, ma ecco alcuni risultati dopo aver fatto alcune ricerche:

Analizzando il codice sorgente di php7.0-fpme più specificamente fpm-conf.c, sembra che

  • php-fpm.confviene letto prima il file di configurazione principale [ fpm_conf_load_ini_file ()],
  • tutte le includedirettive vengono lette in ordine, fornendo un elenco di file grazie a glob () ,
  • ciascuno dei file viene analizzato dallo stesso fpm_conf_load_ini_file (),
  • una voce nel file sovrascrive qualsiasi valore precedentemente impostato,
  • qualsiasi nuovo includeavrà una chiamata ricorsiva alla funzione di elaborazione include e
  • la funzione glob () ordina i nomi, per impostazione predefinita (nessuna GLOB_NOSORTopzione)

Quindi possiamo supporre - almeno in questa versione, ma è improbabile che questo cambi presto dopo il presente codice - che sia sicuro organizzare i pool.dfile di configurazione della directory in ordine alfabetico; qualsiasi valore precedentemente registrato viene sovrascritto da una voce con lo stesso nome letto dopo.

Abbiamo un modo semplice per gestire i file di configurazione php-fpm, mantenendo intatti quelli di distribuzione e aggiungendo file personalizzati con un nome alfabetico maggiore di quelli compressi, che contengono le poche opzioni che devono essere modificate.


+1 per non modificare la configurazione predefinita. Ho sempre problemi quando lo uso per l'ambiente di produzione perché viene ripristinato ai valori predefiniti durante l'aggiornamento.
Federico Galli,

le sostituzioni globali di FPM in pool.d sono possibili usando la [global]sezione. es emergency_restart_threshold. Testato su php7.1-fpm ubuntu (server 18).
hrvoj3e,

Inoltre, poiché il nome pool predefinito è wwwl'unico modo per eseguire l'override è utilizzare nomi di file pool.d come wwwsomethingo che iniziano con x, yo z.
hrvoj3e,

Grazie! Ho chiamato il mio file z-www-overrides.confe ho nascosto le [www]opzioni del pool!
IStranger

2

Se hai qualche file come php-overrides.ini, dovresti copiarlo

/etc/php/7.0/fpm/conf.d/99-overrides.ini

99 prefisso è dovuto all'ordine di esecuzione


conf.dle sostituzioni non possono sovrascrivere le php-fpm.confvariabili (solo in pool.d/under [global]) (nota per il sé futuro)
hrvoj3e
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.