Servidor & DevOps 33 visualizações

Como configurar PM2 para reiniciar automaticamente uma aplicação Node.js após falhas

Ver no WHMCS

Como configurar o PM2 para reiniciar sua aplicação Node.js automaticamente após falhas

Olá! Aqui é a Sensei da GeHost 🧘‍♀️. Se você tem uma aplicação Node.js rodando no seu servidor e já passou pelo susto de descobrir que ela "caiu" no meio da noite e ninguém percebeu, este guia é pra você. Vamos configurar o PM2, um gerenciador de processos que cuida da sua aplicação: reinicia sozinho se ela travar, mantém tudo rodando em segundo plano e ainda te dá logs organizados para entender o que aconteceu.

Vamos com calma, passo a passo. Não precisa saber nada avançado — só seguir a receita. 💛

Antes de começar: este guia assume que você já tem acesso via terminal (SSH) ao ambiente onde sua aplicação Node.js está hospedada e que o Node.js já está instalado. Se você não tem certeza sobre isso ou sobre qual plano/recursos seu servidor possui, consulte seu contrato ou fale com o suporte pelo painel do cliente.

1. O que é o PM2 e por que usar

O PM2 é como um "zelador" para a sua aplicação Node.js. Ele fica de olho no processo e, se por qualquer motivo o app cair (erro não tratado, falta de memória, etc.), o PM2 reinicia automaticamente — sem você precisar entrar no servidor no meio da madrugada para religar nada.

  • Reinicia a aplicação sozinho em caso de falha (crash);
  • Mantém a aplicação rodando mesmo depois que você fecha o terminal;
  • Reinicia a aplicação automaticamente se o servidor for reiniciado;
  • Organiza os logs (mensagens de erro e funcionamento) em um só lugar.

2. Instalando o PM2

Com acesso ao terminal do seu servidor, rode o comando abaixo para instalar o PM2 globalmente (ou seja, disponível para qualquer aplicação):

npm install -g pm2

Depois de instalar, você pode confirmar que deu certo verificando a versão:

pm2 --version

3. Iniciando sua aplicação com o PM2

Em vez de rodar sua aplicação com node app.js, você vai deixar o PM2 cuidar disso. Navegue até a pasta do seu projeto e rode:

pm2 start app.js --name "minha-aplicacao"

Troque app.js pelo arquivo principal da sua aplicação, e "minha-aplicacao" por um nome que ajude você a identificá-la depois (útil se você tiver mais de um projeto rodando).

Dica da Sensei: se sua aplicação usa um comando de start diferente (como npm start), você também pode usar pm2 start npm --name "minha-aplicacao" -- start.

4. Configurando o reinício automático após falhas

Aqui está a boa notícia: o reinício automático em caso de crash já vem ativado por padrão assim que você inicia a aplicação com pm2 start. Ou seja, se o processo cair inesperadamente, o PM2 já tenta religar sozinho.

Mas dá pra deixar o comportamento ainda mais sob controle:

  1. Limitar tentativas de reinício (evita um "loop infinito" de falhas seguidas):
    pm2 start app.js --name "minha-aplicacao" --max-restarts 10
  2. Reiniciar automaticamente se a aplicação passar de um limite de memória (útil para evitar travamentos por consumo excessivo):
    pm2 start app.js --name "minha-aplicacao" --max-memory-restart 300M
  3. Ver o status de todas as aplicações gerenciadas pelo PM2 a qualquer momento:
    pm2 status

5. Fazendo o PM2 sobreviver a reinicializações do servidor

Até aqui, o PM2 já reinicia sua aplicação se ela travar. Mas e se o servidor inteiro reiniciar (por exemplo, após uma manutenção)? Para que sua aplicação volte a funcionar sozinha nesse caso também, siga estes dois comandos:

  1. Gere o script de inicialização automática:
    pm2 startup

    Esse comando vai mostrar na tela uma linha de comando extra para você copiar e colar (ela varia de acordo com o sistema do servidor). Copie e execute essa linha exatamente como ela aparecer.

  2. Salve a lista atual de aplicações gerenciadas pelo PM2, para que ele saiba o que religar:
    pm2 save

Pronto! A partir de agora, mesmo que o servidor seja reiniciado, o PM2 sobe junto com o sistema e coloca sua aplicação de volta no ar automaticamente.

6. Acompanhando logs e status

Sempre que quiser saber como sua aplicação está se comportando, use:

  • pm2 logs — mostra os logs em tempo real (ótimo para investigar um erro);
  • pm2 monit — abre um painel simples com uso de CPU e memória de cada aplicação;
  • pm2 list — lista todas as aplicações e o status atual (online, parada, quantas vezes reiniciou).

7. Comandos do dia a dia

Alguns comandos que você vai usar com frequência para gerenciar sua aplicação:

  • pm2 restart minha-aplicacao — reinicia manualmente;
  • pm2 stop minha-aplicacao — para a aplicação (ela não reinicia sozinha enquanto estiver parada);
  • pm2 delete minha-aplicacao — remove a aplicação da lista do PM2;
  • pm2 reload minha-aplicacao — reinicia sem deixar a aplicação fora do ar (bom para atualizações).
Dica da Sensei: depois de usar pm2 delete ou de mudar a configuração de uma aplicação, lembre-se de rodar pm2 save novamente — assim a lista salva para reinicialização automática fica atualizada.

8. Quando pedir ajuda

Se em algum passo o comando não funcionar, aparecer uma mensagem de permissão negada, ou você não tiver certeza sobre o acesso ao seu ambiente Node.js, não se preocupe — fale com o nosso suporte através do painel do cliente (painel.gehost.com.br). A equipe pode te ajudar a confirmar as configurações do seu plano e te orientar com calma. 🌱

Você chegou até aqui e agora tem uma aplicação Node.js muito mais resiliente — pronta para se recuperar sozinha das pequenas falhas do dia a dia. Um passo de cada vez! 💫

Precisa de Ajuda?

Nossa equipe está pronta para resolver suas dúvidas.