NGINX + PHP 7.2 + ElasticSearch no Ubuntu Server 18.04.2 LTS

Introdução

Eu seu o tipo de programador que só namora o Linux: minha máquina para desenvolvimento é Windows e, sinceramente, esse cenário só é assim porque ainda não consegui fazer nenhuma distribuição linux rodar satisfatoriamente usando vídeo híbrido (Intel Graphics + GeForce 840M).

Mas também sou fã de RPi e Linux e pretendo, agora, criar um ambiente que simule a maioria dos servidores web com os quais trabalho.

Atualmente meu servidor no Windows usa PHP 7.2 + Apache + MySQL. Pretendo mudar. Vou criar um servidor usando o VirtualBox, instalar o Ubuntu Server 18.04.2 LTS e, nele, meu novo servidor.

Não vou tratar aqui sobre como instalar uma máquina virtual pois foge do propósito do post.

NGINX?

Ele é um servidor web Russo que nasceu em 2002 e tem crescido bastante por ser mais eficiente na hora de responder requisições simultâneas. Existem vários testes de performance na web (esse aqui é um deles) que, no final das contas, mostram que o o NGINX consegue fazer mais que o Apache usando menos recursos do sistema.
Isso, no RPi, faz bastante diferença.

Instalando

É mole: instale via APT: sudo apt install nginx.

Checando se deu certo

Acesse o endereço IP do seu servidor através do navegador de sua preferência. Se a mensagem abaixo aparecer...
... então tá tudo certo. Sinceramente acho muito difícil isso dar errado. Se quiser dar uma conferida na versão, execute nginx -v no terminal. A versão aqui é 1.14.0.

E o PHP?

No caso do PHP, a versão disponível nos repositórios do servidor é a 7.2, que pode ser instalado com sudo apt install php7.2-fpm.

É importante mencionar aqui que o NGINX encara o PHP de forma diferente: enquanto o Apache usa o mod_php pra fazer o bichão funcionar, no NGINX a coisa muda para a versão FastCGI do PHP, por isso a instalação do pacote "fpm".

Além disso, suas preferências sobre bibliotecas extras podem variar (php-gd, php-mysql, etc.). O exemplo aqui é deixar o NGINX + PHP 7.2 rodando e, nesse caso, instalar o pacote php7.2-fpm é suficiente.

Fazendo funcionar

Agora é hora de fazer o PHP rodar através do NGINX.
1) Edite o arquivo sudo nano /etc/nginx/sites-available/default e retire o comentário das linhas que começa com "location ~ \.php$", e termina com };, exceto a linha fastcgi_pass 127.0.0.1:9000; já que vamos usar o socket fpm.
2) Ainda nesse arquivo, adicione index.php na lista de arquivos de índice (logo depois de index e antes de index.html). Salve e feche o arquivo;
3) Crie um arquivo de teste na raiz do site com nano /raiz/do/site.com/index.php e coloque <?php phpinfo(); como conteúdo;
4) Reinicie o NGINX com sudo systemctl restart nginx.service.

Então acesse novamente o seu servidor e...


... que beleza!

Agora o ElasticSearch

O ES requer o java 1.8, então vamos começar instalando ele com sudo apt install openjdk-8-jdk.

Mas não é só isso. Execute no terminal o comando echo $JAVA_HOME. Se nada apareceu, então você precisa configurar o caminho para o diretório inicial do java. Você pode fazer isso com sudo nano /etc/environment. No editor, informa o caminho no formato JAVA_HOME=/caminho/java. Salve. Atualize o ambiente com source /etc/environment.

Com o java instalado e configurado, chegou a hora de instalar o ElasticSearch.

Antes de tudo, registre o GPG-KEY com...

wget -qO - https://artifacts.elastic.co/GPG-KEY-elasticsearch | sudo apt-key add -

... adicione o repositório do ES...

echo "deb https://artifacts.elastic.co/packages/6.x/apt stable main" | sudo tee -a /etc/apt/sources.list.d/elastic-6.x.list
... e use sudo apt updatesudo apt install elasticsearch para instalar a última versão disponível.

Quando terminar, registre o serviço com sudo systemctl enable elasticsearch.service e, em seguida, inicie-o com sudo systemctl enable elasticsearch.service.

Confira se está tudo certo usando sudo systemctl status elasticsearch.service.


Até aqui é provável que tudo tenha dado muito certo, mas você quer ter certeza, imagino. Use curl -XGET localhost:9200 e receba.


Esse JSON recebido é tudo que você precisa para ter certeza de que tudo vai bem.

Conclusão

Agora você tem tudo que precisa para usar o NGINX + PHP 7.2 e o ElasticSearch, mas isso não é tudo. Em uma nova postagem vamos descobrir como usar o ElasticSearch como banco de dados para criar documentos, inserir, alterar e remover informações e, finalmente, localizar conteúdo na velocidade do som.

Observações

Tentei fazer o mesmo procedimento no RPi, mas o meu modelo atual é aquele B+ lançado no aniversário de 15 anos da minha avó, com memória de . Vou tentar agilizar um RPi 3 e tentar novamente no futuro, aí atualizo esse post aqui com minhas aventuras.

Comentários

Postagens mais visitadas deste blog

Tá na hora de piscar LEDs de maneira melhorada

LEDs on/off com PHP, Python e RPi

PagSeguro e PHP - Usando a tela do PagSeguro (checkout redirect)