Substitui os valores de configuração do conjunto php-fpm por outro arquivo

7
Tendo que personalizar a configuração do pool php-fpm de um novo servidor, gostaria de saber se é possível / permitido / recomendado ter um novo arquivo de pool, cujo nome segue alfabeticamente após o original, que possui apenas valores que substituem o configuração inicial.

A configuração original está em /etc/php/7.0/fpm/pool.d named www.conf .

Parece que, de acordo com as páginas relacionadas à instalação, os engenheiros modificam diretamente o original (salvando uma cópia dos valores iniciais). Por exemplo,

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

dá após modificação

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

Mas parece que poderia ser uma tarefa a ser repetida após a próxima atualização do php-fpm (além disso, a configuração está em um caminho 7.0 , isso é preocupante).

Em vez de modificar o arquivo original, gostaria de mantê-lo inalterado e adicionar outro, digamos wwwmyapp.conf , que declararia o mesmo pool e teria apenas os valores que foram alterados

em wwwmyapp.conf

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

em pool.d , lista de arquivos

www.conf
wwwmyapp.conf

já que em php-fpm.conf todos os arquivos conf do conjunto são carregados, os valores de wwwmyapp serão lidos após os de www (no mesmo www pool) e devem substituir os primeiros valores.

  • Parece funcionar em alguns testes e nenhum erro foi relatado, mas funcionará o tempo todo e para todos os valores?
  • Devemos substituir o arquivo de configuração diretamente?

Não foi possível encontrar uma resposta em nenhum documento, nem no php.net.

    
por Ring Ø 27.09.2016 / 18:02

2 respostas

9

Não foi possível encontrar uma confirmação "oficial" de outra fonte, mas aqui está algum resultado depois de fazer alguma pesquisa:

Analisando o código-fonte de php7.0-fpm e, mais especificamente, fpm-conf.c , parece que

  • o arquivo de configuração principal php-fpm.conf é lido primeiro [ fpm_conf_load_ini_file ()],
  • todas as diretivas include são lidas em ordem, dando uma lista de arquivos graças a glob () ,
  • cada arquivo é analisado pelo mesmo fpm_conf_load_ini_file (),
  • uma entrada no arquivo sobrescreve qualquer valor definido anteriormente,
  • qualquer novo include terá uma chamada recursiva para a função de processamento de inclusões e
  • a função glob () classifica os nomes, por padrão (sem GLOB_NOSORT option)

Assim, podemos supor - pelo menos nesta versão, mas é improvável que isso mude logo considerando o código atual - que é seguro organizar os arquivos de configuração do diretório pool.d em ordem alfabética; qualquer valor gravado anteriormente sobregravado por uma entrada com o mesmo nome, lida depois.

Temos uma maneira limpa de manipular arquivos de configuração para php-fpm , mantendo os da distribuição intactos e adicionando arquivos personalizados com nome alfabético maior que os pacotes, que contêm as poucas opções que precisam ser alteradas.

    
por 01.10.2016 / 18:08
2

Caso você tenha algum arquivo como o php-overrides.ini, você deve copiá-lo para

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

O prefixo 99 é devido à ordem de execução

    
por 16.04.2018 / 13:19