Fix: deploy no servidor onion-worker
TLDR: Corrige o deploy renomeando o servidor, padronizando as confs do supervisor e derivando conf/PID dinamicamente do hostname.
Contexto
O servidor onion-tasks executava o worker Celery, mas o hostname não batia no case do deploy-backend.sh, impedindo que o supervisor fosse configurado e o PID encontrado. Além disso, os nomes das confs (celery-*) e os program names do supervisor não seguiam o padrão dos hostnames (onion-worker-*), exigindo um case hardcodado para cada servidor.
A solução foi:
- Renomear o servidor para
onion-workerviahostnamectl - Renomear as confs do supervisor de
celery-*paraworker-*, alinhando com o hostname - Derivar
SUPERVISOR_CONF,SUPERVISOR_PROGRAMePIDdinamicamente do hostname no script de deploy, eliminando ocase - Padronizar
--pidfilee logs nas confs com%(program_name)s - Adicionar erros em vermelho em todos os pontos de falha
Objetivos
- Deploy funciona em qualquer servidor que siga o padrão
onion-<type>[-N] - Nenhum hardcode de hostname, conf ou PID no script de deploy
- Falhas visíveis com
error:em vermelho e exit code não-zero
Fora de escopo
— (não registrado na spec original)
Mudanças
scripts/deploy-backend.sh
- Remove o
casepor hostname - Deriva
TYPEdo hostname viased -E 's/^onion-(.+)-[0-9]+$/\1/;s/^onion-//' - Monta
SUPERVISOR_CONF=$TYPE-production.conf,SUPERVISOR_PROGRAM=onion-$TYPE-production,PID=$DIR_BASE/run/$SUPERVISOR_PROGRAM.pid - Valida que a conf existe antes de aplicar
- Todos os pontos de falha imprimem
error: <mensagem>em vermelho e fazemexit 1
supervisor/celery-*.conf → supervisor/worker-*.conf
| Arquivo antigo | Arquivo novo |
|---|---|
celery-production.conf |
worker-production.conf |
celery-beat-production.conf |
worker-beat-production.conf |
celery-habits-production.conf |
worker-habits-production.conf |
celery-staging.conf |
worker-staging.conf |
celery-beat-staging.conf |
worker-beat-staging.conf |
[program:onion-celery-*]→[program:onion-worker-*]--pidfilee*_logfilepadronizados com%(program_name)s
Ação manual nos servidores (antes do merge)
Em cada servidor worker, parar o processo antigo:
bash
sudo supervisorctl stop onion-celery-production # ajustar nome conforme servidor
sudo rm -f /etc/supervisor/conf.d/celery-production.conf
sudo supervisorctl reread && sudo supervisorctl update
Como verificar
- Rodar
sudo -u ubuntu /home/ubuntu/deploy.shno servidoronion-worker - Confirmar que conclui com
Process backend reloaded - Confirmar que
sudo supervisorctl statusmostra o processoRUNNINGcom o nomeonion-worker-production
Documentação
Nenhuma mudança de documentação necessária.