O PM2 é um gerenciador de processos, que irá lhe ajudar à gerenciar e manter sua aplicação sempre online.
Largamente utilizado para o gerenciamento de aplicações Node.js, para o qual possui inclusive, um controle mais apurado, como por exemplo o gerenciamento e a execução da aplicação em modo cluster.
No entanto, ele pode ser utilizado também para gerenciar de uma forma mais simples, aplicações escritas em outras linguagens, seja interpretadas ou compiladas, como Python e GO, por exemplo.
Instalando o PM2
Primeiramente, você deve instalar o PM2 de forma global, através do comando:
npm install pm2@latest -g
Registrando e/ou iniciando um processo com o PM2
Com o PM2 instalado, vamos partir para a execução do seu processo.
De forma semelhante à qual você rodaria a sua aplicação, seja com um “npm start” ou através da execução direta do seu script de entrada, normalmente index.js.
O PM2 também possui um comando “start” e este serve tanto para registrar, quanto para iniciar um processo que já tenha sido “registrado” no PM2 anteriormente.
Em nosso exemplo, o script inicial da aplicação, será o entrypoint.js.
Logo, para executar a aplicação, deve-se executar o comando:
pm2 start entrypoint.js
Definindo um nome para a aplicação
É possível definir um nome para o processo, passando o parâmetro “–name NOME”, onde NOME é o nome à ser dado para a aplicação.
Em nosso exemplo, vamos nomear nossa aplicação como “API”:
pm2 start entrypoint.js --name API
Neste caso, todos os comandos subsequentes poderão ser executados usando o nome da aplicação, devendo-se substituir “entrypoint.js” por “API”.
Exemplo:
pm2 start API
Mas não se esqueça, a primeira execução deverá ser completa, como por exemplo:
pm2 start entrypoint.js --name API
Recarregar ao atualizar
Se você desejar que a aplicação seja recarregada, sempre que houver uma atualização do seu conteúdo (hot reload), de forma semelhante ao que o nodemon faz, então você deverá roda-la com o parâmetro “–watch”.
Exemplo:
pm2 start entrypoint.js --name API --watch
Reiniciando um processo
Se você não deseja utilizar o parâmetro “–watch” e deseja controlar quando e como reiniciar sua aplicação, você poderá utilizar o comando “restart”.
pm2 restart API
Parando um processo
Se você desejar parar a execução da sua aplicação momentaneamente, você deverá utilizar o comando “stop”.
pm2 stop API
Deletar um processo
Quando não houver mais a necessidade de rodar um determinado processo, você poderá efetuar a deleção do mesmo, com o comando “delete”.
pm2 delete API
Salvando as configurações
Sempre que uma configuração for efetuada e um determinado estado precisar ser salvo, você deverá definir isto explicitamente, executando o comando “save”:
pm2 save
Rodando este comando, a lista de processos à serem inicializados ou não pelo PM2 será salva e consequentemente será “recuperada”, no caso da reinicialização do sistema operacional ou outra circunstância.
Habilitando a inicialização do PM2 como um serviço
Com relação à inicialização do PM2 junto à inicialização do sistema operacional, é importante notar que você deverá habilitar este recurso, executando o comando:
pm2 startup
Monitorando os processos com o PM2
Basicamente, existem 2 comandos que irão lhe apresentar o status das aplicações, bem como lhe ajudarão à monitorar a execução das mesmas.
São eles:
pm2 status
pm2 monit
Rode e explore estes comandos à vontade.