Hoje nós vamos ver como instalar um servidor web no Debian… Não, pera… isso já foi? Certo? Debian + Apache2 + PHP5 + MySQL? Ah sim… hoje vamos mudar um pouquinho. Vamos de Debian + nginx + php5 + MariaDB.
Clique ae e simbora bora.
Claro, a primeira pergunta que deve estar na cabeça de vocês é: Porque raios eu iria querer alguma coisa sem ser o Apache2? Bom, o nginx é um servidor http de alta performance e um proxy reverso, coisa que o Apache2 não é. Eu não vou entrar em detalhes do por que um proxy reverso é algo legal agora, porque aprendendo como o apache2 e o nginx funcionam individualmente, facilitará quando eu falar em como utilizar os dois simultaneamente.
Bom, assumindo que você está no Debian, troque pra root com:
su
INSTALANDO O NGINX
Se você já tiver o apache2 instalado no seu servidor, vamos remover ele completamente por enquanto pra evitar quaisquer tipo de conflito. Use como root:
service apache2 stop apt-get remove –purge apache2 apache2-utils apache2.2-bin apache2-common apt-get autoremove apt-get autoclean
Vamos achar os arquivos de configuração do apache2 com:
whereis apache2
E remover completamente as pastas com:
rm -Rf /etc/apache2 /usr/lib/apache2 /usr/include/apache2
Agora instalamos o nginx com:
apt-get install nginx
Vamos iniciar ele no Debian Jessie com:
systemctl start nginx
Em outras versões do Debian ou derivados:
service nginx start
Use systemctl status nginx ou service nginx status para verificar se está ok.
Se a saída estiver ok, vá no seu navegador e acesso:
#caso o servidor seja local: http://127.0.0.1
#caso o servidor seja remoto: http://ip.do.servidor.remoto
Você deve receber algo como:

INSTALANDO O MARIADB
O MariaDB é um community fork do MySQL, ele é robusto, escalavel e trás uma série de melhorias em relação a stack atual do MySQL.
Se você já tem uma instalação do MySQL nesse servidor, remova ele completamente com:
systemctl stop mysql ou service mysql stop apt-get remove –purge mysql-server mysql-client mysql-common apt-get autoremove apt-get autoclean rm -rf /var/lib/mysql/ rm -rf /etc/mysql/
E instale o MariaDB com:
apt-get install mariadb-server
INSTALANDO O PHP
apt-get install php5 php5-fpm php5-mysql
Bem direto não é? Instalamos com o comando acima o php5, o conector MySQL (O MariaDB embora diferente, tecnicamente ainda é o MySQL, porém mantido pela comunidade.
CONFIGURANDO O NGINX
Ok, tudo instalado, vamos a algumas particularidades do NGinx, pra começar, usar o nginx te entrega um desempenho bem superior ao apache2 e, se você precisa de desempenho em aplicações de medio e grande porte, pode ser uma excelente alternativa pra ti. O ponto negativo é que não é só instalar e sair usando. Vamos ter que configurar o nginx para servir o php e deixar tudo redondinho.
Bora lá.
nano /etc/nginx/nginx.conf
Isso vai abrir o arquivo de configuração do nginx, você vai procurar por worker_processes e vai alterar o valor para a quantidade de processadores que seu servidor dispões, no meu caso são 4 núcleos, então ‘worker_processes 4’. Dê um ctrl o para salvar e ctrl x para sair do nano.
O vhost padrão é definido em /etc/nginx/sites-avaliable/default vamos fazer um backup desse arquivo com:
mv /etc/nginx/sites-available/default /etc/nginx/sites-available/default.old
Vamos criar um arquivo novo e entrar nele pra editar com:
touch /etc/nginx/sites-available/default nano /etc/nginx/sites-available/default
Adicione essas linhas:
server { listen 80; server_name debian.unixmen.local; root /var/www/html; index index.php index.html index.htm index.nginx-debian.html;
location / { try_files $uri $uri/ =404; }
error_page 404 /404.html; error_page 500 502 503 504 /50x.html;
location = /50x.html { root /var/www/html; }
location ~ .php$ { try_files $uri =404; fastcgi_pass unix:/var/run/php5-fpm.sock; fastcgi_index index.php; fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name; include fastcgi_params; } }
root /var/www/html; –> Raiz dos documentos de trabalho; server_name debian.unixmen.local; –> nome do servidor;
Novamente salve e saia do arquivo.
Reinicie o nginx com systemctl restart nginx ou service nginx restart e reinicie o php-fpm com systemctl restart php5-fpm ou service php-fpm restart.
Vamos dar uma verificada na configuração do nginx pra ver se não há nenhum problema de sintaxe ou algo do gênero com:
nginx -t
a saida deve ser: nginx: the configuration file /etc/nginx/nginx.conf syntax is ok nginx: configuration file /etc/nginx/nginx.conf test is successful
Vamos agora configurar o PHP, abra o arquivo do php-fpm com:
nano /etc/php5/fpm/php.ini
Ache a linha que contém ‘cgi.fix_pathinfo=1’ e descomente ela, altere também o valor de 1 pra 0 e reinicie novamente o php-fpm como fizemos alí em cima.
Sempre que quiser verificar se o php-fpm está rodando use systemctl status php5-fpm ou service php5-fpm status.
TESTANDO ESSA BAGAÇA
Bom, já configuramos basicamente tudo. Vamos testar se está funcionando?
Crie um arquivo na raiz de trabalho que configuramos acima com o nome de teste.bolado.php e use o nano pra abrir o arquivo, coloque as seguintes linhas:
<?php phpinfo(); ?>
Salve, feche e acesse seu servidor no navegador:
#se local: http://127.0.0.1/teste.bolado.php
#se remoto: http://ip.do.servidor.bolado/teste.bolado.php
Você deve receber algo do gênero:
O php-fpm escuta o socket /var/run/php5-fpm.sock por padrão, se você quer que ele utilize uma conexão TCP, abra o arquivo: /etc/php5/fpm/pool.d/www.conf e altere a linha onde está ‘listen = /var/run/php5-fpm.sock’ mude para ‘listen = 127.0.0.1:9000’ eu recomendo usar high ports por padrão, pra evitar supresas indesejaveis.
Reinicie o serviço do php-fpm, abra o arquivo de configuração do nginx com nano /etc/nginx/sites-available/default e altere a linha ‘fastcgi_pass unix:/var/run/php5-fpm.sock’ para ‘fastcgi_pass 127.0.0.1:9000’.
Salve e saia do arquivo. Reinicie o nginx e pronto!
Turma, o tutorial de hoje fica por aqui. Se você quiser gerenciar visualmente seu MariaDB eu vou deixar recomendado aqui o MySQL Workbench, ele na minha opinião dá um banho no phpMyAdmin, vale a pena pesquisar sobre. Futuramente trago aqui um guia bacaninha sobre ele.
O texto de hoje possui bastante informação minha, mas foi largamente levado tendo como base esse post aqui: http://www.unixmen.com/how-to-install-lemp-stack-on-debian-8/ deem uma olhada, o autor com certeza vai ficar feliz. Ele aborda a instalação do phpmyadmin e a configuração necessária para ele funcionar com o nginx.
Por hoje é isso, fiquem na paz e até a próxima.
O trabalho Subindo um servidor web no Debian Jessie com o NGinX de Thiago Faria Mendonça está licenciado com uma LicençaCreative Commons – Atribuição 4.0 Internacional.