1. Home
  2. Hospedagem de Sites
  3. Como configurar o PHP-FPM?

Como configurar o PHP-FPM?

O PHP-FPM (PHP FastCGI Process Manager) é uma alternativa à implementação tradicional do PHP, que oferece melhor desempenho e controle de recursos para sites e aplicações web de alto tráfego.

Neste guia, vamos explorar como configurar e utilizar o PHP-FPM de forma eficiente em sua hospedagem de site.

Como configurar e ativar o PHP-FPM?

Para configurar e ativar o PHP-FPM, siga os seguintes passos:

    • Acesse o arquivo de configuração do PHP-FPM (geralmente localizado em /etc/php/7.x/fpm/php-fpm.conf ou /etc/php-fpm.conf, a depender da sua distribuição);
    • Edite o arquivo para configurar as opções desejadas. Exemplo:
[global]

pid = /run/php/php7.4-fpm.pid

error_log = /var/log/php7.4-fpm.log

daemonize = yes

[www]

user = www-data

group = www-data

listen = /run/php/php7.4-fpm.sock

listen.owner = www-data

listen.group = www-data

pm = dynamic

pm.max_children = 5

pm.start_servers = 2

pm.min_spare_servers = 1

pm.max_spare_servers = 3
    • Salve as alterações e reinicie o serviço PHP-FPM:
sudo systemctl restart php7.4-fpm
    • Configure o seu servidor web (como Nginx) para usar o PHP-FPM. No Nginx, adicione as seguintes linhas ao bloco do servidor:
