O processo do supervisor sai com 'status de saída 1; inesperado'

4

Estou tentando executar um processo gunicorn_django no supervisor, mas ele sempre sai imediatamente, apresentando este erro:

INFO exited: my_app (exit status 1; not expected)
INFO received SIGCLD indicating a child quit
INFO gave up: my_app entered FATAL state, too many start retries too quickly

Meu script de servidor é assim:

#!/bin/bash
set -e
LOGFILE=/var/log/gunicorn/my_app.log
LOGDIR=$(dirname $LOGFILE)
NUM_WORKERS=3
USER=my-www-user
GROUP=my-www-user
cd /home/my-www-user/my_app
source /home/my-www-user/.virtualenvs/my_app/bin/activate
test -d $LOGDIR || mkdir -p $LOGDIR
gunicorn_django -w $NUM_WORKERS --debug \
 --user=$USER --group=$GROUP \
 --log-level=debug --log-file=$LOGFILE 2>>$LOGFILE\
 --pythonpath=my_app --settings=settings.active \
 my_app.wsgi:application

E minha configuração de supervisor é assim:

[program:my_app]
directory=/home/my-www-user/my_app/
user=my-www-user
command=/home/my-www-user/my_app/server.sh
stdout_logfile=/var/log/supervisor/my_app.log
stderr_logfile=/var/log/supervisor/my_app-error.log
autostart=true
autorestart=true

Quando eu su na conta my-www-user , o servidor é iniciado normalmente. Quando eu faço sudo supervisorctl start my_app ele simplesmente trava até eu fazer CTRL-c, então eu encontro o erro acima no arquivo supervisord.log.

Alguém tem uma pista sobre o que eu sinto falta?

    
por Sævar 10.09.2013 / 14:11

2 respostas

3

Parece que encontrei a solução. Eu não posso ter supervisor executar meu script de servidor como o unprivileged my-www-user , uma vez que tem que gravar em arquivos de log, etc, que requer mais acesso. Portanto, a solução é executar o servidor como root e deixar gunicorn_django gerar o processo de trabalho como my-www-user

[program:my_app]
user=root
; rest of config follows
    
por 10.09.2013 / 14:19
1

Eu tive esse erro ao tentar executar o Celery, e tive exatamente o problema oposto. Mudei meu usuário do root para www-data e resolvi isso.

    
por 08.04.2015 / 19:28