Remplacer les valeurs de configuration du pool php-fpm par un autre fichier

11

Devant personnaliser la configuration du pool php-fpm d'un nouveau serveur, je me demande s'il est possible / autorisé / recommandé d'avoir un nouveau fichier de pool, dont le nom va par ordre alphabétique après celui d'origine, qui n'a que des valeurs qui remplacent la configuration initiale.

La configuration d'origine est /etc/php/7.0/fpm/pool.dnommée www.conf.

Il semblerait, selon les pages relatives à l'installation, que les ingénieurs modifient directement l'original (sauvegarde d'une copie des valeurs initiales). Par exemple

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

donne après modification

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

Mais il semble que cela puisse être une tâche à répéter après la prochaine mise à niveau de php-fpm (de plus la configuration est dans un 7.0chemin, c'est inquiétant).

Au lieu de modifier le fichier d'origine, je voudrais le garder inchangé, et en ajouter un autre, dire wwwmyapp.confque cela déclarerait le même pool, et n'ayant que les valeurs qui ont changé

dans wwwmyapp.conf

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

dans pool.d, liste des fichiers

www.conf
wwwmyapp.conf

puisque dans php-fpm.conftous les fichiers de conf de pool sont chargés, les valeurs de wwwmyappseront lues après celles de www(dans le même wwwpool) et devraient remplacer les premières valeurs.

  • Il semble fonctionner dans quelques tests et aucune erreur n'a été signalée, mais cela fonctionnera-t-il tout le temps et pour toutes les valeurs?
  • Faut-il remplacer directement le fichier de configuration?

Impossible de trouver une réponse dans aucun document, même sur php.net.

Ø bague
la source
Au moins dans les distributions basées sur Debian / Ubuntu, le processus de mise à niveau demande s'il doit conserver les anciens fichiers de configuration ou installer ceux mis à niveau à partir du package. Il installera le nouveau fichier de configuration avec un suffixe afin que l'on puisse vérifier les modifications de cette façon. Je suppose que d'autres gestionnaires de packages ont une fonctionnalité similaire. Je pense donc que c'est une question d'opinion. Cependant, avoir trop de définitions de pool avec le même nom ne semble pas fonctionner aussi à l'avenir.
Tero Kilkanen

Réponses:

14

Impossible de trouver une confirmation "officielle" d'une autre source, mais voici un résultat après avoir fait des recherches:

En analysant le code source de php7.0-fpmet plus spécifiquement fpm-conf.c, il apparaît que

  • le fichier de configuration principal php-fpm.confest lu en premier [ fpm_conf_load_ini_file ()],
  • toutes les includedirectives sont lues dans l'ordre, donnant une liste de fichiers grâce à glob () ,
  • chacun des fichiers est analysé par le même fpm_conf_load_ini_file (),
  • une entrée dans le fichier écrase toute valeur précédemment définie,
  • tout nouveau includeaura un appel récursif à la fonction de traitement comprend, et
  • la fonction glob () trie les noms, par défaut (pas d' GLOB_NOSORToption)

Ainsi, nous pouvons supposer - au moins dans cette version, mais il est peu probable que cela change bientôt si l'on considère le code actuel - qu'il est sûr d'organiser les pool.dfichiers de configuration de répertoire dans l'ordre alphabétique; toute valeur précédemment enregistrée étant remplacée par une entrée du même nom lue après.

Nous avons un moyen propre de gérer les fichiers de configuration php-fpm, en gardant les fichiers de distribution intacts, et en ajoutant des fichiers personnalisés dont le nom est alphabétiquement supérieur à ceux emballés, qui contiennent les quelques options qui doivent être modifiées.

Ø bague
la source
+1 pour ne pas changer la configuration par défaut. J'ai toujours des problèmes lorsque j'utilise celui-ci pour l'environnement de production, car il revient aux valeurs par défaut lors de la mise à niveau.
Federico Galli
les remplacements globaux de FPM sous pool.d sont possibles en utilisant la [global]section. par exemple emergency_restart_threshold. Testé sur php7.1-fpm ubuntu (serveur 18).
hrvoj3e
De plus, comme le nom de pool par défaut est wwwle seul moyen de remplacer, utilisez les noms de fichiers pool.d comme wwwsomethingou en commençant par x, you z.
hrvoj3e
2

Dans le cas où vous avez un fichier comme php-overrides.ini, vous devez le copier dans

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

Le préfixe 99 est dû à l'ordre d'exécution

WhipsterCZ
la source
conf.dles remplacements ne peuvent pas remplacer les php-fpm.confvariables (uniquement en pool.d/dessous [global]) (note pour le futur moi)
hrvoj3e