<?php
include_once $_SERVER['DOCUMENT_ROOT'] . '/include/shared-manual.inc';
$TOC = array();
$TOC_DEPRECATED = array();
$PARENTS = array();
include_once dirname(__FILE__) ."/toc/install.unix.inc";
$setup = array (
  'home' => 
  array (
    0 => 'index.php',
    1 => 'PHP Manual',
  ),
  'head' => 
  array (
    0 => 'UTF-8',
    1 => 'pt_BR',
  ),
  'this' => 
  array (
    0 => 'install.unix.nginx.php',
    1 => 'Nginx 1.4.x em sistemas Unix',
    2 => 'Nginx 1.4.x em sistemas Unix',
  ),
  'up' => 
  array (
    0 => 'install.unix.php',
    1 => 'Instala&ccedil;&atilde;o em sistemas Unix',
  ),
  'prev' => 
  array (
    0 => 'install.unix.apache2.php',
    1 => 'Apache 2.0 em sistemas Unix',
  ),
  'next' => 
  array (
    0 => 'install.unix.lighttpd-14.php',
    1 => 'Lighttpd 1.4 em sistemas Unix',
  ),
  'alternatives' => 
  array (
  ),
  'source' => 
  array (
    'lang' => 'pt_BR',
    'path' => 'install/unix/nginx.xml',
  ),
  'history' => 
  array (
  ),
);
$setup["toc"] = $TOC;
$setup["toc_deprecated"] = $TOC_DEPRECATED;
$setup["parents"] = $PARENTS;
manual_setup($setup);

contributors($setup);

?>
<div id="install.unix.nginx" class="sect1">
 <h2 class="title">Nginx 1.4.x em sistemas Unix</h2>

 <p class="para">
  Esta documentação cobrirá a instalação e configuração do PHP com
  PHP-FPM para um servidor HTTP Nginx 1.4.x.
 </p>

 <p class="para">
  Este guia assume 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
  <code class="literal">/usr/local/nginx</code>. Se não for este o caso e o Nginx foi
  obtido de outro modo então favor se referir à
  <a href="https://www.nginx.com/resources/wiki/" class="link external">&raquo;&nbsp;Wiki Nginx</a> para traduzir
  este manual para a sua configuração.
 </p>

 <p class="para">
  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 desta documentação.
 </p>

 <p class="para">
 Favor notar que, ao longo desta documentação, números de versões foram
  trocados por um &#039;x&#039; para assegurar que a informação se mantenha correta no futuro.
  Favor trocar, conforme necessário, com os números das versões correspondentes.
 </p>

 <ol type="1">
  <li class="listitem">
   <p class="para">
    Recomenda-se a visita à página de
    <a href="https://www.nginx.com/resources/wiki/start/topics/tutorials/install/" class="link external">&raquo;&nbsp;instalação</a> da Wiki Nginx
    para obter e instalar o Nginx no seu sistema.
   </p>
  </li>

  <li class="listitem">
   <p class="para">
    Obtenha e descompacte a fonte do PHP:
   </p>

   <div class="informalexample">
    <div class="example-contents screen">
<div class="cdata"><pre>
tar zxf php-x.x.x
</pre></div>
    </div>
   </div>
  </li>

  <li class="listitem">
   <p class="para">
    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.
   </p>

   <div class="informalexample">
    <div class="example-contents screen">
<div class="cdata"><pre>
cd ../php-x.x.x
./configure --enable-fpm --with-mysqli
make
sudo make install
</pre></div>
    </div>
   </div>
  </li>

  <li class="listitem">
   <p class="para">
    Obtenha e mova os arquivos de configuração para suas localizações corretas
   </p>

   <div class="informalexample">
    <div class="example-contents screen">
