15 dez 2015

Gerenciando aplicações NodeJS com PM2

Sou um adepto de NodeJS, e a facilidade de utilizar o JavaScript me levaram a buscar alternativas para criar serviços REST, então resolvi estudar com mais afinco alguns WebServers baseados em NodeJS. Foi aí, que me deparei com hapi (http://hapijs.com), um framework bem robusto e estável, e hoje utilizado por muitas empresas grandes.

Mas como torná-lo um serviço ativo em meu servidor? Encontrei um módulo do NodeJS chamado PM2 (https://github.com/Unitech/pm2). É um gerenciador de processos em NodeJS com Load-Balancer.
Hoje ele possui versão estável para Mac OS X e Linux, e está em fase beta para Windows.

Bom, sem mais apresentações, vou fazer um exemplo básico usando o PM2 com um WebServer hapi.

Primeiro fazemos a instalação dos módulos utilizando o npm:

npm install hapi –save

Criamos um servidor e adicionamos as rotas:

var Hapi = require(‘hapi’);

var server = new Hapi.Server();
server.connection({ port: 3000 });
server.route({
method: ‘GET’,
path: ‘/’,
handler: function (request, reply) {
reply.file(‘./public/index.html’);
}
});

server.route({
method: ‘GET’,
path: ‘/{name}’,
handler: function (request, reply) {
reply(‘Hello, ‘ + encodeURIComponent(request.params.name) + ‘!’);
}
});

server.start(function () {
console.log(‘Server running at:’, server.info.uri);
});

Salve na pasta raíz do projeto com o nome de hapiws.js

O PM2 é bem simples de se utilizar, com poucos passos, já conseguimos gerenciar alguma aplicação. Vamos instalar o PM2 através do npm e deixá-lo global. (Utilizando o Mac OS X como exemplo):

npm install pm2 -g

Após a instalação, acessamos a pasta do nosso projeto via terminal e utilizamos o comando:

pm2 start hapiws.js

O PM2 vai utilizar o nome do seu arquivo JavaScript como nome da sua aplicação.
Vai ser exibido algo como o exemplo abaixo:

Captura de Tela 2015-12-15 às 09.04.50

Essa tabela mostra qual processo nosso está Online, seu Uptime, Memória utilizada.

Para listar os processos, utilize o comando:

pm2 list

Ou para verificar as informações de um App específico:

pm2 show [nome do app]

Com isso, conseguimos manter nosso gerenciador de processos ativo, mas e se o nosso servidor for reiniciado? Tenho que fazer tudo isso novamente?

Utilizando o comando pm2 startup [sistema operacional], ele vai gerar um script e um comando para execução, como no seguinte exemplo, utilizando Mac OS X:

Captura de Tela 2015-12-15 às 09.18.49

Após executar o comando, toda vez que o servidor reiniciar, o PM2 irá subir os servidores que você configurou.

Você pode matar processos utilizando pm2 stop all ou pm2 stop [id do app], e reiniciar com pm2 restart all.

Nas próximas postagens, vou abordar sobre alguns módulos para o PM2 e como utilizar o Load-Balancer e o Cluster Mode.

Espero que tenham gostado, e até a próxima!

 

CTA-ebook-transformação-digital

Comments

  • andrelugomes
    dezembro 15, 2015 Responder

    que massa

Leave a Comment