🔧 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
WorkingDirectorye noExecStartdeve 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
rootno 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