Nginx PHP5-fpm - instalação passo a passo

Written by Erika Heidi on Monday February 16, 2015 - Permalink -

Há alguns meses eu fiz uma migração de um servidor dedicado para múltiplos VPSs, e como as instâncias possuem uma quantidade reduzida de memória, precisei buscar algumas alternativas pra melhorar ao máximo a performance do meu servidor web. Depois de ter ouvido falar muito (e bem) sobre o Nginx, resolvi experimentar e hoje em dia não troco mais! Além de ter uma performance bem superior à do Apache, o Nginx é bastante simples de se instalar e configurar. Aqui vocês conferem um passo a passo de como instalar e configurar  Nginx + PHP5-fpm (PHP 5.5, versão mais recente) em uma máquina rodando Ubuntu 12.04+ .

1. Preparação

Isso vai adicionar o ppa do php5 em seus sources, assim quando formos instalar o PHP pegaremos a versão mais recente. Se você quiser usar PHP 5.4, substitua ppa:ondrej/php5 por ppa:ondrej/php5-oldstable .

sudo apt-get install python-software-properties
sudo add-apt-repository ppa:ondrej/php5
sudo apt-get update

2. Instalando Nginx e php5-fpm

sudo apt-get install nginx php5-fpm

3. Configuração

3.1. Edite o arquivo /etc/php5/fpm/php.ini - Procure pela opção cgi.fix_pathinfo e mude o valor para 0.

cgi.fix_pathinfo = 0

3.2 Edite o arquivo /etc/php5/fpm/pool.d/www.conf e procure pela opção listen. O valor correto deve ser: /var/run/php5-fpm.sock  (provavelmente você não vai precisar mudar nada, mas cheque para ter certeza).

listen = /var/run/php5-fpm.sock

Reinicie o php5-fpm: sudo service php5-fpm restart

4. Modificando o site padrão

A configuração do Nginx, em alguns aspectos, é similar à do Apache - ambos usam uma estrutura de diretórios que define quais sites / vhosts estão ativos. No Nginx, para modificar o site padrão / principal, edite o arquivo /etc/nginx/sites-available/default :

server {
        listen   80;

        root /usr/share/nginx/www;
        index index.html index.htm index.php;

        server_name localhost vhostname.local;

        location / {
                #try to find the requested uri or redirect to index.php with request args
                try_files $uri $uri/ /index.php?$args;
        }

        error_page 404 /404.html;

        error_page 500 502 503 504 /50x.html;
        location = /50x.html {
                root /usr/share/nginx/www;
        }

        # pass the PHP scripts to FastCGI server listening on 127.0.0.1:9000
        #
        location ~ \.php$ {
                fastcgi_split_path_info ^(.+\.php)(/.+)$;
                fastcgi_pass unix:/var/run/php5-fpm.sock;
                fastcgi_index index.php;
                include fastcgi_params;
        }

}

Esse é um exemplo de arquivo de vhost que você pode usar como base, usando o php5-fpm para interpretar scripts php. Alguns detalhes a observar: root - o "document_root" do seu site, ou seja, diretório web público. Nesse caso, está usando o padrão - /use/share/nginx/www , mas você pode mudar para qualquer localização no seu sistema de arquivos. server_name - você pode definir mais de um server_name, como mostrado no exemplo - esse site irá responder tanto por localhost como por vhostname.local (para esse último funcionar, você precisaria adicionar uma linha no seu /etc/hosts apontando o domínio local vhostname.local para 127.0.0.1 ). As alterações só estarão ativas depois que você reiniciar o nginx: sudo service nginx restart Para maiores detalhes sobre as configurações possíveis no Nginx, consulte a documentação oficial: http://nginx.org/en/docs/

5. Trabalhando com múltiplos vhosts

Para criar mútiplos vhosts, basta copiar o arquivo de configuração acima, fazer as alterações necessárias (server_name e root pelo menos) e criar um link simbólico dentro da pasta sites-enabled - igualzinho ao Apache. Não esqueça de reiniciar o nginx depois de fazer as alterações: sudo service nginx restart .

6. Módulos PHP, Banco de Dados..

O resto dos pacotes a serem instalados vai depender muito dos seus projetos, mas um bom ponto de partida seria:

sudo apt-get install php5-cli php5-curl php5-xdebug php5-intl php-pear

E o banco de dados que você preferir. Um ponto importante a se observar é que, como estamos usando php5-fpm, o comando "php" não estará disponível no sistema, mas basta instalar o pacote php5-cli para resolver o problema.

Sumário

Nginx+php5-fpm FTW :) Se você está usando o Apache (eu sei, a gente se apega...), faça um teste com o Nginx e me diga o que achou. Vale a pena experimentar, até porque o Nginx vêm crescendo bastante e sendo adotado por muitas empresas. ;)

comments powered by Disqus