Configurar Servidor LEMP (Nginx, MySQL, PHP) – Parte 3

No artigo anterior terminamos as configurações de segurança de nosso servidor, um passo importante no provisionamento de qualquer ambiente de produção. Neste ponto sua droplet está protegida contra uma série de ataques automatizados, isso garantirá qualidade e segurança ao seu sistema/site. Obviamente essas configurações não o protegem de um código mal escrito ou um software vulnerável, por isso é importante aplicar sempre os patchs de segurança, manter seus aplicativos atualizados e monitorar o log do sistema.

Na terceira parte da série “como configurar um servidor LEMP na DigitalOcean”, vamos instalar o PHP-FPM, Nginx e o MySQL, além de fazer tudo isso trabalhar em conjunto da melhor forma possível. Essa será a parte final de nossa série, ao chegar no final deste artigo, seu ambiente de produção estará pronto para o uso, podendo assim receber uma instalação de um blog WordPress ou qualquer outro sistema que desejar.

Mais uma vez o tutorial abaixo foi dividido em passos, isso tem como objetivo organizar a estrutura textual e facilitar posteriores consultas. Cada passo é pré-requisito do anterior, fique atento a isso, para que erros inesperados não aconteçam durante a execução dos comandos aqui passados.

Primeiro passo – Instalar o PHP-FPM

Antigamente eu instalava o Apache com o suporte ao PHP habilitado, e deixava tudo correr solto. Porém com o tempo, e o aumento do número de usuários na aplicação, essa solução não é muito performática. O Apache é um excelente servidor, porém o Nginx com o PHP-FPM configurado corretamente é ainda melhor. Por isso vamos usar essa última abordagem aqui.

Primeiramente vamos instalar o PHP-FPM, para isso execute o comando abaixo para instalar os pré-requisitos do PHP-FPM.

sudo apt-get install python-software-properties 

Agora vamos adicionar o PPA onde se encontra a versão mais recente do software. Execute o comando abaixo, e quando solicitado, pressione a tecla Enter para confirmar a adição do repositório.

sudo add-apt-repository ppa:ondrej/php5-5.6 

Agora vamos instalar o PHP-FPM e os módulos mais importantes, para isso execute os comandos abaixo.

sudo apt-get update &&
sudo apt-get install php5-fpm php5-cli php5-curl php5-gd php5-json php5-mcrypt php5-mysqlnd

Quando a instalação for finalizada, é hora de configurar o PHP-FPM, para isso execute o seguinte comando:

sudo nano /etc/php5/fpm/php-fpm.conf

No arquivo que você acabou de abrir, procure as chaves emergency_restart_threshold e emergency_restart_interval, edite seus valores para corresponderem ao do exemplo a seguir.

emergency_restart_threshold = 10
emergency_restart_interval = 1m

Pressione Ctrl+x para sair do editor de texto e, quando solicitado, pressione a tecla Y e em seguida o Enter para salvar as alterações

Agora abra execute o comando abaixo para configurar o pool de processos:

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

Nesse arquivo você precisa editar diversas chaves, procure cada uma delas no modelo abaixo, e sete os valores conforme mostrado no exemplo a seguir.

user = demo
group = demo
listen = 127.0.0.1:9000
listen.allowed_clients = 127.0.0.1
pm.max_children = 51
pm.start_servers = 3
pm.min_spare_servers = 2
pm.max_sparre_servers = 4
pm.max_requests = 1000
slowlog = /path/to/slowlog.log
request_slowlog_timeout = 5s

Após realizar essas alterações acima citadas, pressione Ctrl+x para sair do editor de texto e, quando solicitado, pressione a tecla Y e em seguida o Enter para salvar as alterações. Nosso PHP-FPM está configurado corretamente, precisamos agora reiniciar o serviço para que as alterações surtam efeito. Execute o comando abaixo para reiniciar o processo.

sudo service php5-fpm restart

Segundo passo – Instalar e configurar Nginx

Nesse passo vamos instalar e configurar o servidor Nginx. Para aqueles que ainda não conhecem o Nginx é um servidor web bastante popular no mundo, é responsável por mais de 12% dos servidores HTTP ativos no mundo.¹ Essa popularidade não vem do nada, Nginx é muito mais leve e rápido que o Apache, além de permitir uma infinidade de configurações e ajustes finos. Se ficou curioso e deseja conhecer mais sobre o Nginx, clique neste link aqui.

