Instalando PHP-FPM com Apache

magento-apache-imagem-01

Muitas pessoas preferem utilizar o nginx, mas para o Magento não faz diferença já que o processo PHP é o grande vilão e não conteúdo estático.

Logo após a instalação do Magento temos uma grande quantidade de arquivos PHP:

<br />find . -type f -name "*.php" | wc -l<br />

8112

* Algumas razões para utilizar o PHP-FPM com Apache:

*Você quer a performance e flexibilidade do FPM;

* Você quer executar o PHP como o usuário que é dono do código (não o Apache) para evitar problemas de permissão;

* Você precisa utilizar arquivos .htaccess;

* Você prefere a suportabilidade e experiência com o Apache e não quer utilizar o nginx.

* Vamos agora à instalação, o tutorial foi feito com o RHEL/CentOS, mas pode ser alterado para qualquer distro.

Instalando o FPM:

<br />yum install php-fpm<br />

Por padrão você terá o FPM rodando como apache e configurado no arquivo /etc/php-fpm.d/www.conf.

Talvez seja necessário configurar vários arquivos por domínio e usuário para não ter problemas de permissão.

Vamos configurar o pool do FPM para executar pelo socket ao invéz de TCP pela porta 9000.

Também configure o usuário e permissão para o socket, normalmente o mesmo que o usuário sFTP.

Execute os comandos abaixo:

<br />cd /etc/php-fpm.d<br />cp www.conf usuario.conf<br />mv www.conf www.conf.disabled<br />vim usuario.conf<br />

Faça às seguintes alterações:

<br /><br />;listen = 127.0.0.1:9000<br />listen = /dev/shm/usuario-php.sock<br /><br />listen.owner = usuario<br />listen.group = apache<br />listen.mode = 0660<br /><br />user = usuario<br /><br />pm.max_children = 100<br />pm.start_servers = 35<br />pm.min_spare_servers = 35<br /><br />php_admin_value[error_log] = /var/log/php/dominio.com-error.log<br />php_admin_flag[log_errors] = on<br />php_admin_value[memory_limit] = 512M<br />

Instalando mod_fastcgi:

Precisamos instalar o fastcgi para comunicar com o FPM, não há muitas packages disponíveis, então temos a opção de compilar ou utilizar uma versão feita pela Nexcess onde foi corrigido um but do Magento com CGI onde duplica headers causando um erro 500:
… aborted: error parsing headers: duplicate header ‘Content-Type’

Vamos utilizar o rpm da Nexcess para fazer a instalação, execute os comandos abaixo:

<br />yum -y install httpd-devel rpm-build -y<br />mkdir -p /~/fastcgi<br />cd /~/fastcgi<br />wget http://pubfiles.nexcess.net/misc/mod_fastcgi-2.4.6-3.el6.src.rpm<br />rpmbuild --rebuild mod_fastcgi-2.4.6-3.el6.src.rpm<br />rpm -ivh /~/rpmbuild/RPMS/x86_64/mod_fastcgi-2.4.6-3.el6.x86_64.rpm<br />rm -f /etc/httpd/conf.d/mod_fastcgi.conf<br />

Configurando o mod_fastcgi:

Crie o arquivo /etc/httpd/conf.d/mod_fastcgi.conf com o conteúdo abaixo.

Altere onde está escrito usuario para o usuario que você configurou para executar o código.

Para múltiplos pools, adicione mais directivas FastCGIExternalServer.

<br />LoadModule fastcgi_module modules/mod_fastcgi.so<br />&lt;IfModule mod_fastcgi.c&gt;<br />Alias /php5.fcgi /var/www/php5.fcgi<br /> <br />FastCGIExternalServer /var/www/php5.fcgi -socket /dev/shm/someuser-php.sock -flush -idle-timeout 1800<br /> <br />AddType application/x-httpd-fastphp5 .php<br />Action application/x-httpd-fastphp5 /php5.fcgi<br />&lt;/IfModule&gt;<br />

Desativando mod_php:

Execute o seguinte comando para desativar o mod_php:

<br />mv /etc/httpd/conf.d/php.conf /etc/httpd/conf.d/php.disabled<br />echo "# mod_php disabled, using mod_fastcgi with PHP-FPM instead" &gt;&gt; /etc/httpd/conf.d/php.conf<br />

PHP-FPM é muito bom com o uso de memória. Quando seu site estiver com várias visitas no site, execute o seguinte comando:

<br />for pid in $(ps aux | grep fpm | grep "pool www" | awk '{print $2}'); do pmap -d $pid | tail -1 ; done | sed 's/K//' | awk '{sum+=$4} END {print sum/NR/1024}'<br />

O comando irá mostrar o uso médio em MB de cada processo FPM para o pool www.

Altere para o pool com o nome que você criou para ter a resposta correta.

Desta forma você pode prever o uso de memória do seu PHP.

Caso tenha alguma dúvida não deixe de postar sua dúvida em nosso fórum: www.forum.magentobr.com

Até a próxima!

2017-01-24T20:24:38+00:00

RECEBA DICAS VALIOSAS NO SEU EMAIL

x