Como criar um serviço systemd personalizado no VPS imprimir

  • 0

Como criar um serviço systemd personalizado no seu VPS

Oi! Aqui é a Sensei da GeHost 🌱 Se você tem uma aplicação própria rodando no seu VPS — um bot, uma API em Node.js, um script em Python, um worker que processa filas — e está cansado de precisar entrar via SSH toda vez pra "dar um start" nela manualmente, este guia é pra você. Vamos aprender, passo a passo, a transformar essa aplicação em um serviço systemd: ele passa a iniciar sozinho com o servidor, reinicia se cair, e você consegue ver o status e os logs com comandos simples.

O que é o systemd e por que ele ajuda

O systemd é o "gerente de processos" da maioria das distribuições Linux modernas (Ubuntu, Debian, CentOS, AlmaLinux, entre outras). Ele é o responsável por ligar, desligar e monitorar os serviços do sistema — e você pode ensiná-lo a cuidar da sua aplicação também. As vantagens de fazer isso:

  • A aplicação sobe automaticamente quando o servidor reinicia;
  • Se ela travar ou cair, o systemd pode reiniciar sozinho;
  • Você ganha comandos padronizados: start, stop, restart, status;
  • Os logs ficam organizados e consultáveis com o journalctl.
Este guia parte do princípio de que você já tem acesso via SSH ao seu servidor com permissões administrativas (root ou sudo). Se tiver qualquer dúvida sobre o tipo de acesso do seu contrato, dá uma olhada no painel.gehost.com.br ou fala com o nosso suporte antes de seguir.

Pré-requisitos

  1. Acesso SSH ao servidor com permissão para usar sudo;
  2. Sua aplicação já funcionando manualmente (ex.: você consegue rodar python3 app.py ou node index.js e ela funciona);
  3. Saber o caminho completo onde os arquivos da aplicação estão salvos (ex.: /home/seuusuario/minha-app).

Passo 1 — Confirme como sua aplicação é iniciada

Antes de criar o serviço, teste manualmente o comando exato que coloca sua aplicação no ar. Por exemplo:

  • Python: /usr/bin/python3 /home/seuusuario/minha-app/app.py
  • Node.js: /usr/bin/node /home/seuusuario/minha-app/index.js

Dica: use which python3 ou which node para descobrir o caminho completo do interpretador. O systemd prefere caminhos absolutos (completos), então evite atalhos como só "python3".

Passo 2 — Crie o arquivo de unit

Todo serviço systemd é descrito por um arquivo chamado unit file, com extensão .service. Vamos criar o nosso:

  1. Conecte no servidor via SSH;
  2. Rode o comando abaixo (troque minhaapp pelo nome que quiser dar ao seu serviço):

sudo nano /etc/systemd/system/minhaapp.service

Isso vai abrir um editor de texto vazio, pronto pra receber a configuração.

Passo 3 — Preencha as seções do serviço

Cole o conteúdo abaixo, ajustando os campos em negrito pra realidade da sua aplicação:

[Unit]
Description=Minha aplicação personalizada
After=network.target

[Service]
User=seuusuario
WorkingDirectory=/home/seuusuario/minha-app
ExecStart=/usr/bin/python3 /home/seuusuario/minha-app/app.py
Restart=on-failure
RestartSec=5

[Install]
WantedBy=multi-user.target

Entendendo cada bloco:

  • [Unit] — descrição do serviço e quando ele deve iniciar (aqui, depois que a rede estiver disponível);
  • [Service] — o "coração" do arquivo: qual usuário roda o processo, em qual pasta, qual comando executar, e o que fazer se ele cair (Restart=on-failure reinicia automaticamente em caso de erro);
  • [Install] — diz ao systemd para ligar esse serviço junto com o processo normal de boot do sistema.
Dica de ouro: nunca use o usuário root em User= a menos que sua aplicação realmente precise disso. Rodar com um usuário comum é mais seguro — se algo der errado na aplicação, o estrago fica bem mais contido.

Salve o arquivo (no nano: Ctrl+O, Enter, depois Ctrl+X para sair).

Passo 4 — Recarregue o systemd e habilite o serviço

Toda vez que você cria ou edita um arquivo .service, é preciso avisar o systemd:

sudo systemctl daemon-reload

Agora, habilite o serviço para que ele suba automaticamente nos próximos reinícios do servidor:

sudo systemctl enable minhaapp

Passo 5 — Inicie e verifique se está tudo certo

  1. Inicie o serviço:
    sudo systemctl start minhaapp
  2. Confira o status:
    sudo systemctl status minhaapp
  3. Se precisar acompanhar os logs em tempo real:
    sudo journalctl -u minhaapp -f

Se o status aparecer como active (running) em verde, parabéns — sua aplicação agora é um serviço de verdade! 🎉

Comandos do dia a dia

  • Parar o serviço: sudo systemctl stop minhaapp
  • Reiniciar: sudo systemctl restart minhaapp
  • Desabilitar a inicialização automática: sudo systemctl disable minhaapp

Problemas comuns

"Failed to start" ou status "failed": quase sempre é caminho errado no ExecStart ou permissão do usuário na pasta. Rode sudo journalctl -u minhaapp -n 50 para ver as últimas 50 linhas do log e entender a causa exata do erro.
Serviço reinicia em loop: geralmente é um erro dentro da própria aplicação (ex.: porta já em uso, variável de ambiente faltando). O journalctl também ajuda a identificar isso.

Encerrando com carinho

Configurar um serviço systemd dá aquele upgrade de profissionalismo pro seu projeto: nada de esquecer de ligar a aplicação depois de uma manutenção, nada de perder o processo porque a sessão SSH caiu. Se em algum passo o terminal te der um erro, respira, lê a mensagem com calma (o systemd costuma ser bem direto) e, se travar, chama a nossa equipe pelo painel.gehost.com.br — estamos por aqui pra ajudar. 💚


Esta resposta lhe foi útil?

« Retornar