LEMP (Linux, nginx, MySQL e PHP) na DigitalOcean

Tempo de leitura: 5 minutos

LEMP DigitalOcean
LEMP DigitalOcean

LEMP (Linux, nginx, MySQL e PHP) no Linux da DigitalOcean

LEMP é a Stack mais leve para ambientes Cloud Computing.

Já vimos como aprender cloud computing com a DigitalOcean e também ja aprendemos como instalar o LAMP no Linux da DigitalOcean e agora vamos aprender como instalar o LEMP.

Como já sabem, na DigitalOcean, se você se cadastrar por este link, você ganha $ 10,00.

Além disso você já sabe que minha escolha de distribuição Linux na DigitalOcean tem sido o Ubuntu Server. Porém você pode usar este artigo para instalar o LEMP em outra distribuição Linux, porém atente-se ao seu gerenciador de pacotes (apt ou yum) e aos diretórios de instalação das ferramentas.

Inicialmente eu usava o LAMP para meu site pessoal, porém, mesmo pra um site com baixo numero de acessos, o consumo da instancia era sempre alto. Meu NewRelic não parava de alarmar. Então eu fiz a migração para LEMP e esta pilha de soluções se mostrou muito mais leve e adequada para a menor instancia da DigitalOcean, suportando inclusive, múltiplos sites.

Mãos na massa!

Como dito, o LEMP é uma pilha, stack, conjunto de soluções open source mais usado para servidores web. É uma abreviação para Linux, nginx (pronuncia-se Engine X), Mysql e PHP.

Pré requisitos?
Espero que você já tenha sua droplet, ou servidor, preparado e acessível na DigitalOcean.

Como boa pratica eu sempre atualizo os repositórios do Linux para sempre pegar a ultima versão dos softwares que instalo. Isso ajuda a estarmos com as ultimas correções, principalmente as de vulnerabilidades.

sudo apt-get update

Vamos começar a instalando o MySQL no Ubuntu Server;

sudo apt-get install mysql-server php5-mysql

Durante a instalação, seremos questionados sobre a senha do usuário root do Mysql. Defina uma, e caso queira futuramente troca-la, é simples.

Depois de instalado, vamos ativa-lo;

sudo mysql_install_db

E agora vamos iniciar o processo de instalação segura do MySQL.

sudo /usr/bin/mysql_secure_installation

Feito, nosso Mysql esta seguro.

Vamos instalar o Nginx no Ubuntu Server da DigitalOcean.

echo "deb http://ppa.launchpad.net/nginx/stable/ubuntu $(lsb_release -sc) main" | sudo tee /etc/apt/sources.list.d/nginx-stable.list
sudo apt-key adv --keyserver keyserver.ubuntu.com --recv-keys C300EE8C
sudo apt-get update
sudo apt-get install nginx

Muito bem, porém o Nginx não esta iniciado, então basta digitar o seguinte comando:

sudo service nginx start

Se você acessar o ip publico da sua instancia, será apresentado a tela de boas vindas do nginx.

nginx LEMP DigitalOcean
nginx LEMP DigitalOcean

Agora vamos fazer uns ajustes no PHP:

Abra o arquivo php.ini

sudo vim /etc/php5/fpm/php.ini

Procure pela linha cgi.fix_pathinfo=1 e altera de 1 para 0.

cgi.fix_pathinfo=0

Se mantermos 1 o interpretador irá buscar o arquivo solicitado em paths proximos ao informado, caso ele não encontre no caminho informado. Alterando para 0 garantimos que o interpretador só irá devolver arquivos com o path informado corretamente. É uma questão de segurança. Salve e feche a edição do arquivo.

A próxima alteração é no arquivo www.conf.

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

Procure pela linha listen = 127.0.0.1:9000, e altere o 127.0.0.1:9000 para

/var/run/php5-fpm.sock.

Salve e feche a edição do arquivo.

Reinicie o php-fpm:

sudo service php5-fpm restart

Depois de ajustarmos o PHP-FPM vamos ao Nginx

Abra o arquivo default do virtual host:

sudo vim /etc/nginx/sites-available/default

ATENÇÃO: Versões novas do Ubuntu Server criam um diretório chamado ‘html‘ ao invés de ‘www‘ que vinha sendo o default. Caso /usr/share/nginx/www não existir, provavelmente ele se chama html.

Deixe seu arquivo como este abaixo:

server {
 listen 80;
root /usr/share/nginx/www;
 index index.php index.html index.htm;
server_name seuendereco.com.br;
location / {
 try_files $uri $uri/ /index.html;
 }
error_page 404 /404.html;
error_page 500 502 503 504 /50x.html;
 location = /50x.html {
 root /usr/share/nginx/www;
 }
# pass the PHP scripts to FastCGI server listening on the php-fpm socket
 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;
 
 }
}

Vamos aos detalhes:

  • Adicionamos o index.php na linha de indices;
  • Altere o server_name para o nome do site, ou pelo ip;
  • Alteramos as linhas em “location ~ \.php$ {“ section, para procesar o php-fpm;

Salve e feche a edição.

Agora vamos testar!!

Crie um arquivo info.php no root do site:

sudo vim /usr/share/nginx/www/info.php

Adicione estas linhas:

<?php
phpinfo();
?>

Então salve e feche.

Por fim, reinicie o nginx:

sudo service nginx restart

Acesse novamente seu ip publico e você estar vendo uma pagina semelhante a esta:

php_info LEMP DigitalOcean
php_info LEMP DigitalOcean

Parabéns, seu LEMP está instalado no Linux da DigitalOCean.

Não se esqueça de remover o arquivo, afinal ele expõe detalhes de todo seu ambiente e alguma pessoa mal intencionada pode se aproveitar de possiveis falhas nas ferramentas listadas.

sudo rm /usr/share/nginx/www/info.php

Venha Aprender Cloud Computing com agente: Cadastre seu email e receba as novidades diretamente no seu email.

Insira o seu endereço de email abaixo para receber gratuitamente as atualizações do blog!

Fique tranquilo, seu e-mail está completamente <strong>SEGURO</strong> conosco!