<div class="cdata"><pre>
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
</pre></div>
    </div>
   </div>
  </li>

  <li class="listitem">
   <p class="para">
    É 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
    a injeção arbitrária de scripts.
   </p>
   <p class="para">
    Isto pode ser feito configurando-se a diretiva
    <a href="ini.core.php#ini.cgi.fix-pathinfo" class="link">cgi.fix_pathinfo</a>
    para <code class="literal">0</code> no arquivo php.ini.
   </p>
   <p class="para">
    Abra o php.ini:
   </p>

   <div class="informalexample">
    <div class="example-contents screen">
<div class="cdata"><pre>
vim /usr/local/php/php.ini
</pre></div>
    </div>
   </div>

   <p class="para">
    Localiza <code class="literal">cgi.fix_pathinfo=</code> e modifique como a seguir:
   </p>

   <div class="informalexample">
    <div class="example-contents screen">
<div class="cdata"><pre>
cgi.fix_pathinfo=0
</pre></div>
    </div>
   </div>
  </li>

  <li class="listitem">
   <p class="para">
    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:
   </p>

   <div class="informalexample">
    <div class="example-contents screen">
<div class="cdata"><pre>
vim /usr/local/etc/php-fpm.d/www.conf
</pre></div>
    </div>
   </div>

   <p class="para">
    Encontre e modifique o seguinte:
   </p>

   <div class="informalexample">
    <div class="example-contents screen">
<div class="cdata"><pre>
; 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
</pre></div>
    </div>
   </div>

   <p class="para">
    O serviço php-fpm pode agora ser iniciado:
   </p>

   <div class="informalexample">
    <div class="example-contents screen">
<div class="cdata"><pre>
/usr/local/bin/php-fpm
</pre></div>
    </div>
   </div>

   <p class="para">
    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.
   </p>
  </li>

  <li class="listitem">
   <p class="para">
    Nginx agora deve ser configurado para suportar o processamento de aplicações PHP:
   </p>

   <div class="informalexample">
    <div class="example-contents">
<div class="cdata"><pre>
vim /usr/local/nginx/conf/nginx.conf
</pre></div>
    </div>

   </div>

   <p class="para">
    Modifique o bloco de localização padrão para avisar que ele deve tentar
    servir arquivos .php:
   </p>

   <div class="informalexample">
    <div class="example-contents">
<div class="nginx-confcode"><pre class="nginx-confcode">location / {
    root   html;
    index  index.php index.html index.htm;
}</pre>
</div>
    </div>

   </div>

   <p class="para">
    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:
   </p>

   <div class="informalexample">
    <div class="example-contents">
<div class="nginx-confcode"><pre class="nginx-confcode">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;
}</pre>
</div>
    </div>

   </div>

   <p class="para">
    Reinicie o Nginx.
   </p>

   <div class="informalexample">
    <div class="example-contents screen">
<div class="cdata"><pre>
sudo /usr/local/nginx/sbin/nginx -s stop
sudo /usr/local/nginx/sbin/nginx
</pre></div>
    </div>
   </div>
  </li>

  <li class="listitem">
   <p class="para">
    Crie um arquivo de teste
   </p>

   <div class="informalexample">
    <div class="example-contents screen">
<div class="cdata"><pre>
rm /usr/local/nginx/html/index.html
echo &quot;&lt;?php phpinfo(); ?&gt;&quot; &gt;&gt; /usr/local/nginx/html/index.php
</pre></div>
    </div>
   </div>

   <p class="para">
    Agora navegue até http://localhost. A informação de phpinfo() agora deve ser mostrada.
   </p>
  </li>
 </ol>

 <p class="para">
  Ao seguir os passos acima o servidor web Nginx será executado com
  suporte para PHP como um módulo <code class="literal">SAPI</code> <code class="literal">FPM</code>. Obviamente existem
  muitas opções de configurações adicionais disponíveis para Nginx e PHP. Para mais
  informação digite <strong class="command">./configure --help</strong> na pasta
  correspondente a cada fonte.
 </p>

</div><?php manual_footer($setup); ?>