Назад | Перейти на главную страницу

Заменить значения конфигурации пула php-fpm другим файлом

При необходимости настроить конфигурацию пула php-fpm для нового сервера, мне интересно, возможно ли / разрешено / рекомендовано иметь новый файл пула, имя которого идет в алфавитном порядке после исходного, который имеет только значения, переопределяющие начальную конфигурацию.

Исходная конфигурация находится в /etc/php/7.0/fpm/pool.d названный www.conf.

Судя по страницам, относящимся к установке, инженеры, похоже, напрямую модифицируют оригинал (сохраняя копию исходных значений). Например.

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

дает после модификации

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

Но похоже, что это может быть задача, которую нужно повторить после следующего обновления php-fpm (кроме того, конфигурация находится в 7.0 путь, вот и тревожно).

Вместо того, чтобы изменять исходный файл, я хотел бы оставить его без изменений и добавить еще один, скажем wwwmyapp.conf который объявляет тот же пул и имеет только те значения, которые изменились

в wwwmyapp.conf

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

в pool.d, список файлов

www.conf
wwwmyapp.conf

поскольку в php-fpm.conf загружаются все файлы конфигурации пула, значения wwwmyapp будут прочитаны после www ( В то же самое www pool) и должен переопределить первые значения.

Не нашел ответа ни в одном документе, даже на php.net.

Не удалось найти "официального" подтверждения из другого источника, но вот некоторые результаты после некоторого исследования:

Анализируя исходный код php7.0-fpm и, более конкретно fpm-conf.c, кажется, что

  • основной файл конфигурации php-fpm.conf читается первым [ fpm_conf_load_ini_file()],
  • все include директивы читаются по порядку, давая список файлов благодаря шарик(),
  • каждый файл анализируется одним и тем же fpm_conf_load_ini_file(),
  • запись в файле перезаписывает любое ранее установленное значение,
  • любой новый include будет рекурсивный вызов функции обработки include, и
  • в шарик() функция сортирует имена по умолчанию (нет GLOB_NOSORT вариант)

Таким образом, мы можем предположить - по крайней мере, в этой версии, но вряд ли это скоро изменится, учитывая существующий код - что можно безопасно организовать pool.d файлы конфигурации каталогов в алфавитном порядке; любое ранее записанное значение перезаписывается записью с таким же именем, прочитанной после.

У нас есть чистый способ обработки файлов конфигурации для php-fpm, сохраняя дистрибутивы нетронутыми, и добавляя пользовательские файлы, имена которых в алфавитном порядке больше, чем у упакованных, которые содержат несколько параметров, которые необходимо изменить.

Если у вас есть файл вроде php-overrides.ini, скопируйте его в

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

Префикс 99 обусловлен порядком исполнения