Anule los valores de configuración del grupo php-fpm con otro archivo

11

Al tener que personalizar la configuración del grupo php-fpm de un nuevo servidor, me pregunto si es posible / permitido / recomendado tener un nuevo archivo de grupo, cuyo nombre va alfabéticamente después del original, que solo tiene valores que anulan la configuración inicial.

La configuración original está en /etc/php/7.0/fpm/pool.dnombre www.conf.

Parece que, según las páginas relacionadas con la instalación, los ingenieros modifican directamente el original (guardando una copia de los valores iniciales). P.ej

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

da después de la modificación

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

Pero parece que podría ser una tarea que se repetirá después de la próxima actualización de php-fpm (además, la configuración está en una 7.0ruta, eso es preocupante).

En lugar de modificar el archivo original, me gustaría mantenerlo sin cambios y agregar otro, digamos wwwmyapp.confque declararía el mismo grupo y que solo tendría los valores que han cambiado

en wwwmyapp.conf

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

en pool.d, lista de archivos

www.conf
wwwmyapp.conf

dado que en php-fpm.conftodos los archivos conf de grupo se cargan, los valores de wwwmyappse leerán después de los de www(en el mismo wwwgrupo) y deben anular los primeros valores.

  • Parece funcionar en algunas pruebas y no se informa ningún error, pero ¿funcionará todo el tiempo y para todos los valores?
  • ¿Deberíamos sobrescribir el archivo de configuración directamente en su lugar?

No se pudo encontrar una respuesta en ningún documento, ni siquiera en php.net.

Ø de anillo
fuente
Al menos en las distribuciones basadas en Debian / Ubuntu, el proceso de actualización pregunta si debe mantener los archivos de configuración antiguos o instalar los actualizados del paquete. Instalará el nuevo archivo de configuración con un sufijo para que pueda verificar los cambios de esa manera. Supongo que otros administradores de paquetes tienen una característica similar. Por lo tanto, creo que es una cuestión de opinión. Sin embargo, tener definiciones demasiado comunes con el mismo nombre no parece funcionar en el futuro también.
Tero Kilkanen

Respuestas:

14

No se pudo encontrar una confirmación "oficial" de otra fuente, pero aquí hay algunos resultados después de hacer una investigación:

Analizando el código fuente de php7.0-fpmy más específicamente fpm-conf.c, parece que

  • el archivo de configuración principal php-fpm.confse lee primero [ fpm_conf_load_ini_file ()],
  • todas las includedirectivas se leen en orden, dando una lista de archivos gracias a glob () ,
  • cada uno de los archivos es analizado por el mismo fpm_conf_load_ini_file (),
  • una entrada en el archivo sobrescribe cualquier valor establecido previamente,
  • cualquier nuevo includetendrá una llamada recursiva a la función de procesamiento incluye, y
  • la función glob () ordena los nombres, por defecto (sin GLOB_NOSORTopción)

Por lo tanto, podemos suponer, al menos en esta versión, pero es poco probable que esto cambie pronto considerando el código actual, que es seguro organizar los pool.darchivos de configuración del directorio en orden alfabético; cualquier valor registrado previamente se sobrescribe con una entrada con el mismo nombre leído después.

Tenemos una forma limpia de manejar los archivos de configuración php-fpm, manteniendo intactos los de distribución y agregando archivos personalizados con un nombre alfabéticamente mayor que los empaquetados, que contienen las pocas opciones que deben cambiarse.

Ø de anillo
fuente
+1 por no cambiar la configuración predeterminada. Siempre tengo problemas cuando lo uso para el entorno de producción porque se revierte a los valores predeterminados durante la actualización.
Federico Galli
Las anulaciones globales de FPM en pool.d se pueden usar mediante la [global]sección. por ej emergency_restart_threshold. Probado en php7.1-fpm ubuntu (servidor 18).
hrvoj3e
Además, debido a que el nombre predeterminado del grupo es wwwla única forma de anularlo es usando los nombres de archivo pool.d como, wwwsomethingo comenzando con x, yo z.
hrvoj3e
2

En caso de que tenga algún archivo como php-overrides.ini, debe copiarlo en

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

El prefijo 99 se debe al orden de ejecución

WhipsterCZ
fuente
conf.dlas anulaciones no pueden anular php-fpm.confvariables (solo en pool.d/debajo [global]) (nota para el yo futuro)
hrvoj3e