Nginx 1.4.x em sistemas Unix
Esta documentação cobrirá a instalação e configuração do PHP com PHP-FPM para um servidor HTTP Nginx 1.4.x.
Este guia assumirá que o Nginx foi construído a partir da fonte e portanto
todos os binários e arquivos de configuração estão localizados em
/usr/local/nginx
. Se não for este o caso e o Nginx foi
obtido de outro modo então favor se referir à
» Wiki Nginx para traduzir
este manual para a sua configuração.
Este guia cobrirá o básico da configuração de um servidor Nginx para processar aplicações PHP e servi-las na porta 80. Recomenda-se que a documentação do Nginx e do PHP-FPM seja estudada se for desejado otimizar a configuração além do escopo deste documentação.
Favor notar que, ao longo desta documentação, números de versões foram trocados por um 'x' para assegurar que a informação se mantenha correta no futuro. Favor trocar, conforme necessário, com os números das versões correspondentes.
-
Recomenda-se a visita à página de » instalação da Wiki Nginx para obter e instalar o Nginx no seu sistema.
-
Obtenha e descompacte a fonte do PHP:
tar zxf php-x.x.x
-
Configure e construa o PHP. Aqui é onde o PHP é customizado com várias opções, como quais extensões serão habilitadas. Execute ./configure --help para uma lista de opções disponíveis. No nosso exemplo faremos uma configuração simples com PHP-FPM e suporte MySQLi.
cd ../php-x.x.x ./configure --enable-fpm --with-mysqli make sudo make install
-
Obtenha e mova os arquivos de configuração para suas localizações corretas
cp php.ini-development /usr/local/php/php.ini cp /usr/local/etc/php-fpm.d/www.conf.default /usr/local/etc/php-fpm.d/www.conf cp sapi/fpm/php-fpm /usr/local/bin
-
É importante evitar que o Nginx passe requisições ao processo interno do PHP-FPM se o arquivo não existe, fazendo com que se impeça injeção arbitrária de script.
Isto pode ser feito configurando-se a diretiva cgi.fix_pathinfo para
0
no arquivo php.ini.Abra o php.ini:
vim /usr/local/php/php.ini
Localiza
cgi.fix_pathinfo=
e modifique como a seguir:cgi.fix_pathinfo=0
-
php-fpm.conf deve ser modificado para especificar que o php-fpm deve rodar como o usuário www-data e o grupo www-data antes do serviço ser iniciado:
vim /usr/local/etc/php-fpm.d/www.conf
Ecnontre e modifique o seguinte:
; Usuário/grupo de processos Unix ; Nota: O usuário é mandatório. Se o grupo não for definido, o grupo padrão do usuário ; será usado. user = www-data group = www-data
O serviço php-fpm pode agora ser iniciado:
/usr/local/bin/php-fpm
Este guia não irá configurar o php-fpm além disso, se houver interesse em configuração adicional do php-fpm favor consultar a documentação.
-
Nginx agora deve ser configurado para suportar o processamento de aplicações PHP:
vim /usr/local/nginx/conf/nginx.conf
Modifique o bloco de localização padrão para avisar que ele deve tentar servir arquivos .php:
location / { root html; index index.php index.html index.htm; }
O próximo passo é assegurar que os arquivos .php são passados ao processo interno do PHP-FPM. Abaixo do bloco comentado de localização padrão do PHP, entre com o seguinte:
location ~* \.php$ { fastcgi_index index.php; fastcgi_pass 127.0.0.1:9000; include fastcgi_params; fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name; fastcgi_param SCRIPT_NAME $fastcgi_script_name; }
Reinicie o Nginx.
sudo /usr/local/nginx/sbin/nginx -s stop sudo /usr/local/nginx/sbin/nginx
-
Crie um arquivo de teste
rm /usr/local/nginx/html/index.html echo "<?php phpinfo(); ?>" >> /usr/local/nginx/html/index.php
Agora navegue até http://localhost. A informação de phpinfo() agora deve ser mostrada.
Ao seguir os passos acima o servidor web Nginx será executado com
suporte para PHP como um módulo SAPI
FPM
. Obviamente existem
muitas opções de configurações adicionaism disponíveis para Nginx e PHP. Para mais
informação digite ./configure --help na pasta
correspondente a cada fonte.