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

Sugestões de pesquisas

Como usar dois ambientes virtuais Python no systemd

#Python; #Systemd; #Linux

Gerenciando dois ambientes virtuais Python com systemd

Se você precisa rodar dois projetos Python simultaneamente em um servidor Linux, cada um com seu próprio ambiente virtual (venv), é possível configurar dois serviços distintos utilizando o systemd. Essa abordagem garante que cada projeto funcione de maneira isolada, com seus próprios pacotes e configurações.

O que é systemd?

systemd é um sistema de inicialização e gerenciamento de serviços padrão para várias distribuições Linux modernas. Ele permite que você crie serviços personalizados para iniciar, parar e monitorar processos do sistema com facilidade.

Passo a passo para configurar dois ambientes virtuais com systemd

Vamos criar dois arquivos de serviço, um para cada projeto Python. Suponha que você tenha dois diretórios de projeto separados, cada um com seu próprio venv.

1. Criando os arquivos de serviço

Abra um terminal com privilégios de superusuário e execute:

sudo nano /etc/systemd/system/venv1.service
sudo nano /etc/systemd/system/venv2.service

Esses arquivos vão conter a configuração para iniciar cada ambiente virtual com seu respectivo script.

2. Exemplo de configuração do venv1.service

[Unit]
Description=Venv1 Service

[Service]
User=seu_usuario
WorkingDirectory=/caminho/do/projeto1
ExecStart=/caminho/do/projeto1/venv/bin/python main.py

[Install]
WantedBy=multi-user.target

3. Exemplo de configuração do venv2.service

[Unit]
Description=Venv2 Service

[Service]
User=seu_usuario
WorkingDirectory=/caminho/do/projeto2
ExecStart=/caminho/do/projeto2/venv/bin/python app.py

[Install]
WantedBy=multi-user.target

Substitua seu_usuario pelo nome do usuário que deve executar o serviço, e ajuste os caminhos conforme sua estrutura de diretórios.

4. Recarregando e iniciando os serviços

Após salvar os dois arquivos, atualize o systemd para reconhecer os novos serviços:

sudo systemctl daemon-reload

Agora, inicie os serviços:

sudo systemctl start venv1.service
sudo systemctl start venv2.service

5. Verificando o status dos serviços

sudo systemctl status venv1.service
sudo systemctl status venv2.service

Esses comandos exibem se os serviços estão rodando corretamente ou se houve alguma falha. Se preferir, você também pode configurar para que os serviços iniciem automaticamente com o sistema:

sudo systemctl enable venv1.service
sudo systemctl enable venv2.service

Vantagens dessa abordagem

  • Isolamento total entre os projetos Python.
  • Facilidade de monitoramento e controle via systemd.
  • Execução automática após reboot, útil para servidores e aplicações em produção.

Dica de segurança e boas práticas

Evite executar serviços com o usuário root. Crie usuários específicos para cada aplicação, com permissões mínimas necessárias. Além disso, mantenha logs organizados para cada serviço utilizando a ferramenta journalctl:

journalctl -u venv1.service
journalctl -u venv2.service

Com essas práticas, seu ambiente de produção se torna mais robusto e seguro.

Conclusão

Utilizar o systemd para gerenciar múltiplos ambientes virtuais Python é uma solução poderosa, especialmente para projetos que precisam rodar continuamente em servidores Linux. Com poucos comandos e configurações, você pode garantir que seus serviços iniciem automaticamente, funcionem de forma isolada e sejam fáceis de monitorar.

Para aprofundar seu conhecimento, visite a página oficial do systemd e a documentação do venv no Python.

Postar um comentário

Comente só assim vamos crescer juntos!
CanalQb mais próximo Quer falar com o CanalQb?
Em que posso te ajudar?
Fale comigo