Servidor Web · 7 min read · Jan 05, 2026

Instalando Nginx com PHP (como PHP-FPM) e MariaDB (LEMP) no Debian 8

Este tutorial mostrará a instalação do servidor web Nginx no Debian 8. Nginx (pronunciado “engine x”) é um servidor HTTP gratuito, de código aberto e de alto desempenho. O Nginx é conhecido por sua estabilidade, conjunto rico de recursos, configuração simples e baixo consumo de recursos. Este tutorial mostra como você pode instalar o Nginx com suporte a PHP (através do PHP-FPM) e MariaDB como substituto do MySQL. Esta configuração é frequentemente chamada de LEMP = Linux + nginx (pronunciado “ e ngine x”) + MySQL + PHP).

Nota Preliminar

Neste tutorial, eu uso o nome do host server1.example.com com o endereço IP 192.168.1.100. Essas configurações podem diferir para você, então você deve substituí-las onde apropriado. Você deve ter um servidor Debian 8, eu usarei o servidor Debian minimal como o sistema base para este tutorial.

Atualizando o Sistema

É recomendável atualizar as listas de pacotes e instalar quaisquer atualizações pendentes antes de começarmos com a configuração do Nginx. Execute os seguintes comandos para instalar quaisquer atualizações pendentes.

apt-get update  
apt-get upgrade -y

Eu usarei o editor nano mais tarde para editar arquivos de configuração. O Nano pode ser instalado com este comando:

apt-get -y install nano 

Instalando MariaDB (como substituto do MySQL)

Para instalar o MariaDB, executamos:

apt-get -y install mariadb-server mariadb-client

Você será solicitado a fornecer uma senha para o usuário root do MariaDB - 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 MariaDB manualmente mais tarde:

Nova senha para o usuário “root” do MariaDB: <– sua senhadobanco
Repita a senha para o usuário “root” do MariaDB: <– sua senhadobanco

Digite a senha do usuário root do MariaDB.

Instalando Nginx

O Nginx está disponível como um pacote para o Debian Jessie, que podemos instalar da seguinte forma:

apt-get -y install nginx

Inicie o Nginx depois:

systemctl start nginx.service

