🔧 Como Criar um Serviço Systemd para Iniciar sua Aplicação Automaticamente no Linux


Se você tem uma aplicação que precisa ser iniciada manualmente sempre que o servidor é ligado ou reiniciado, saiba que o systemd pode automatizar esse processo de forma simples e eficiente.

Neste guia, você vai aprender como criar um serviço que roda automaticamente sua aplicação ao iniciar o sistema.


📦 Cenário

Vamos imaginar que você tem um binário ou script executável da sua aplicação em um diretório, e para iniciar essa aplicação você normalmente roda um comando como este:

VARIAVEL_DE_EXEMPLO="valor" ./minha-aplicacao

Essa aplicação está localizada em:

/home/usuario/projetos/minha-aplicacao

Nosso objetivo é fazer com que ela seja iniciada automaticamente sempre que o servidor for ligado ou reiniciado.

🛠️ Passo a Passo

1. Crie um arquivo de serviço systemd

Execute no terminal:

sudo nano /etc/systemd/system/minha-aplicacao.service

Adicione o seguinte conteúdo:

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

[Service]
WorkingDirectory=/home/usuario/projetos/minha-aplicacao
ExecStart=/bin/bash -c 'VARIAVEL_DE_EXEMPLO="valor" ./minha-aplicacao'
Restart=always
RestartSec=10
User=usuario
Environment=AMBIENTE=producao

[Install]
WantedBy=multi-user.target

🔍 Entendendo Cada Linha

Seção / Linha Função
[Unit] Define quando o serviço será iniciado. After=network.target garante que a rede esteja disponível.
Description Nome amigável do serviço.
[Service] Configurações da aplicação.
WorkingDirectory Diretório onde a aplicação está localizada.
ExecStart Comando que será executado para iniciar a aplicação.
Restart Reinicia o serviço automaticamente se ele falhar.
RestartSec Tempo de espera entre tentativas de reinício.
User Usuário do sistema que executará o serviço (recomenda-se não usar root).
Environment Variáveis de ambiente extras, se necessárias.
[Install] Define que o serviço será iniciado automaticamente no boot do sistema.

🚀 Ativando o Serviço

Depois de salvar o arquivo, execute os seguintes comandos:

#Recarrega a lista de serviços
sudo systemctl daemon-reload

#Habilita o serviço para iniciar no boot
sudo systemctl enable minha-aplicacao]

#Inicia o serviço manualmente para testar
sudo systemctl start minha-aplicacao

✅ Verificando o Funcionamento

Para verificar se o serviço está ativo:

sudo systemctl status minha-aplicacao

Para acompanhar os logs em tempo real:

journalctl -u minha-aplicacao -f

🔐 Dicas e Boas Práticas

  • O caminho no WorkingDirectory e no ExecStart deve ser absoluto (não use ~).
  • O arquivo ou script da aplicação precisa ter permissão de execução:
    chmod +x ./minha-aplicacao
  • Evite usar o usuário root no serviço. Sempre que possível, use um usuário comum com permissões mínimas necessárias.

✨ Conclusão

Utilizar o systemd para automatizar a execução da sua aplicação traz mais estabilidade e reduz a necessidade de intervenções manuais. É uma prática essencial para quem administra servidores Linux com aplicações críticas.

:P

Subscribe to Blog NH

Don’t miss out on the latest issues. Sign up now to get access to the library of members-only issues.
jamie@example.com
Subscribe