Crie um arquivo de serviço em /etc/systemd/system/, por exemplo video_converter.service (substitua pelo nome relevante do seu projeto): ```
sudo nano /etc/systemd/system/video_converter.service
Insira o seguinet conteúdo — observe que não há comentários na linha de comando, nenhum operador `&` no final de `ExecStart`, e redirecionamentos de saída devem ser evitados ou tratados via `StandardOutput`/`StandardError`: ```
[Unit]
Description=Serviço de conversão de vídeos com FFmpeg e Django
After=network-online.target
Wants=network-online.target
[Service]
Type=simple
User=deployer
Group=deployer
WorkingDirectory=/opt/video_processor
Environment="PATH=/opt/video_processor/.venv/bin"
ExecStart=/opt/video_processor/.venv/bin/python /opt/video_processor/manage.py runserver 0.0.0.0:8001
Restart=on-failure
RestartSec=5
StandardOutput=journal
StandardError=journal
[Install]
WantedBy=multi-user.target
Notas importantes:
- O usuário
deployerdeve existir e ter permissões adequadas sobre os diretórios e arquivos do projeto. Type=simpleindica que o processo principal é iniciado diretamente — ideal para aplicações Python que não fazem fork.Restart=on-failurereinicia apenas em falhas reais (não em desligamentos planejados), aumentando a estabilidade.- A variável
Environmentgarante que oPATHcorreto seja usado, evitando dependências externas acidentais.
2. Recarregar a configuração do systemd
Após salvar o arquivo, atualize o daemon para reconhecer a nova unidade: ``` sudo systemctl daemon-reload
### 3. Ativar e iniciar o serviço
Habilite o serviço para inicialização automática e inicie-o imediatamente: ```
sudo systemctl enable video_converter.service
sudo systemctl start video_converter.service
4. Verificar o estado e logs
Confirme se o serviço está ativo e examine possíveis mensagens de erro: ``` sudo systemctl status video_converter.service sudo journalctl -u video_converter.service -f --since "1 hour ago"
A saída de `status` deve exibir `active (running)` e mostrar o PID do processo Python. Os logs são centralizados no journal do systemd — sem necessidade de arquivos .log externos. ### 5. Gerenciamento adicional (opcional)
Para interromper ou desabilitar o serviço posteriormente: ```
sudo systemctl stop video_converter.service
sudo systemctl disable video_converter.service
Essa abordagem oferece controle robusto, integração nativa com o sistema, monitoramento em tempo real e conformidade com as melhores práticas de segurança e manutenção em ambientes de produção.