RaspBerry PI2 como WebServer  - LEMP
Autor: Artur Gomes | Publicado: 2015-09-29T14:41:00-03:00




Todos já ouvimos falar sobre a combinação LAMP[ Linux, Apache, mysql e PHP], eu mesmo utilizo o famoso "combo" em diversos servidores de produção sem maiores problemas, claro, conto com máquinas bem dimensionadas para tarefa, mas em hardware mais modestos como o caso do pequeno, mas valente RaspBerry, precisamos otimizar ao máximo os recursos disponíveis.



Com o objetivo de criar um servidor Web com meu RaspBarry, para "estudos acadêmicos", então fui perguntar para meu amigo[google] o que ele recomendaria no lugar do combo LAMP, para minha surpresa a resposta foi: LEMP [Linux, NGINX, mysql e PHP]. O "E" da sigla vem da pronuncia de nginx, que se pronuncia `Engine x`. Os mais céticos provavelmente reclame do Mysql, bom no lugar poderemos utilizar o sqlight.



Então sem mais rodeios, vamos a descrição da solução encontrada:



Hardware:

&nbsp;&nbsp;&nbsp; RaspBerry PI 2 Modelo B

&nbsp;&nbsp;&nbsp; CPU: 900MHz quad-core ARM Cortex-A7

&nbsp;&nbsp;&nbsp; RAM: 1GB

&nbsp;&nbsp;&nbsp; SD: 32GB





Software:

&nbsp;&nbsp;&nbsp; Sistema Operacional: Raspbian

&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; [Porte do Debian wheezy para CPU ARM]



Web-Server: Nginx

&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; [O Nginx é um servidor Web, proxy reverso, proxy balanceador de carga, e faz praticamente tudo que o Apache faz, só que muito mais rápido!]



PHP: PHP5-fpm

&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; [FPM (FastCGI Process Manager) é uma alternativa para a implementação PHP FastCGI com alguns recursos adicionais, principalmente usado em sites pesados. A decisão de utilizar o FPM no lugar da implementação tradicional do PHP é meramente acadêmica.]



DB-Server: Mysql

Implementação:

Para instalar os software foi utilizado os pacotes pré compilados distribuídos juntamente com o Raspbian via apt-get, para os mais puritanos, pode baixar e compilar os software sem problemas, só não esqueça de instalar os compiladores.

&nbsp;&nbsp;&nbsp; 1. Instalando/Configurando o nginx e PHP-fpm
&nbsp;&nbsp;&nbsp; 
&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; Uma das grandes vantagens do nginx e sua fácil configuração, vou demonstrar como instalar e configurar o nginx para utilizar o php-fpm.

&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; Instalando:
&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; apt-get install nginx php5-fpm php5-cli
&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; 
&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; Note que também estou instalando o php5-cli, assim é possível executar scripts PHP diretamente no shell.

Configurando:&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; 
&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; O arquivo de configuração do Server nginx está em /etc/nginx/nginx.conf, este arquivo é o responsável pelo comportamento do servidor Web Nginx, já o arquivo que contém a configurações do site esta em /etc/nginx/sites-available/default, seguindo o padrão do Debian.
&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; 
&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; Dentro do arquivo encontramos a tag server {...}, dentro dela é que devemos colocar as configurações.
&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; 
&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; Abaixo uma configuração minimalista de um host:
&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; 
&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; server {
&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; listen 80;
&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; listen meusite.com:80;
&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; server_name meusite.com;
&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; #Diretório root do site, o mesmo DOCUMENT_ROOT do Apache
&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; root /usr/share/nginx/www/meusite.com;
&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; index index.html index.htm index.php;

&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; #Configuração para utilizar o PHP-fpm, onde o nginx envia os arquivos .php para o PHP-fpm. 
&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; location ~ .php$ {
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; try_files $uri =404;
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; fastcgi_pass unix:/var/run/php5-fpm.sock;
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; fastcgi_index index.php;
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; include fastcgi_params;
&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; }
&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; }

&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; Mais opções estão disponíveis neste web server, porem, minhas necessidades não requerem configurações mais elaboradas.
&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; 
2. Instalando Mysql
&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; 
&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; A instalação do mysql é bastante simples, o único detalhe solicitado pelo instalador é senha root do mysql.

Instalação:
&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; apt-get install php5-mysql mysql-server php5-sqlite php5-odbc
&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; 
&nbsp;&nbsp;&nbsp; Com isso terminamos a instalação dos pacotes.
&nbsp;&nbsp;&nbsp; 
&nbsp;&nbsp;&nbsp; Para finalizar precisamos reiniciar os servidos, execute:
&nbsp;&nbsp;&nbsp; 
&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; /etc/init.d/mysql stop; /etc/init.d/mysql start
&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; /etc/init.d/nginx stop; /etc/init.d/nginx start
&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; /etc/init.d/php5-fpm stop;&nbsp; /etc/init.d/php5-fpm start
&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; 
&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; Para muitos o ultimo comando pode ser um pouco estranho, mas uma das características o php5-fpm é ser executado como um daemon
&nbsp;&nbsp;&nbsp; 
&nbsp;&nbsp;&nbsp; E finalmente testamos as configurações, abra seu navegador favorito e acesso o endereço do seu servidor.
&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; http://ip_do_servidor/
&nbsp;&nbsp;&nbsp; 
&nbsp;&nbsp;&nbsp; Lembre de colocar um arquivo index.php dento do diretório root do site.
&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; Exemplo de index.php&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; 
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &nbsp;&nbsp; &nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; echo 'Teste do Web Server NGINX com PHP-pfm';
&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; ?&gt;
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;&nbsp; Ou utilizando a função phpinfo:
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; phpinfo();
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; ?&gt; 

&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; 
&nbsp;&nbsp;&nbsp; Referencias:
&nbsp;&nbsp;&nbsp; http://www.raspberrypi.org
&nbsp;&nbsp;&nbsp; https://www.raspbian.org/
&nbsp;&nbsp;&nbsp; https://www.raspberrypi.org/downloads/raspbian/
&nbsp;&nbsp;&nbsp; http://nginx.org/en/
&nbsp;&nbsp;&nbsp; http://php.net/manual/pt_BR/install.fpm.php
&nbsp;&nbsp;&nbsp; https://www.mysql.com/
&nbsp;&nbsp;&nbsp; http://php.net/manual/pt_BR/book.sqlite.php
&nbsp;&nbsp;&nbsp; https://www.sqlite.org/about.html