Verificação de Acesso

Carregando...

Formulário de contato

Nome

E-mail *

Mensagem *

Este blog é um complemento do nosso canal no YouTube. Clique em @CanalQb para seguir e acompanhar nossos vídeos!

Imagem

Como Ativar Ambientes Virtuais com Systemd no Linux

@CanalQb Python - Ativando Venv no serviço do Linux
@CanalQb

Como ativar ambientes virtuais Python no Linux com systemd

O uso de ambientes virtuais (venv) é altamente recomendado para isolar dependências em projetos Python. Neste guia, você aprenderá como ativar ambientes virtuais em um servidor Linux e configurá-los como serviços usando o systemd.

1. Ativando o ambiente virtual manualmente

Para ativar um ambiente virtual manualmente em um terminal Linux, utilize o comando:

source /caminho/para/venv1/bin/activate

Esse comando ativa o ambiente venv1, preparando o terminal para executar scripts Python com os pacotes desse ambiente.

2. Criando um serviço systemd básico

Você pode criar um serviço do systemd que executa automaticamente um script Python usando o ambiente virtual. Para isso, crie um arquivo de unidade com o comando:

sudo nano /etc/systemd/system/nome-do-servico.service

Substitua nome-do-servico pelo nome desejado. Em seguida, adicione o seguinte conteúdo ao arquivo:

[Unit]
Description=Meu serviço venv1

[Service]
Type=simple
ExecStart=/caminho/para/venv1/bin/python /caminho/para/meu-script1.py
Restart=always

[Install]
WantedBy=multi-user.target

Este serviço executa o script meu-script1.py utilizando o Python dentro do ambiente virtual venv1. Para ativar o serviço:

sudo systemctl enable nome-do-servico
sudo systemctl start nome-do-servico

3. Criando um serviço que ativa o ambiente com source

Se precisar ativar o ambiente virtual com source, pode configurar o serviço da seguinte forma:

[Unit]
Description=Meu serviço com venv

[Service]
Type=simple
Environment="VIRTUAL_ENV=/caminho/para/venv"
ExecStart=/bin/bash -c "source $VIRTUAL_ENV/bin/activate && /caminho/para/meu-script.py"
User=usuario
Group=grupo
Restart=always

[Install]
WantedBy=multi-user.target

Explicação dos parâmetros

  • Environment: define a variável de ambiente VIRTUAL_ENV.
  • ExecStart: ativa o ambiente virtual e executa o script.
  • User e Group: definem o usuário e grupo que executam o serviço (por segurança, evite usar root).

4. Habilitando e executando o serviço

Depois de salvar e fechar o arquivo de serviço, use os seguintes comandos:

sudo systemctl daemon-reexec
sudo systemctl daemon-reload
sudo systemctl enable nome-do-servico
sudo systemctl start nome-do-servico

5. Repetindo para múltiplos scripts

Você pode repetir o processo acima para diferentes ambientes virtuais e scripts, como por exemplo:

source /caminho/para/venv2/bin/activate
python /caminho/para/meu-script2.py

E criar um novo arquivo de serviço correspondente com caminhos e nomes ajustados.

Dicas adicionais

  • Certifique-se de que os caminhos estão corretos e os scripts tenham permissão de execução.
  • Use journalctl -u nome-do-servico para visualizar os logs do serviço e depurar problemas.
  • Para scripts com bibliotecas específicas, sempre utilize ambientes virtuais para evitar conflitos globais de dependência.

Com esses passos, você poderá criar serviços robustos para seus scripts Python no Linux, com ambientes virtuais ativados corretamente e reinício automático em caso de falha.

Comentários