Digite o endereço IP ou nome do host do seu servidor web em um navegador (por exemplo, http://192.168.1.100), e você deve ver a seguinte página:

Página inicial do Debian Nginx.

O diretório raiz do documento nginx no Debian 8 é /var/www/html.

Instalando PHP

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 -y install php5-fpm

O PHP-FPM é um processo daemon (com o arquivo de unidade systemd php5-fpm.service) que executa um servidor FastCGI no socket /var/run/php5-fpm.sock.

Configurando o nginx

A configuração do nginx está em /etc/nginx/nginx.conf, que abrimos agora:

nano /etc/nginx/nginx.conf

A 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, defina o keepalive_timeout para um valor razoável como 2 segundos:

[...]  
    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:

nano /etc/nginx/sites-available/default
[...]  
server {  
 listen 80 default_server;  
 listen [::]:80 default_server;  
  
 # Configuração SSL  
 #  
 # listen 443 ssl default_server;  
 # listen [::]:443 ssl default_server;  
 #  
 # Certificados autoassinados gerados pelo pacote ssl-cert  
 # Não os use em um servidor de produção!  
 #  
 # include snippets/snakeoil.conf;  
  
 root /var/www/html;  
  
 # Adicione index.php à lista se você estiver usando PHP  
 index index.html index.htm index.nginx-debian.html index.php;  
  
 server_name _;  
  
 location / {  
 # Primeira tentativa de servir a solicitação como arquivo, depois  
 # como diretório, depois voltar a exibir um 404.  
 try_files $uri $uri/ =404;  
 }  
  
 # passe os scripts PHP para o servidor FastCGI ouvindo em 127.0.0.1:9000  
 #  
 location ~ \.php$ {  
 include snippets/fastcgi-php.conf;  
   
 # # Com php5-cgi sozinho:  
 # fastcgi_pass 127.0.0.1:9000;  
 # Com php5-fpm:  
 fastcgi_pass unix:/var/run/php5-fpm.sock;  
 }  
  
 # negue acesso a arquivos .htaccess, se o diretório raiz do documento do Apache  
 # coincidir com o do nginx  
 #  
 location ~ /\.ht {  
 deny all;  
 }  
}
[...]  

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 /var/www/html; significa que o diretório raiz do documento é o diretório /var/www/html.

A parte importante para o PHP é a estrofe location ~ .php$ {}. Descomente-a como mostrado acima para habilitá-la.

Agora salve o arquivo e recarregue o Nginx:

systemctl reload nginx.service

Em seguida, abra /etc/php5/fpm/php.ini…

nano /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:

systemctl reload php5-fpm.service

Agora crie o seguinte arquivo PHP no diretório raiz do documento /var/www/html/:

nano /var/www/html/info.php

Agora chamamos esse arquivo em um navegador (por exemplo, http://192.168.1.100/info.php):

Informações do 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 MariaDB / MySQL no PHP.

Obtendo Suporte ao MySQL / MariaDB no PHP

Para obter suporte ao MySQL no PHP, podemos instalar o pacote php5-mysqlnd. É uma boa ideia instalar alguns outros módulos PHP também, pois você pode precisar deles para suas aplicações. Você pode pesquisar módulos PHP disponíveis assim:

apt-cache search php5

Escolha os que você precisa e instale-os assim:

apt-get -y install php5-mysqlnd php5-curl php5-gd php5-intl php-pear php5-imagick php5-imap php5-mcrypt php5-memcache php5-intl php5-pspell php5-recode php5-snmp php5-sqlite php5-tidy php5-xmlrpc php5-xsl

APCu é um cache de opcode PHP gratuito e aberto para armazenar em cache e otimizar o código intermediário do PHP, que estende o opcache do PHP. Ele substitui o cache APC. e é semelhante a outros caches de opcode PHP, como eAccelerator e Xcache. É altamente recomendável ter um desses instalados para acelerar sua página PHP.

O APCu pode ser instalado da seguinte forma:

apt-get install php5-apcu

Agora recarregue o PHP-FPM:

systemctl reload php5-fpm.service

Agora recarregue http://192.168.1.100/info.php em seu navegador e role para baixo até a seção de módulos novamente. Você deve agora encontrar muitos novos módulos lá, incluindo o módulo MySQL:

Informações do PHP com MySQL.

Fazendo o PHP-FPM usar uma conexão TCP (opcional)

Por padrão, o PHP-FPM está ouvindo no socket /var/run/php5-fpm.sock. Também é possível fazer o PHP-FPM usar uma conexão TCP. Para fazer isso, abra /etc/php5/fpm/pool.d/www.conf…

nano /etc/php5/fpm/pool.d/www.conf

… e faça a linha listen ficar assim:

[...]  
;listen = /var/run/php5-fpm.sock
listen = 127.0.0.1:9000
[...]  

Isso fará com que o PHP-FPM ouça na porta 9000 no IP 127.0.0.1 (localhost). Certifique-se de usar uma porta que não esteja em uso em seu sistema.

Em seguida, recarregue o PHP-FPM:

systemctl reload php5-fpm.service

Em seguida, passe pela sua configuração do Nginx e todos os seus vhosts e mude a linha fastcgi_pass unix:/var/run/php5-fpm.sock; para fastcgi_pass 127.0.0.1:9000;, por exemplo, assim:

nano /etc/nginx/sites-available/default
[...]  
 location ~ \.php$ {  
   include snippets/fastcgi-php.conf;  
  
   # # Com php5-cgi sozinho:  
   # fastcgi_pass 127.0.0.1:9000;  
   # # Com php5-fpm:  
   # fastcgi_pass unix:/var/run/php5-fpm.sock;  
   fastcgi_pass 127.0.0.1:9000;  
 }
[...]  

Finalmente, recarregue o Nginx:

systemctl reload nginx.service

Imagem da Máquina Virtual

Este tutorial está disponível como uma máquina virtual pronta para uso no formato OVA / OVF para assinantes do Howtoforge. O formato da VM é compatível com VMWare e Virtualbox e provavelmente algumas outras ferramentas que podem importar este formato. Você pode encontrar o link de download no menu à direita no topo. Clique no nome do arquivo para iniciar o download.

Os detalhes de login da VM são:

Login SSH

Nome de usuário: root
Senha: howtoforge

Login do MariaDB

Nome de usuário: root
Senha: howtoforge

Por favor, altere as senhas após a primeira inicialização.

A VM está configurada para o IP estático 192.168.1.100, o IP pode ser alterado no arquivo /etc/network/interfaces.

Links

Share: X/Twitter LinkedIn

Receba novas postagens na sua caixa de entrada

Sem spam. Cancele a assinatura a qualquer momento.