감독자에서 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
더 많은 액세스가 필요한 로그 파일 등에 써야 하기 때문에 감독자가 내 서버 스크립트를 권한 없는 사용자로 실행하도록 할 수 없습니다 . 따라서 해결책은 서버를 루트로 실행하고 gunicorn_django가 작업자 프로세스를 다음과 같이 생성하도록 하는 것입니다.my-www-user
[program:my_app]
user=root
; rest of config follows
답변2
를 실행하려고 할 때 이 오류가 발생 Celery
했고 정반대의 문제가 발생했습니다.
사용자를 에서 로 변경했더니 root
문제 www-data
가 해결되었습니다.
답변3
내 경우에는 동일한 오류가 발생하여 다음을 발견할 때까지 디버깅했습니다.
디스크가 꽉 찼어요이 문제를 해결하기 위해 디스크 공간을 늘렸습니다.
(어리석은 오류, 쉬운 수정 - 여기에서 이 내용을 읽으면 시간을 낭비하지 않는 데 도움이 될 수 있습니다)
또한 다른 옵션에 대해 이 질문을 연결합니다.