location ~ \.php$ {

 fastcgi_pass unix:/run/php/php7.4-fpm.sock;

 fastcgi_index index.php;

 include fastcgi_params;
    • Reinicie o servidor web:
sudo systemctl restart nginx

Lembre-se de ajustar as versões e os caminhos conforme a sua configuração específica.

Como utilizar o PHP e PHP-FPM juntos?

O PHP e o PHP-FPM trabalham em conjunto para processar scripts PHP de forma eficiente. Veja como eles interagem:

    1. O servidor web (como Nginx) recebe uma solicitação para um arquivo PHP;
    2. O servidor web passa a solicitação para o PHP-FPM por meio do socket ou da porta configurada;
    3. O PHP-FPM gerencia um pool de processos PHP que interpretam e executam o script;
    4. O resultado é enviado de volta ao servidor web, que o encaminha para o cliente.

Para otimizar o uso conjunto do PHP e PHP-FPM:

    • Ajuste as configurações do pool de processos (pm.max_children, pm.start_servers, entre outros) com base no tráfego do seu site e nos recursos do servidor;
    • Utilize o opcode caching (como OPcache) para melhorar o desempenho;
    • Monitore o uso de recursos e ajuste as configurações conforme necessário.

Lista de diretivas

Aqui estão algumas das principais diretivas do PHP-FPM que você pode configurar:

    • pm: define o modo de gerenciamento de processos (static, dynamic, ondemand);
    • pm.max_children: número máximo de processos-filho que podem ser criados;
    • pm.start_servers: número de processos-filho criados na inicialização;
    • pm.min_spare_servers: número mínimo de processos-filho ociosos;
    • pm.max_spare_servers: número máximo de processos-filho ociosos;
    • pm.process_idle_timeout: tempo máximo que um processo-filho pode ficar ocioso;
    • request_terminate_timeout: tempo máximo de execução de uma requisição;
    • request_slowlog_timeout: tempo após uma requisição lenta ser registrada;
    • slowlog: caminho para o arquivo de log de requisições lentas.

Para uma lista completa de diretivas, consulte a documentação oficial do PHP-FPM.

O que é PHP-FPM?

PHP-FPM (FastCGI Process Manager) é uma implementação alternativa do PHP FastCGI com recursos adicionais úteis para sites de alto tráfego. Ele fornece melhores opções de gerenciamento de processos PHP e permite um controle mais fino sobre o uso de memória e CPU.

Diferença do PHP para o PHP-FPM

A principal diferença entre o PHP tradicional e o PHP-FPM está na forma como os processos PHP são gerenciados.

    • PHP tradicional (mod_php):
    • PHP-FPM:

Exemplos de uso

Aqui estão alguns exemplos de como o PHP-FPM pode ser usado em diferentes cenários. Confira!

Site de e-commerce de alto tráfego:

[ecommerce]

user = ecommerce

group = ecommerce

listen = /var/run/php/ecommerce.sock

pm = dynamic

pm.max_children = 50

pm.start_servers = 5

pm.min_spare_servers = 5

pm.max_spare_servers = 35

pm.max_requests = 500

Blog WordPress com tráfego moderado:

[wordpress]

user = wordpress

group = wordpress

listen = 127.0.0.1:9000

pm = ondemand

pm.max_children = 20

pm.process_idle_timeout = 10s

pm.max_requests = 500

Aplicação PHP com requisitos de memória elevados:

[memory-intensive]

user = app

group = app

listen = /var/run/php/memory-intensive.sock

pm = static

pm.max_children = 10

php_admin_value[memory_limit] = 256M

Vantagens

O PHP-FPM oferece várias vantagens sobre o PHP tradicional:

    • Melhor gerenciamento de recursos: controle fino sobre o número de processos PHP e uso de memória;
    • Maior desempenho: processamento mais eficiente de solicitações, especialmente em sites de alto tráfego;
    • Isolamento de processos: cada pool pode ser executado com diferentes usuários e configurações;
    • Reinício gracioso: permite atualizar configurações sem interromper o serviço;
    • Melhor integração com servidores web leves: funciona muito bem com Nginx e melhora o desempenho geral do servidor;
    • Logs detalhados: oferece logs mais detalhados para solução de problemas e monitoramento;
    • Escalabilidade: facilita a escalabilidade horizontal por meio da configuração de múltiplos pools.

Entenda quando não usar o PHP-FPM

Embora o PHP-FPM seja uma excelente opção para muitos cenários, há situações em que pode não ser a melhor escolha:

    • Servidores com recursos muito limitados: em ambientes com memória e CPU muito restritos, o overhead adicional do PHP-FPM pode não ser justificável;
    • Sites com tráfego extremamente baixo: para sites pessoais ou projetos muito pequenos, a configuração adicional pode não valer a pena;
    • Ambientes de desenvolvimento simples: para desenvolvimento local rápido, o PHP integrado pode ser suficiente e mais fácil de configurar;
    • Compatibilidade com software legado: alguns aplicativos mais antigos podem não ser totalmente compatíveis com o PHP-FPM;
    • Quando o mod_php é suficiente: se o seu site funciona bem com mod_php e você não precisa das funcionalidades adicionais do PHP-FPM, pode não haver necessidade de mudança.

Perguntas frequentes

Para que serve o PHP-FPM?

O PHP-FPM serve para gerenciar processos PHP de forma mais eficiente, além de oferecer melhor desempenho e controle de recursos para sites e aplicações web, especialmente aqueles com alto tráfego ou requisitos específicos de recursos.

Como habilitar PHP-FPM?

Para habilitar o PHP-FPM:

    1. Instale o pacote PHP-FPM (ex.: sudo apt-get install php7.4-fpm no Ubuntu);
    2. Configure o arquivo php-fpm.conf conforme as suas necessidades;
    3. Inicie o serviço PHP-FPM (sudo systemctl start php7.4-fpm);
    4. Configure o seu servidor web para usar o PHP-FPM;
    5. Reinicie o servidor web.

Como deixar o PHP mais rápido?

Para otimizar o desempenho do PHP:

    1. Use PHP-FPM em vez do mod_php tradicional;
    2. Ative o OPcache para caching de bytecode;
    3. Utilize um acelerador de PHP como o APCu;
    4. Otimize as configurações do PHP-FPM (pm.max_children, pm.start_servers, entre outros);
    5. Implemente caching de aplicação (Redis, Memcached);
    6. Otimize as suas consultas de banco de dados;
    7. Use um CDN para conteúdo estático;
    8. Mantenha o PHP e todas as extensões atualizadas;
    9. Utilize um servidor web leve como Nginx;
    10. Implemente compressão GZIP para respostas HTTP.

Lembre-se de que a otimização deve ser feita com base nas necessidades específicas do seu site ou da aplicação. É importante monitorar o desempenho e ajustar as configurações conforme necessário.

Para mais informações sobre como otimizar o seu ambiente PHP, leia também nossos conteúdos sobre:

Este artigo foi útil ?

Artigos relacionados