Como manter uma aplicação rodando em segundo plano com PM2 ou systemd imprimir

  • 0

Como manter uma aplicação rodando em segundo plano com PM2 ou systemd

Oi! Aqui é a Sensei da GeHost 🥋 Hoje eu vou te ensinar uma coisa que separa quem só "roda um script" de quem mantém uma aplicação de verdade no ar: como fazer ela continuar rodando **sozinha**, mesmo depois que você fecha o terminal, reinicia o servidor ou dá aquele soluço de conexão.

Se você já rodou algo como node app.js ou python app.py direto no terminal e, ao fechar a janela, a aplicação simplesmente morreu — é exatamente esse problema que vamos resolver hoje. Vem comigo, passo a passo, sem pressa.

Dica da Sensei: esse guia é para quem tem acesso a um ambiente com terminal/SSH (ex.: VPS ou ambiente de aplicação). Se o seu plano é hospedagem compartilhada tradicional (cPanel), fale com o suporte pra confirmar se a sua aplicação roda nesse tipo de ambiente antes de seguir.

Por que a aplicação "morre" quando eu fecho o terminal?

Todo processo que você inicia direto no terminal fica "amarrado" àquela sessão. Quando a sessão fecha (você fecha o terminal, cai a conexão SSH, o servidor reinicia), o processo é encerrado junto. É como deixar uma lâmpada ligada numa tomada que depende do seu celular estar por perto — assim que você se afasta, ela apaga.

Para resolver isso, existem duas ferramentas queridas no mundo dos desenvolvedores: PM2 e systemd. Ambas fazem a mesma missão: manter sua aplicação viva, reiniciá-la se ela travar, e ligá-la de novo automaticamente se o servidor reiniciar.

Opção 1: PM2 (a mais simples, ótima para Node.js)

O PM2 é um "gerenciador de processos" muito popular, principalmente em aplicações Node.js. Ele é simples de instalar e usar — ótimo ponto de partida se você não tem muita intimidade com administração de servidor.

  1. Instale o PM2 globalmente (geralmente via gerenciador de pacotes do Node, como o npm):
    npm install -g pm2
  2. Inicie sua aplicação com o PM2 em vez do comando tradicional:
    pm2 start app.js --name "minha-aplicacao"
    Dar um nome (--name) ajuda muito na hora de identificar sua aplicação no meio de outras.
  3. Confirme que está rodando:
    pm2 status
    Você vai ver uma tabela com o nome da aplicação, status (online), uso de memória e quantas vezes ela reiniciou.
  4. Faça o PM2 sobreviver a um reinício do servidor — sem esse passo, se o servidor desligar e ligar de novo, o PM2 não volta sozinho:
    pm2 startup
    Esse comando vai te mostrar uma linha de comando específica pra copiar e executar (ela varia de sistema pra sistema) — copie e rode exatamente o que ele indicar.
  5. Salve a lista de aplicações atuais para o PM2 lembrar delas depois de reiniciar:
    pm2 save

Prontinho! Alguns comandos do dia a dia que vale guardar:

  • pm2 logs minha-aplicacao — para ver os logs (o que a aplicação está "dizendo") em tempo real.
  • pm2 restart minha-aplicacao — reinicia a aplicação (útil após uma atualização de código).
  • pm2 stop minha-aplicacao — para a aplicação sem removê-la da lista.
  • pm2 delete minha-aplicacao — remove de vez a aplicação do gerenciamento do PM2.

Opção 2: systemd (mais robusta, funciona para qualquer linguagem)

O systemd já vem embutido na maioria dos sistemas Linux modernos e não é exclusivo de Node.js — funciona igualmente bem com Python, Go, Java, ou o que for. É um pouquinho mais técnico de configurar, mas é extremamente confiável e é o padrão usado por muitos serviços do próprio sistema operacional.

  1. Crie um arquivo de serviço. Ele descreve pro sistema como iniciar, parar e cuidar da sua aplicação. Normalmente fica em um caminho como /etc/systemd/system/minha-aplicacao.service.
  2. Preencha o arquivo com um conteúdo parecido com este (os valores de exemplo abaixo você ajusta pra sua aplicação real):
    [Unit]
    Description=Minha Aplicação
    After=network.target

    [Service]
    ExecStart=/caminho/para/seu/comando
    WorkingDirectory=/caminho/da/aplicacao
    Restart=always
    User=seu_usuario

    [Install]
    WantedBy=multi-user.target

    O segredo aqui é o Restart=always — é ele que garante que, se a aplicação cair por qualquer motivo, o systemd sobe ela de novo automaticamente.
  3. Avise o systemd sobre o novo serviço:
    systemctl daemon-reload
  4. Habilite o serviço para iniciar sozinho quando o servidor ligar:
    systemctl enable minha-aplicacao
  5. Inicie o serviço agora:
    systemctl start minha-aplicacao
  6. Confira se está tudo certo:
    systemctl status minha-aplicacao

Comandos úteis no dia a dia com systemd:

  • systemctl restart minha-aplicacao — reinicia o serviço.
  • systemctl stop minha-aplicacao — para o serviço.
  • journalctl -u minha-aplicacao -f — acompanha os logs da aplicação em tempo real.

PM2 ou systemd — qual eu escolho?

  • PM2: mais simples de configurar, comandos amigáveis, ótimo se sua aplicação é Node.js e você quer algo rápido de colocar no ar.
  • systemd: mais "de sistema", funciona com qualquer linguagem, é o que já roda por trás de muitos serviços do próprio servidor — vale a pena se você já tem alguma familiaridade com administração Linux ou quer um padrão mais robusto.

Não existe errado aqui — os dois cumprem muito bem o papel de manter sua aplicação de pé. O importante é escolher um e configurar direitinho, seguindo os passos acima com calma.

Dica da Sensei: depois de configurar (seja PM2 ou systemd), sempre teste reiniciando o servidor (ou simulando uma queda da aplicação) pra confirmar que ela realmente volta sozinha. Não deixe pra descobrir que algo não ficou certo só quando o servidor cair de verdade.

Precisa de uma mãozinha?

Se você tentou os passos acima e travou em algum ponto, ou não tem certeza se o seu tipo de plano na GeHost comporta esse tipo de configuração, é só chamar a gente no painel.gehost.com.br — lembrando que todo serviço entregue já vem com suporte gratuito por 30 dias após a entrega. A gente fica feliz em ajudar! 💙


Esta resposta lhe foi útil?

« Retornar