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:
RaspBerry PI 2 Modelo B
CPU: 900MHz quad-core ARM Cortex-A7
RAM: 1GB
SD: 32GB
Software:
Sistema Operacional: Raspbian
[Porte do Debian wheezy para CPU ARM]
Web-Server: Nginx
[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
[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.
1. Instalando/Configurando o nginx e PHP-fpm
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.
Instalando:
apt-get install nginx php5-fpm php5-cli
Note que também estou instalando o php5-cli, assim é possível executar scripts PHP diretamente no shell.
Configurando:
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.
Dentro do arquivo encontramos a tag server {...}, dentro dela é que devemos colocar as configurações.
Abaixo uma configuração minimalista de um host:
server {
listen 80;
listen meusite.com:80;
server_name meusite.com;
#Diretório root do site, o mesmo DOCUMENT_ROOT do Apache
root /usr/share/nginx/www/meusite.com;
index index.html index.htm index.php;
#Configuração para utilizar o PHP-fpm, onde o nginx envia os arquivos .php para o PHP-fpm.
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;
}
}
Mais opções estão disponíveis neste web server, porem, minhas necessidades não requerem configurações mais elaboradas.
2. Instalando Mysql
A instalação do mysql é bastante simples, o único detalhe solicitado pelo instalador é senha root do mysql.
Instalação:
apt-get install php5-mysql mysql-server php5-sqlite php5-odbc
Com isso terminamos a instalação dos pacotes.
Para finalizar precisamos reiniciar os servidos, execute:
/etc/init.d/mysql stop; /etc/init.d/mysql start
/etc/init.d/nginx stop; /etc/init.d/nginx start
/etc/init.d/php5-fpm stop; /etc/init.d/php5-fpm start
Para muitos o ultimo comando pode ser um pouco estranho, mas uma das características o php5-fpm é ser executado como um daemon
E finalmente testamos as configurações, abra seu navegador favorito e acesso o endereço do seu servidor.
http://ip_do_servidor/
Lembre de colocar um arquivo index.php dento do diretório root do site.
Exemplo de index.php
echo 'Teste do Web Server NGINX com PHP-pfm';
?>
Ou utilizando a função phpinfo:
phpinfo();
?>
Referencias:
http://www.raspberrypi.org
https://www.raspbian.org/
https://www.raspberrypi.org/downloads/raspbian/
http://nginx.org/en/
http://php.net/manual/pt_BR/install.fpm.php
https://www.mysql.com/
http://php.net/manual/pt_BR/book.sqlite.php
https://www.sqlite.org/about.html