Categories
Desenvolvimento Linux

Nginx e php5-fpm

Eu precisava rodar no meu servidor uma aplicação PHP, sem que isso despendesse muito esforço e tempo em configurações complicadas, mas que ao mesmo tempo fosse flexível o suficiente para compartilhar o webserver com outras aplicações que rodam em Python.

A solução foi usar o php-fpm, que para minha alegria está no repositório do Ubuntu 12.10. A ideia é instalar o pacote php5-fpm e configurar a diretiva fastcgi_pass no Nginx. Eu fiz o seguinte para começar com uma configuração básica:

fabio:~$ sudo apt-get install php5-fpm
fabio:~$ sudo mkdir /var/www/teste.montefuscolo.com.br
fabio:~$ echo "<?php echo 'oi mundo';" | \
         sudo tee  /var/www/teste.montefuscolo.com.br/index.php
fabio:~$ sudo tee /etc/nginx/sites-enabled/teste.montefuscolo.com.br << EOF
server {
    server_name teste.montefuscolo.com.br;
    root /var/www/teste.montefuscolo.com.br/;

    location / {
        index.php index.html index.htm;
    }

    location ~ \.php$ {
        include fastcgi_params;
        fastcgi_pass unix:/var/run/php5-fpm.sock;
    }
}
EOF
fabio:~$ sudo service nginx restart

Pode ser que ao invés de um arquivo sock, o php5-fpm esta rodando em uma porta TCP, pois depende de como ele vem pré-configurado. Neste caso a configuração da diretiva fastcgi_pass pode ser um pouco diferente, como a seguinte:

fastcgi_pass 127.0.0.1:9000;

Para descobrir isso você pode consultar o arquivo de configuração do php-fpm em /etc/php5/fpm/pool.d/www.conf, procurando pela linha que começa com listen.

fabio:~$ grep ^listen /etc/php5/fpm/pool.d/www.conf
listen = /var/run/php5-fpm.sock

Depois desses passos consegui uma página imprimindo ‘oi mundo’ em http://teste.montefuscolo.com.br/.

Referências