Miklix

Como configurar pools PHP-FPM separados no NGINX

Publicado: 15 de fevereiro de 2025 às 11:52:52 UTC

Neste artigo, abordo as etapas de configuração necessárias para executar vários pools PHP-FPM e conectar o NGINX a eles via FastCGI, permitindo a separação e o isolamento de processos entre hosts virtuais.


Esta página foi traduzida automaticamente do inglês para torná-la acessível ao maior número possível de pessoas. Infelizmente, a tradução automática ainda não é uma tecnologia aperfeiçoada, portanto, podem ocorrer erros. Se preferir, você pode visualizar a versão original em inglês aqui:

How to Set Up Separate PHP-FPM Pools in NGINX

As informações neste post são baseadas no NGINX 1.4.6 e PHP-FPM 5.5.9 rodando no Ubuntu Server 14.04 x64. Elas podem ou não ser válidas para outras versões. (Atualização: Posso confirmar que a partir do Ubuntu Server 24.04, PHP-FPM 8.3 e NGINX 1.24.0, todas as instruções neste post ainda funcionam)

Há uma série de vantagens em configurar múltiplos pools de processos filhos PHP-FPM em vez de executar tudo no mesmo pool. Segurança, separação/isolamento e gerenciamento de recursos vêm à mente como algumas das principais.

Não importa qual seja sua motivação, este post vai te ajudar a fazer isso :-)


Parte 1 – Configurar um novo pool PHP-FPM

Primeiro, você precisa localizar o diretório onde o PHP-FPM armazena suas configurações de pool. No Ubuntu 14.04, este é /etc/php5/fpm/pool.d por padrão. Provavelmente já existe um arquivo lá chamado www.conf , que contém a configuração para o pool padrão. Se você não olhou para esse arquivo antes, é provável que você deva examiná-lo e ajustar as configurações nele para sua configuração, pois os padrões são para um servidor bastante fraco, mas por enquanto, faça apenas uma cópia dele para que não tenhamos que começar do zero:

sudo cp www.conf mypool.conf

Claro, substitua “mypool” pelo nome que você quiser que seu pool seja chamado.

Agora abra o novo arquivo usando o nano ou qualquer editor de texto que você preferir e ajuste-o para se adequar ao seu propósito. Você provavelmente vai querer ajustar os números do processo filho e possivelmente em qual usuário e grupo o pool é executado, mas as duas configurações que você absolutamente deve mudar são o nome do pool e o soquete que ele está escutando, caso contrário, ele entrará em conflito com o pool existente e as coisas pararão de funcionar.

O nome do pool está próximo ao topo do arquivo, entre colchetes. Por padrão, é [www] . Altere para o que quiser; sugiro o mesmo nome que você deu ao arquivo de configuração, então, para fins deste exemplo, altere para [mypool] . Se você não alterá-lo, parece que o PHP-FPM carregará apenas o primeiro arquivo de configuração com esse nome, o que provavelmente quebrará as coisas.

Você precisa então alterar o socket ou endereço que está escutando, que é definido pela diretiva listen . Por padrão, o PHP-FPM usa sockets Unix, então sua diretiva listen provavelmente ficará assim:

listen = /var/run/php5-fpm.sock

Você pode alterá-lo para qualquer nome válido que desejar, mas, novamente, sugiro usar algo semelhante ao nome do arquivo de configuração, para que você possa, por exemplo, defini-lo como:

listen = /var/run/php5-fpm-mypool.sock

Tudo bem, então salve o arquivo e saia do editor de texto.


Parte 2 – Atualizar configuração do host virtual NGINX

Agora você precisa abrir o arquivo do host virtual NGINX com a configuração FastCGI que deseja alterar para um novo pool – ou melhor, conectar-se ao novo soquete.

Por padrão no Ubuntu 14.04, eles são armazenados em /etc/nginx/sites-available, mas também podem ser definidos em outro lugar. Você provavelmente sabe melhor onde suas configurações de host virtual estão localizadas ;-)

Abra o arquivo de configuração relevante no seu editor de texto favorito e procure pela diretiva fastcgi_pass (que deve estar em um contexto de localização) definindo o socket PHP-FPM. Você deve alterar esse valor para que ele corresponda à nova configuração do pool PHP-FPM que você fez na etapa um, então, continuando nosso exemplo, você alteraria isso para:

fastcgi_pass unix:/var/run/php5-fpm-mypool.sock;

Então salve e feche esse arquivo também. Você está quase terminando agora.


Parte 3 – Reinicie o PHP-FPM e o NGINX

Para aplicar as alterações de configuração que você fez, reinicie o PHP-FPM e o NGINX. Pode ser suficiente recarregar em vez de reiniciar , mas acho que é um pouco imprevisível, dependendo de quais configurações são alteradas. No caso em particular, eu queria que os antigos processos filhos do PHP-FPM morressem imediatamente, então reiniciar o PHP-FPM era necessário, mas para o NGINX uma recarga pode ser suficiente. Experimente você mesmo.

sudo service php5-fpm restart
sudo service nginx restart

E voilà, você terminou. Se você fez tudo corretamente, o host virtual que você modificou agora deve estar usando o novo pool PHP-FPM e não compartilhar processos filhos com nenhum outro host virtual.

Compartilhe no BlueskyCompartilhe no FacebookCompartilhe no LinkedInCompartilhe no TumblrCompartilhar em XCompartilhe no LinkedInFixar no Pinterest

Mikkel Bang Christensen

Sobre o autor

Mikkel Bang Christensen
Mikkel é o criador e proprietário do miklix.com. Ele tem mais de 20 anos de experiência como programador de computador/desenvolvedor de software profissional e atualmente trabalha em tempo integral para uma grande empresa europeia de TI. Quando não está blogando, ele dedica seu tempo livre a uma grande variedade de interesses, hobbies e atividades, o que pode, até certo ponto, refletir-se na variedade de tópicos abordados neste site.