Nginx é um servidor web de alta performance e que tem mostrado ótimos resultados em diversos casos como o wordpress por exemplo.
Pesquisando no google você pode encontrar vários casos de sucesso com o Nginx, desde implementações como proxy reverso ou um servidor de alta requisição com baixíssimo uso de cpu etc.
Motivos para se usar o Nginx não faltam em blogs pela web, nem comparações com o Apache,
porém esse não é o intuito deste post.
Podemos fazer o Nginx interagir com o php através do FastCGI, infelizmente não existe um módulo nativo para integrar o FastCGI no Nginx, porém podemos utilizar o pacote do Lighttp =D
Atualmente estou utilizando a Versão 6 do CentOS, que infelizmente não possuí o nginx em seu repositório oficial. Portanto irei utilizar o repositório EPEL (Extra Packages for Enterprise Linux) um repositório mantido por empacotadores voluntários, porém com um nível rigoroso de qualidade para que o pacote se torno disponível.
Primeiramente devemos habilitar o repositório em nosso sistema, execute como root o comando abaixo de acordo com sua arquitetura:
32 bits:
64 bits:
Agora instale o Nginx:
Como eu havia dito não há um pacote padrão do fastcgi para o nginx, por isso iremos utilizar o pacote do lighttp e alguns pacotes do php como php-mysql para integração com o banco, porém você poderá instalar pacotes adicionais caso deseje.
Após a instalação dos pacotes, vamos começar a configuração do Nginx, edite o arquivo /etc/nginx/nginx.conf
Para quem configurou o apache alguma vez, perceberá como é muito mais fácil configurar o nginx, os Virtual Hosts são especificados dentro das chaves { } Server, especificamente em servername _; caso deseje poderá especificar seu domínio na frente de servername.
Voltando a configuração, na seção Location / (linha 76 do arquivo) o conteúdo estará assim:
location / {
index index.html index.htm;
}
O diretório especificado em root é obviamente o DocumentRoot do servidor web, onde o conteúdo a ser publicado deverá estar contido, você pode altera-lo e especificar um outro diretório sem problema. porém neste tutorial irei deixar o diretório padrão mesmo.
Nesta parte adicione index.php na frente de index ficando assim:
root /usr/share/nginx/html;
index index.php index.html index.htm;
}
Agora a parte mais importante para funcionar o PHP é a seção location ~ \.php$ (linha 101)
Por padrão essa seção vem comentada assim:
# pass the PHP scripts to FastCGI server listening on 127.0.0.1:9000
#
#location ~ \.php$ {
# root html;
# fastcgi_pass 127.0.0.1:9000;
# fastcgi_index index.php;
# fastcgi_param SCRIPT_FILENAME scripts/$fastcgi_script_name;
# include fastcgi_params;
#}
Descomente as linhas removendo os # da frente e na linha que contém fastcgi_param SCRIPTFILENAME você deverá acrescentar o path completo do DocumentRoot, exemplo:
fastcgi_param SCRIPT_FILENAME /usr/share/nginx/html$fastcgi_script_name;
Essa parte é muito importante caso você não especifique corretamente seu DocumentRoot o nginx não conseguirá interpretar seus arquivos em php, portante preste atenção e adicione corretamente seu DocumentRoot.
Preste atenção na linha contendo fastcgi_pass 127.0.0.1:9000 essa linha informa em qual ip e porta o nginx está esperando que o fastcgi esteja sendo executado, caso deseje poderá escolher outro ip e outra porta a ser utilizada pelo fastcgi, pois iremos inicia-lo mais adiante onde você poderá especificar o ip e porta desejada, porém irei continuar o tutorial com esse endereço padrão.
Feito as alterações o conteúdo deverá estar assim:
# pass the PHP scripts to FastCGI server listening on 127.0.0.1:9000
#
location ~ \.php$ {
root html;
fastcgi_pass 127.0.0.1:9000;
fastcgi_index index.php;
fastcgi_param SCRIPT_FILENAME /usr/share/nginx/html/$fastcgi_script_name;
include fastcgi_params;
}
Edite o arquivo /etc/php.ini:
E no final do arquivo adicione a seguinte linha:
Agora iremos iniciar o fastcgi, seu executável fica localizado em /usr/share/spawn-fcgi você poderá verificar todas opções e parâmetros disponíveis para o mesmo executando o comando:
Como eu havia informado, você pode especificar em qual ip e porta o fastcgi será executado, caso você tenha alterado o endereço padrão no arquivo /etc/nginx/nginx.conf , utilize os próximos comandos com o endereço que você informou.
Inicie o fastcgi com o comando:
O comando acima informe que queremos utilizar o localhost como endereço ip (-a), na porta 9000 (-p) para o usuário nginx (-u) para o grupo nginx (-g) para aplicação php-cgi (-f) com o arquivo de pid fastcgi-php.pid (-P)
Todos esses parâmetros podem ser verificados com spawn-fcgi --help =D!
Obviamente você não gostaria de ter que digitar este comando toda vez que efetuar um reboot para iniciar o fastcgi, então para que ele inicie automaticamente em cada reboot do sistema adicione o comando acima no final do arquivo /etc/rc.local :
E adicione o comando no final do arquivo:
Agora vamos verificar se está tudo funcionando corretamente, reinicie o nginx:
Através do navegador acesse o endereço ip do seu servidor ou o localhost caso esteja utilizando o navegador no próprio servidor, no meu caso acessei o endereço 7.7.7.18
Você provavelmente verá o conteúdo abaixo:
E adicione o seguinte conteúdo:
Salve o arquivo e acesse o ip do seu servidor /info.php . No meu caso 7.7.7.18/info.php
Caso você consiga visualizar o mesmo conteúdo da imagem acima, o nginx está interpretando php normalmente =D . Se você não conseguiu visualizar, reveja as configurações que você efetuou e reinicie o php e o nginx novamente, verifique atentamente se você especificou o DocumentRoot correto em fastcgi_param no arquivo /etc/nginx/nginx.conf.
Se tiver dúvidas ou deseje verificar mais configurações possíveis para o nginx clique aqui.
Muito bom, vou estar usando o nginx no meu próximo projeto, tenho visto que seu desempenho é muito melhor que o apache pela internet, então estou decidido a usá-lo. Obrigado pelo tutorial
[Responder comentário]Opa eu que agradeço o comentário, boa sorte em seu novo projeto !
[Responder comentário]Grande Tutorial ....... fico 1000 % Parabéns . ...... !!!!!
[Responder comentário]