Pra facilitar, vou sublinhar as linhas que vocês devem alterar.
[Unit]
Description=Hubot
Requires=network.target
After=network.target
[Service]
Type=simple
WorkingDirectory=/home/butis/hubot
User=sobutis
Restart=always
RestartSec=10
EnvironmentFile=/etc/hubot/variaveis.conf
ExecStart=/home/butis/hubot/bin/hubot -a rocketchat
[Install]
WantedBy=multi-user.target
Eu acho que o conteúdo é bastante explicativo, mas, vamos explicar assim mesmo. Nesse exemplo, vamos criar um usuário que executará o hubot.
1. Precisamos criar um usuário pra rodar esse serviço, por questões de segurança.
adduser hubot
Nós não vamos definir o shell dele como /bin/false, porque é um script, ou seja, ele precisa do bash/ksh/sh para executar os comandos.
2. Coloque o script no diretório do usuário criado - isso é meio que lógico né?
3. Crie o arquivo hubot.service dentro de /etc/systemd/system. Repare: {nome do serviço}.service. Pegou o padrão? Ok!
O Conteúdo é esse daí de cima. Vamos comentar linha a linha pra entendermos.
[Unit]
Description=Hubot
Descrição do serviço
Requires=network.target
Dependências. O seu serviço depende de algum outro?
After=network.target
Ordem de execução. O serviço só será iniciado após o outro definido estar rodando.
[Service]
Type=simple
WorkingDirectory=/home/butis/hubot
Diretório de execução do seu serviço.
User=sobutis
Restart=always
RestartSec=10
Caso o serviço não inicie, ele tentará reiniciar de acordo com o estabelecido nas regras de Restart.
EnvironmentFile=/etc/hubot/variaveis.conf
Como meu script possui várias variáveis, eu preferi carregá-las em um arquivo separado. Defina suas variáveis nele.
ExecStart=/home/butis/hubot/bin/hubot -a rocketchat
Comando de execução do script. Coloque o path inteiro.
[Install]
WantedBy=multi-user.target
Terminado o arquivo, execute um reload nas confs do systemd:
systemctl daemon-reload
E inicie o serviço
systemctl start hubot
Podemos deixar que ele inicie junto com os outros serviços:
systemctl enable hubot
Prontinho. Com esse modelo vocês já podem colocar qualquer script pra rodar como serviço sem dor de cabeça. Como informação adicional, recomendo a leitura de um documento da Red Hat, muito bem explicado por sinal:
https://access.redhat.com/documentation/en-US/Red_Hat_Enterprise_Linux/7/html/System_Administrators_Guide/sect-Managing_Services_with_systemd-Unit_Files.html
E um guia pra quem ainda tem medo do systemd
E isso aí. Abraços!
0 comentários:
Postar um comentário
Só não vale xingar a mãe ou puxar cabelo nos comentários =)