Minha aplicação NodeJS está pronta! E agora?

0

Fala galera, meu primeiro post aqui no codigosimples.net e gostaria de falar com vocês sobre o deploy de aplicações NodeJS. Mais especificamente sites que utilizam esse poderoso framework.

Tudo muito bom, tudo muito bem, mas chegamos num ponto onde precisamos colocar nossa aplicação pra rodar fora de nosso ambiente de desenvolvimento, e hoje vou compartilhar com vocês o que eu tenho feito nesses últimos anos em que me dediquei a tecnologias open source.

Minha intenção não é mostrar o desenvolvimento ou arquitetura de uma aplicação desenvolvida em NodeJS, mas sim demonstrar como disponibilizar uma aplicação dentro de um servidor web. Para isso explicarei algumas tecnologias envolvidas e farei um passo-a-passo para o deploy.

Para isso utilizaremos o seguinte:

  • Linux Ubuntu 16
  • NGINX como servidor web
  • NodeJS
  • Forever

NGINX

Como descrito em seu site (http://www.nginx.com), o NGINX é um servidor web e proxy reverso, free, open-source e de alta performance. Pode ser usado como servidor de e-mail e é facilmente escalável e configurável. Nos últimos anos ele tem se tornado uma ótima alternativa ao tradicional servidor Apache, que na minha opinião requer muito conhecimento para uma configuração confiável. Veremos o quanto é simples configurar o NGINX para passar a responder requisições, trabalhando muito bem em conjunto com o NodeJS.

Primeiramente teremos que instalá-lo em nosso servidor Linux:

apt-get update
apt-get install nginx

 

Após a instalação iniciaremos a configuração do nosso site:

nano /etc/nginx/nginx.conf

 

Não entrarei em todos os detalhes da configuração do NGINX, vou diretamente ao ponto da criação da configuração de nossa aplicação. Localize a seguinte linha no arquivo de configuração:

include /etc/nginx/sites-enabled/*;

 

Insira o seguinte bloco de código imediatamente abaixo da linha acima. Vou detalhar cada linha desse bloco:

server {
    listen 80;
    server_name seudominio.com.br;

    location / {
        proxy_pass http://127.0.0.1:8000;
    }

    location /static {
        root /caminho_para_a_pasta_da_aplicacao/public;
    }
}

 

Na linha 1 abrimos o bloco de configuração chamado server.

Na linha 2 informamos a porta a ser utilizada para nossa aplicação.

Na linha 3 definimos o nome do host que será utilizado para identificar nossa aplicação quando solicitada no NGINX.

Na linha 5 configuramos o nosso proxy reverso apontando para o localhost do servidor e a porta onde nossa aplicação NodeJS responderá.

Na linha 9 configuramos o caminho para a pasta de conteúdo estático da aplicação. Essa pasta geralmente coloco os arquivos CSS, JavaScript, Imagens, etc.

Após isso podemos testar a configuração do NGINX para verificar erros que impossibilitarão a execução do mesmo. Para isso digite o seguinte comando:

nginx -t

Se estiver tudo certo com o arquivo de confguração, será retornado o seguinte:

nginx: the configuration file /etc/nginx/nginx.conf syntax is ok
nginx: configuration file /etc/nginx/nginx.conf test is successful

 

Agora podemos reiniciar o nosso servidor NGINX para que as alterações feitas no arquivo tenham efeito:

service nginx restart

 

Instalando o NodeJS

Com nosso NGINX configurado e funcionando, vamos instalar o NodeJS

curl -sL https://deb.nodesource.com/setup_6.x | sudo -E bash -
sudo apt-get update
sudo apt-get install -y nodejs

 

Para verificarmos a versão do NodeJS instalada executamos o seguinte comando:

node -v

Pronto, NodeJS instalado com sucesso!

 

Instalando o NPM

O NPM é um gerenciador de pacotes JavaScript, para mais informações visite https://www.npmjs.com/ . Ele será necessário para obter o pacote Forever que instalaremos mais a frente.

Para instalar o NPM executamos o seguinte comando:

apt-get install -y npm

 

Verificando a versão instalada:

npm -v

 

Feito, NPM instalado!

Instalando o Forever

O Forever (https://www.npmjs.com/package/forever) é uma ferramenta bem simples que permite executar scripts continuamente.

Para instalar:

npm install forever -g

 

O parâmetro -g garante que o Forever ficará disponível globalmente em nosso servidor.

Existem vários parâmetros disponíveis no Forever, vamos focar em apenas quatro deles: start, restart, stop e list.

Com o start iniciamos a execução de um script, que em nosso caso será nossa aplicação. Vejamos como é simples:

forever start /caminho_da_sua_aplicacao/arquivo_inicial.js

 

Onde arquivo_inicial.js é o arquivo que contém a sua aplicação.

Como retorno desse comando o Forever nos indicará o arquivo de log. Nesse arquivo serão gravados todos logs que sua aplicação emitir durante o ciclo de vida. Isso ajudará muito no caso de exceções ou paradas inesperadas.

Por default o Forever reinicia a aplicação automaticamente no caso de alguma exceção não tratada acontecer. Isso ajuda a manter sua aplicação no ar se algo que você não esperava acontecer. Por isso é sempre importante a revisão do arquivo de log do Forever.

Para listar todas as aplicações que estão rodando através do Forever executamos o seguinte comando:

forever list

 

Veja que temos um retorno de todas as aplicações iniciadas e um id como de um array. Para executar operações de stop e restart utilizaremos esse id.

Reiniciando uma aplicação:

forever restart 0

 

Parando uma aplicação:

forever stop 0

 

Conclusão

Com a aplicação rodando no Forever podemos acessar o domínio configurado no NGINX e ver a aplicação rodando no browser.

Lembrando que o Forever não aceita somente aplicações web, você pode ter um script que faça qualquer tipo de trabalho rodando continuamente, por exemplo, um robô que trabalhe automatizando alguma tarefa.

É isso, espero que tenham gostado e que seja útil! Até a próxima pessoal!

Compartilhe.

Sobre o autor

Formado em Engenharia da Computação, entusiasta de tecnologias open-source, bigdata e NoSQL. MongoDB Ambassador / Evangelist, Top 50 Certificado em Neo4j, utiliza MongoDB e SQL Server criando aplicações em NodeJS há 3 anos. CTO / Co-owner da Cluster Consultoria, uma empresa especializada em bancos de dados NoSQL