Para instalar o Nginx em nossa droplet , primeiramente precisamos adicionar o PPA correto em nosso sistema, para isso basta executar o comando abaixo, e em seguida apertar a tecla Enter para confirmar a adição.

sudo add-apt-repository ppa:nginx/stable

Após executar o comando anterior, execute os comandos abaixo para instalar o Nginx em nossa máquina.

sudo apt-get update &&
sudo apt-get install nginx -y

Neste ponto o Nginx já se encontra instalado em nossa droplet, vamos agora criar a estrutura de pastas para armazenar o nosso site. Execute os comandos abaixo para criar algumas pastas que receberão nossa aplicação.

sudo mkdir -p /home/demo/example.com/public &&
sudo mkdir -p /home/demo/example.com/logs &&
sudo chmod -R +rx /home/demo

Agora vamos editar o arquivo de configuração de nosso virtual host, para isso execute o comando abaixo.

sudo nano /etc/nginx/sites-available/example.conf

Cole o código abaixo dentro do arquivo que você acabou de abrir.

server{
	listen 80;
	server_name example.com;
	index index.php;
	client_max_body_size 50M;
	error_log /home/demo/example.com/logs/error.log;
	access_log /home/demo/example.com/logs/access.log;
	root /home/demo/example.com/public;
	
	location / {
		try_files $uri $uri/ /index.php$is_args$args;
	}

	location ~ \.php {
		try_files $uri =404;
		fastcgi_split_path_info ^(.+\.php)(/.+)$;
		include fastcgi_params;
		fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
		fastcgi_param SCRIPT_NAME $fastcgi_script_name;
		fastcgi_index index.php;
		fastcgi_pass 127.0.0.1:9000;
	}
}

Após colar o código acima citado, pressione Ctrl+x para sair do editor de texto e, quando solicitado, pressione a tecla Y e em seguida o Enter para salvar as alterações.

Agora execute o comando abaixo para ativar o nosso novo site:

sudo ln -s /etc/nginx/sites-available/example.conf /etc/nginx/sites-enabled/example.conf

Agora execute o seguinte comando para reiniciar o nosso servidor Nginx e aplicar as alterações.

sudo service nginx restart

Tudo pronto, agora o PHP e o Nginx já estão trabalhando em conjunto e todos os arquivos que você colocar dentro da pasta /home/demo/example.com/public ficarão disponíveis publicamente na web. É para essa pasta que você deve enviar os arquivos de seu site.

Vamos agora instalar o MySQL server e finalizar o provisionamento de nosso servidor.

Terceiro passo – Instalação do MySQL server

Toda aplicação precisa persistir os dados do usuário de alguma forma, e o meio mais comum para isso é o uso de bancos de dados. Nessa parte do tutorial vamos instalar o MySQL Server em nossa droplet, assim teremos acesso aos seus recursos.

Primeiro passo e executar o comando abaixo para instalar o aplicativo em nosso servidor.

sudo apt-get install mysql-server

Quando solicitado escolha uma senha para o usuário root do MySQL. Lembre-se, esse NÃO é o usuário root do sistema e sim apenas de seu servidor MySQL.

Após a instalação do banco de dados, e escolhida a senha para o nosso usuário root do MySQL, execute o comando abaixo para criar as tabelas padrão do MySQL.

sudo mysql_install_db

Agora execute o comando abaixo para finalizar a configuração de seu servidor MySQL.

sudo mysql_secure_installation

O comando acima solicitará a senha do usuário root do MySQL, digite essa senha, e em seguida, responsa N para a primeira pergunta e Y para todas as perguntas posteriores.

Ao finalizar o questionário acima, a configuração de sua droplet terá chegado ao fim. Parabéns, você agora possui um servidor seguro, com o PHP, MySQL e Nginx configurados corretamente. Em caso de dúvidas, entre em contato através do formulário de comentários ou em nossa página do Facebook.

Cadastre-se na DigitalOcean e ganhe descontos!

Cadastre-se agora mesmo na DigitalOcean pelo botão abaixo e ganhe 10$ de desconto. Aproveite essa oportunidade única!

cadastre-se grátis

One thought on “Configurar Servidor LEMP (Nginx, MySQL, PHP) – Parte 3

Deixe uma resposta

O seu endereço de e-mail não será publicado. Campos obrigatórios são marcados com *