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


12

Налаштувавши конфігурацію пулу 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пулі) і повинні перевищувати перші значення.

  • Здається, він працює в декількох тестах, і не повідомляється про помилки, але чи буде він працювати весь час і для всіх значень?
  • Чи слід замість цього замінити конфігураційний файл безпосередньо?

Не вдалося знайти відповідь у жодному документі, навіть на php.net.


Принаймні, у дистрибутивах на основі Debian / Ubuntu процес оновлення запитує, чи слід зберігати старі файли конфігурації чи встановлювати оновлені з пакета. Він встановить новий файл конфігурації з суфіксом, щоб можна було перевірити зміни таким чином. Я припускаю, що інші менеджери пакунків мають подібну особливість. Тому я вважаю, що це питання думки. Однак занадто визначення визначень пулу з тим же ім'ям не здається, що це буде працювати і в майбутньому.
Теро Кілканен

Відповіді:


15

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

Аналізуючи вихідний код php7.0-fpmта, конкретніше fpm-conf.c, виявляється, що

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

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

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


+1 за не зміну конфігурації за замовчуванням. У мене завжди виникають проблеми, коли я використовую цю для виробничого середовища, оскільки під час оновлення вона повертається до значень за замовчуванням.
Федеріко Галлі

глобальні зміни FPM під pool.d можливі за допомогою [global]розділу. напр emergency_restart_threshold. Тестовано на php7.1-fpm ubuntu (сервер 18).
hrvoj3e

Крім того , оскільки ім'я пулу по замовчуванням є wwwєдиним способом перевизначення використовується pool.d імена файлів , як wwwsomethingі починаючи з x, yабо z.
hrvoj3e

Дякую! Я назвав свій файл, z-www-overrides.confі він перекрив [www]варіанти пулу!
IStranger

2

Якщо у вас є якийсь файл на зразок php-overrides.ini, ви повинні скопіювати його

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

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


conf.doverrides не може замінити php-fpm.confзмінні (лише в pool.d/під [global]) (примітка до майбутніх себе)
hrvoj3e
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.