Servidor Web · 4 min read · Jan 23, 2026
Instalando Nginx Com Suporte a PHP5 (E PHP-FPM) E MySQL (LEMP) No Debian Wheezy
Nginx (pronunciado “engine x”) é um servidor HTTP de alto desempenho, gratuito e de código aberto. O Nginx é conhecido por sua estabilidade, rico conjunto de recursos, configuração simples e baixo consumo de recursos. Este tutorial mostra como você pode instalar o Nginx em um servidor Debian Wheezy com suporte a PHP5 (através do PHP-FPM) e suporte a MySQL (LEMP = Linux + nginx (pronunciado “ e ngine x”) + MySQL + PHP).
Não dou nenhuma garantia de que isso funcionará para você!
1 Nota Preliminar
Neste tutorial, uso o nome do host server1.example.com com o endereço IP 192.168.0.100. Essas configurações podem diferir para você, então você deve substituí-las onde for apropriado.
2 Instalando MySQL 5
Para instalar o MySQL, executamos
apt-get install mysql-server mysql-clientVocê será solicitado a fornecer uma senha para o usuário root do MySQL - essa senha é válida para o usuário root@localhost, bem como para [email protected], então não precisamos especificar uma senha root do MySQL manualmente mais tarde:
Nova senha para o usuário “root” do MySQL: <– sua senha root sql Repita a senha para o usuário “root” do MySQL: <– sua senha root sql
3 Instalando Nginx
O Nginx está disponível como um pacote para Debian Wheezy, que podemos instalar da seguinte forma:
apt-get install nginxInicie o nginx em seguida:
/etc/init.d/nginx startDigite o endereço IP ou nome do host do seu servidor web em um navegador (por exemplo, http://192.168.0.100), e você deve ver a seguinte página:

O diretório raiz do documento padrão do nginx no Debian Wheezy é /usr/share/nginx/www.
4 Instalando PHP5
Podemos fazer o PHP5 funcionar no nginx através do PHP-FPM (PHP-FPM (FastCGI Process Manager) é uma implementação alternativa do PHP FastCGI com alguns recursos adicionais úteis para sites de qualquer tamanho, especialmente sites mais movimentados) que instalamos da seguinte forma:
apt-get install php5-fpmO PHP-FPM é um processo daemon (com o script de inicialização /etc/init.d/php5-fpm) que executa um servidor FastCGI no socket /var/run/php5-fpm.sock.
5 Configurando nginx
A configuração do nginx está em /etc/nginx/nginx.conf, que abrimos agora:
vi /etc/nginx/nginx.confA configuração é fácil de entender (você pode aprender mais sobre isso aqui: http://wiki.nginx.org/NginxFullExample e aqui: http://wiki.nginx.org/NginxFullExample2)
Primeiro (isso é opcional) ajuste o número de processos de trabalho e defina o keepalive_timeout para um valor razoável:
| [...] worker_processes 4; [...] keepalive_timeout 2; [...] |
Os hosts virtuais são definidos em contêineres server {}. O vhost padrão é definido no arquivo /etc/nginx/sites-available/default - vamos modificá-lo da seguinte forma:
vi /etc/nginx/sites-available/default| [...] 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; # Torne o site acessível a partir de http://localhost/ server_name localhost; location / { # Primeira tentativa de servir a solicitação como arquivo, depois # como diretório, depois voltar a exibir um 404. try_files $uri $uri/ /index.html; # Descomente para habilitar naxsi nesta localização # include /etc/nginx/naxsi.rules } location /doc/ { alias /usr/share/doc/; autoindex on; allow 127.0.0.1; allow ::1; deny all; } # Apenas para nginx-naxsi usado com nginx-naxsi-ui : processar solicitações negadas #location /RequestDenied { # proxy_pass http://127.0.0.1:8080; #} #error_page 404 /404.html; # redirecionar páginas de erro do servidor para a página estática /50x.html # error_page 500 502 503 504 /50x.html; location = /50x.html { root /usr/share/nginx/www; } # passar os scripts PHP para o servidor FastCGI ouvindo em 127.0.0.1:9000 # location ~ \.php$ { try_files $uri =404; fastcgi_split_path_info ^(.+\.php)(/.+)$; # NOTA: Você deve ter "cgi.fix_pathinfo = 0;" no php.ini # Com php5-cgi apenas: #fastcgi_pass 127.0.0.1:9000; # Com php5-fpm: fastcgi_pass unix:/var/run/php5-fpm.sock; fastcgi_index index.php; include fastcgi_params; } # negar acesso a arquivos .htaccess, se o diretório raiz do documento do Apache # coincidir com o do nginx # location ~ /\.ht { deny all; } } [...] |
Descomente ambas as linhas listen para fazer o nginx ouvir na porta 80 IPv4 e IPv6.
servername ; torna isso um vhost padrão catchall (claro, você também pode especificar um nome de host aqui, como www.example.com).
Adicionei index.php à linha de índice. root /usr/share/nginx/www; significa que o diretório raiz do documento é o diretório /usr/share/nginx/www.
A parte importante para o PHP é a estrofe location ~ .php$ {}. Descomente-a para habilitá-la. Observe que adicionei a linha try_files $uri =404; para evitar exploits de zero-day (veja http://wiki.nginx.org/Pitfalls#Passing_Uncontrolled_Requests_to_PHP e http://forum.nginx.org/read.php?2,88845,page=3).
Agora salve o arquivo e recarregue o nginx:
/etc/init.d/nginx reloadEm seguida, abra /etc/php5/fpm/php.ini…
vi /etc/php5/fpm/php.ini… e defina cgi.fix_pathinfo=0:
| [...] ; cgi.fix_pathinfo fornece suporte *real* para PATH_INFO/PATH_TRANSLATED para CGI. O comportamento anterior do PHP era definir PATH_TRANSLATED como SCRIPT_FILENAME, e não entender ; o que é PATH_INFO. Para mais informações sobre PATH_INFO, veja as especificações cgi. Definir ; isso como 1 fará com que o PHP CGI corrija seus caminhos para se conformar à especificação. Um valor ; de zero faz com que o PHP se comporte como antes. O padrão é 1. Você deve corrigir seus scripts ; para usar SCRIPT_FILENAME em vez de PATH_TRANSLATED. ; http://php.net/cgi.fix-pathinfo cgi.fix_pathinfo=0 [...] |
Recarregue o PHP-FPM:
/etc/init.d/php5-fpm reloadAgora crie o seguinte arquivo PHP no diretório raiz do documento /usr/share/nginx/www:
vi /usr/share/nginx/www/info.php| |
Agora chamamos esse arquivo em um navegador (por exemplo, http://192.168.0.100/info.php):

Como você pode ver, o PHP5 está funcionando, e está funcionando através do FPM/FastCGI, como mostrado na linha Server API. Se você rolar mais para baixo, verá todos os módulos que já estão habilitados no PHP5. O MySQL não está listado lá, o que significa que ainda não temos suporte ao MySQL no PHP5.
Receba novas postagens na sua caixa de entrada
Sem spam. Cancele a assinatura a qualquer momento.