Formulário de contato

Nome

E-mail *

Mensagem *

Imagem

Como Criar um Serviço Systemd para Código Python em Ambiente Virtual Linux

Como Criar um Serviço Systemd para Código Python em Ambiente Virtual Linux

Publicado por em

@CanalQb 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=root para 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.

Marcadores: Blogger Python Script Sistemas Tutorial

© abril 15, 2023 CanalQb — Python, Scripts, Automação, Airdrops e Criptomoedas | Web3 e Tech na Prática

Comentários