Ubuntu/Linux – Instalando e configurando o Nginx com PHP (Installing Nginx With PHP5)

nginx

Nginx ( Pronuncia: Engine-X ) é open-source, servidor de alto desempenho HTTP e proxy reverso, bem como um servidor proxy de IMAP/POP3. Igor Sysoev iniciou o desenvolvimento do Nginx em 2002, com o primeiro lançamento público em 2004 o Nginx agora abriga cerca de 12,18% (22.2M) de domínios. Nginx é conhecido pelo seu alto desempenho, estabilidade, rico conjunto de recursos, configuração simples e baixo consumo de recursos.

Nginx é um servidores escritos para resolver o problema C10K . Ao contrário dos servidores tradicionais, Nginx não depende de tópicos para processar pedidos. Em vez disso, usa um event-driven arquitetura muito mais escalável (assíncrono). Esta arquitetura utiliza pequenas, mas mais importante, valores previsíveis de memória sob carga.  ( http://wiki.nginx.org/Main )

Em passos bem completos vamos iniciar a instalação e configuração desse excelente servidor WEB, vou tentar detalhar ao máximo ou pelo menos informar o que fazer sem erros, pois é um processo chato. Vamos lá:

1 – Instalação do PHP5

sudo apt-get install php5-common
sudo apt-get install php5-gd
sudo apt-get install php5-cli
sudo apt-get install php5-curl
sudo apt-get install php5-fpm

No passo acima a instalação mais importante é a do php5-fpm

2 – Configurando o PHP5 FPM

Abra o arquivo: /etc/php5/fpm/php.ini…

sudo vi /etc/php5/fpm/php.ini

… procure e mude o parâmetro “cgi.fix_pathinfo=0″:

[...]
; cgi.fix_pathinfo provides *real* PATH_INFO/PATH_TRANSLATED support for CGI.  PHP's
; previous behaviour was to set PATH_TRANSLATED to SCRIPT_FILENAME, and to not grok
; what PATH_INFO is.  For more information on PATH_INFO, see the cgi specs.  Setting
; this to 1 will cause PHP CGI to fix its paths to conform to the spec.  A setting
; of zero causes PHP to behave as before.  Default is 1.  You should fix your scripts
; to use SCRIPT_FILENAME rather than PATH_TRANSLATED.
; http://php.net/cgi.fix-pathinfo
cgi.fix_pathinfo=0
[...]

Neste mesmo arquivo mude o Charset para UTF-8 (opcional):

default_charset = "utf-8"

[...]
; PHP's default character set is set to empty.
; http://php.net/default-charset
default_charset = "utf-8"
[...]

Por ultimo vamos alterar o tipo do listener do FPM, por padrão ele vem configurado para TCP, vamos mudar para Unix Socket que é mais rápido.

sudo vi /etc/php5/fpm/pool.d/www.conf

Altere o valor do parametro “listen = 127.0.0.1:9000″ para:

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

[...]
; The address on which to accept FastCGI requests.
; Valid syntaxes are:
; 'ip.add.re.ss:port' - to listen on a TCP socket to a specific address on
; a specific port;
; 'port' - to listen on a TCP socket to all addresses on a
; specific port;
; '/path/to/unix/socket' - to listen on a unix socket.
; Note: This value is mandatory.
;listen = 127.0.0.1:9000
listen = /var/run/php5-fpm.sock
[...]

5 – Configurando o FastCGI

Edite o arquivo:

sudo vi /etc/nginx/fastcgi_params

Adicione a seguinte linha ao arquivo:

fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;

6 – Configurando o NginX

Edite o arquivo:

sudo vi /etc/nginx/nginx.conf

A configuração é fácil de entender (você pode aprender mais sobre ele aqui: http://wiki.nginx.org/NginxFullExample e aqui: http://wiki.nginx.org/NginxFullExample2)

Em primeiro lugar (isso é opcional). Vamos ajustar o número de processos de trabalho e definir o keepalive_timeout para um valor razoável:

[...]
worker_processes  4;
[...]
    keepalive_timeout   2;
[...]

7 – Configurando os Hosts Virtuais

Os hosts virtuais são definidos em recipientes server{}. O vhost padrão é definido no arquivo  /etc/nginx/sites-available/default - vamos modificá-lo da seguinte forma:

[...]
server {
        listen   80; ## listen for ipv4; this line is default and implied
        listen   [::]:80 default_server ipv6only=on; ## listen for ipv6

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

        # Make site accessible from http://localhost/
        server_name localhost;

        location / {
                # First attempt to serve request as file, then
                # as directory, then fall back to displaying a 404.
                try_files $uri $uri/ /index.html;
                # Uncomment to enable naxsi on this location
                # include /etc/nginx/naxsi.rules
        }

        location /doc/ {
                alias /usr/share/doc/;
                autoindex on;
                allow 127.0.0.1;
                allow ::1;
                deny all;
        }

        # Only for nginx-naxsi used with nginx-naxsi-ui : process denied requests
        #location /RequestDenied {
        #       proxy_pass http://127.0.0.1:8080;
        #}

        #error_page 404 /404.html;

        # redirect server error pages to the static page /50x.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$ {
                try_files $uri =404;
                fastcgi_split_path_info ^(.+\.php)(/.+)$;
                # NOTE: You should have "cgi.fix_pathinfo = 0;" in php.ini

                # With php5-cgi alone:
                #fastcgi_pass 127.0.0.1:9000;
                # With php5-fpm:
                fastcgi_pass unix:/var/run/php5-fpm.sock;
                fastcgi_index index.php;
                include fastcgi_params;
        }

        # deny access to .htaccess files, if Apache's document root
        # concurs with nginx's one
        #
        location ~ /\.ht {
                deny all;
        }
}
[...]

Descomente os dois listen para fazer nginx escutar na porta 80 IPv4 e IPv6.

server_name _; torna este um vhost genérica default (claro, você pode também especificar um hostname aqui como www.example.com).

Eu adicionei index.php para o diretório root ‘/usr/share/nginx/www;’ significa que a raiz do documento é o diretório /usr/share/nginx/www.

Agora para finalizar e testar vamos criar um arquivo php no diretorio root especificado

vi /usr/share/nginx/www/info.php

< ? php phpinfo();  ? >

(sem os espaços na chave e ponto de interrogação)

Agora vamos reiniciar os serviços:

sudo service php5-fpm restart;
sudo service nginx restart;

Pronto, só testar:

nginx

Fontes:
– http://goo.gl/qojHc
- http://goo.gl/St04Y

Help DEV – Analista desenvolvedor Java / Android

http://helpdev.com.br/zarelli

One thought on “Ubuntu/Linux – Instalando e configurando o Nginx com PHP (Installing Nginx With PHP5)

Deixe uma resposta

O seu endereço de email não será publicado Campos obrigatórios são marcados *

Você pode usar estas tags e atributos de HTML: <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <strike> <strong>