Como configurar Apache e PHP para sites de alto tráfego no servidor Linux

Cum se configurează Apache și PHP pentru site-uri web cu trafic mare pe server Linux
⌛ Reading Time: 5 minutes

Quase todos os tutoriais sobre como instalar a pilha LAMP (Linux, Apache, MySQL, PHP) irão recomendar que você use o módulo Apache embutido para processar scripts PHP. Por exemplo, no Ubuntu, você habilitaria isso ao usar um comando como sudo apt install libapache2-mod-phppara instalar um pacote. Isso, por sua vez, forçaria o Apache a usar mpm_prefork. Cada vez que um visitante acessa seu site, um novo processo será lançado para lidar com essa conexão. Isso funciona bem quando o tráfego está baixo.

No entanto, torna-se um grande problema se você receber uma explosão repentina de tráfego. Por exemplo, uma postagem do Reddit pode incluir seu site e, se a postagem se tornar popular, você poderá receber milhares de visitantes em apenas alguns minutos.

Na melhor das hipóteses, se o Apache for capaz de lidar com o estouro do tráfego, alguns visitantes azarados podem ter que esperar talvez trinta a sessenta segundos até que a página seja carregada, o que é absurdo no mundo de hoje. Na pior das hipóteses, o servidor começará a apresentar atrasos graves e algumas conexões serão simplesmente interrompidas por falta de recursos. Nesse caso, os visitantes verão um erro em seus navegadores.

De qualquer forma, não é um bom cenário, já que você potencialmente perdeu a atenção de centenas ou milhares de leitores, clientes ou fãs interessados.

Infelizmente, o PHP é um grande consumidor de recursos de qualquer maneira. Mas com mpm_event, O Apache pode lidar com picos repentinos de tráfego de uma maneira muito mais eficiente. Recomenda-se, porém, que seu servidor tenha pelo menos 2 GB de RAM e 2 núcleos de CPU, reais ou virtuais, e ainda mais se você espera ter picos de tráfego intensos, como mais de dez visitantes por segundo. Se você estiver usando um servidor virtual privado, adicione mais núcleos de CPU virtuais à sua situação e armazenamento SSD. RAM é secundária.

Como usar o evento Apache MPM e PHP-FPM em distribuições baseadas em Debian

No Debian, Ubuntu ou outras distros desta família, simplesmente evite instalar o pacote “libapache2-mod-php”. Quando você instala o Apache, ele usa o evento MPM por padrão. Mas ao instalar o pacote mencionado, um script desabilita o evento MPM e habilita o pré-garfo MPM. O módulo Apache PHP só pode funcionar (com segurança) com mpm_prefork. Claro, sem “libapache2-mod-php,” você não tem processador para arquivos PHP. Portanto, você usará PHP-FPM em vez do módulo PHP incluído no Apache. Aqui está como você instalaria uma pilha LAMP em um servidor novo. Você pode adaptar as etapas de acordo com os requisitos de seu aplicativo da web.

Primeiro, faça login como root. Em seguida, instale o Apache.

Neste ponto, você pode ver que o Apache realmente é fornecido com o evento MPM habilitado por padrão.

Instale o PHP-FPM.

Você verá instruções sobre como habilitar o processador PHP no Apache.

Apache Php Fpm Habilitar Instruções de Php

Ative o protocolo FastCGI.

Habilite a configuração padrão do PHP-FPM para o Apache.

Nota: em versões futuras do Debian / Ubuntu, este comando pode mudar para outra coisa, por exemplo a2enconf php7.6-fpm, porque PHP-FPM seria uma versão diferente.

Reinicie o Apache.

Instale o restante de seus requisitos para seu aplicativo PHP. Aqui está um exemplo:

Isso instalaria um servidor de banco de dados e o módulo PHP MySQL para que seu aplicativo PHP possa se conectar a um banco de dados.

Como usar o evento Apache MPM e PHP-FPM em distribuições baseadas em RedHat

A outra escolha popular de distribuição de servidor é RedHat ou CentOS. Da mesma forma como acima, um exemplo de uma instalação limpa do Apache com evento MPM habilitado e PHP-FPM será oferecido.

Faça login como root e instale o Apache.

Ao contrário das distros baseadas em Debian, aqui você verá que o Apache usa MPM prefork por padrão, pelo menos no CentOS 7 mais recente disponível no momento da escrita.

Apache Php Fpm Verificar Mpm Centos

Para habilitar o evento MPM, você deve editar um arquivo de configuração.

Isso irá adicionar um # assine para comentar (inativar) a linha LoadModule mpm_prefork_module modules/mod_mpm_prefork.so.

Apache Php Fpm Mpm Conffile On Centos

Agora descomente (ative) a linha #LoadModule mpm_event_module modules/mod_mpm_event.so removendo o anterior # assine com o próximo comando.

Inicie o Apache e habilite-o para inicialização automática na inicialização.

Verifique se o Apache agora usa evento MPM.

Apache Php Fpm Mpm Evento de status habilitado Centos

Instale o módulo PHP-FPM e FastCGI.

Crie “/etc/httpd/conf.d/php.conf” para instruir o Apache sobre como processar arquivos PHP. Copie TODO o conteúdo abaixo, cole tudo de uma vez no terminal e pressione ENTER.

O crédito por esta ótima configuração vai para o Debian. Outras fontes recomendam um arquivo de configuração simples, como:

<FilesMatch .php$>
SetHandler "proxy:fcgi://127.0.0.1:9000"
</FilesMatch>

Mas isso é vulnerável a alguns ataques e, se certos serviços falharem, você pode expor arquivos PHP ao público, potencialmente expondo senhas, códigos e dados confidenciais armazenados.

Reinicie o Apache.

Inicie o PHP-FPM e ative sua inicialização automática na inicialização.

Conclusão

Agora você tem um servidor Apache que escala muito melhor com o tráfego. No entanto, lembre-se de que você está usando as configurações padrão, como o que é “melhor” para a maioria das pessoas. Se você realmente deseja obter o máximo do seu servidor HTTP, deve ler sobre as várias variáveis ​​que pode ajustar. Os valores corretos para esses são altamente dependentes dos recursos do seu servidor, tráfego esperado e aplicativo PHP.

How useful was this post?

Click on a star to rate it!

Average rating 0 / 5. Vote count: 0

No votes so far! Be the first to rate this post.