Процесс супервизора завершается с «статусом завершения 1; не ожидалось»

Процесс супервизора завершается с «статусом завершения 1; не ожидалось»

Я пытаюсь запустить процесс gunicorn_django в супервизоре, но он всегда немедленно завершается, выдавая следующую ошибку:

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

Мой серверный скрипт выглядит так:

#!/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

А моя конфигурация супервизора выглядит так:

[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

Когда я suвхожу в my-www-userаккаунт, сервер запускается нормально. Когда я sudo supervisorctl start my_appэто делаю, он просто зависает, пока я не нажму CTRL-c, затем я нахожу ошибку выше в файле supervisord.log.

Кто-нибудь знает, что я упускаю?

решение1

Кажется, я нашел решение. Я не могу заставить супервизора запустить мой серверный скрипт как непривилегированного, my-www-userтак как он должен писать в файлы журналов и т. д., что требует большего доступа. Поэтому решение заключается в том, чтобы запустить сервер как root и позволить gunicorn_django запустить рабочий процесс какmy-www-user

[program:my_app]
user=root
; rest of config follows

решение2

У меня возникла эта ошибка при попытке запустить Celery‍, и у меня была совершенно противоположная проблема.

Я изменил своего пользователя с rootна www-dataи это решило проблему.

решение3

В моем случае, когда возникла та же ошибка, я отлаживал ее, пока не обнаружил:

диск был заполнени я увеличил дисковое пространство, чтобы решить эту проблему.

(глупая ошибка, которую легко исправить — возможно, прочтение этого здесь поможет кому-то не тратить время)

также ссылка на этот вопрос для других вариантов:

Связанный контент