|
Python - Linux: Como Criar um Serviço Systemd para Script em Ambiente Virtual | |
| @CanalQb | ||
Introdução
Se você desenvolveu um script Python e deseja que ele rode como um serviço no Linux, especialmente dentro de um ambiente virtual (venv), o Systemd é a ferramenta ideal para isso. Neste tutorial, vamos mostrar como criar um arquivo de serviço Systemd que inicialize seu script Python automaticamente, garantindo que ele seja executado com o ambiente virtual ativado.
Passo a passo para criar o serviço Systemd
1. Criar o arquivo do serviço
Para criar um serviço Systemd, você precisa criar um arquivo com extensão .service dentro do diretório /etc/systemd/system/. Por exemplo, crie o arquivo meuscript.service com o seguinte comando:
sudo nano /etc/systemd/system/meuscript.service
2. Configurar o arquivo do serviço
Insira o conteúdo abaixo no arquivo. Substitua os caminhos pelo local correto do seu ambiente virtual e script Python:
[Unit]
Description=Meu script Python
After=multi-user.target
[Service]
Type=simple
Restart=always
Environment="VIRTUAL_ENV=/caminho/para/venv"
WorkingDirectory=/caminho/para/meu
User=root
ExecStart=/bin/bash -c "source $VIRTUAL_ENV/bin/activate && /caminho/para/venv/bin/python /caminho/para/meu/script.py"
[Install]
WantedBy=multi-user.target
3. Ativar e iniciar o serviço
Após salvar o arquivo, execute os comandos abaixo para recarregar o Systemd, iniciar o serviço e verificar seu status:
sudo systemctl daemon-reload
sudo systemctl start meuscript
sudo systemctl status meuscript
Você pode parar, reiniciar e habilitar o serviço para iniciar automaticamente com:
sudo systemctl stop meuscript
sudo systemctl restart meuscript
sudo systemctl enable meuscript
Exemplo avançado: Passando variáveis de ambiente para o script
Se o seu script Python necessita de variáveis externas, você pode defini-las no arquivo de serviço e passá-las como argumentos. Veja o exemplo abaixo com duas variáveis:
[Unit]
Description=Meu script Python
After=multi-user.target
[Service]
Type=simple
Restart=always
Environment="VIRTUAL_ENV=/caminho/para/venv"
Environment="VARIAVEL1=valor1"
Environment="VARIAVEL2=valor2"
WorkingDirectory=/caminho/para/meu
User=root
ExecStart=/bin/bash -c "source $VIRTUAL_ENV/bin/activate && /caminho/para/venv/bin/python /caminho/para/meu/script.py $VARIAVEL1 $VARIAVEL2"
[Install]
WantedBy=multi-user.target
Você pode adicionar quantas variáveis quiser, definindo novas linhas Environment="NOME=valor" e adicionando os respectivos argumentos em ExecStart.
Dicas finais
- Permissões: Caso seu script precise rodar com outro usuário, altere a linha
User=rootpara o usuário correto, evitando usar root sempre que possível. - Logs: Para verificar logs do serviço, use
journalctl -u meuscript.service. - Ambiente virtual: Certifique-se de que o caminho para o ambiente virtual está correto e que o script tem permissões de execução.
Referências oficiais
Para mais detalhes sobre o Systemd, consulte a documentação oficial: https://www.freedesktop.org/software/systemd/man/systemd.service.html
Para saber mais sobre ambientes virtuais Python: https://docs.python.org/3/library/venv.html
Responsabilidade
Este conteúdo é para fins educacionais. Caso utilize scripts ou serviços em produção, sempre revise configurações e permissões para garantir a segurança e funcionamento adequados.

Comentários
Comente só assim vamos crescer juntos!