Ich versuche, einen Gunicorn_Django-Prozess im Supervisor auszuführen, aber er wird immer sofort beendet und gibt diesen Fehler aus:
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
Mein Serverskript sieht folgendermaßen aus:
#!/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
Und meine Supervisor-Konfiguration sieht folgendermaßen aus:
[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
Wenn ich mich su
in das my-www-user
Konto einlogge, startet der Server normal. Wenn ich sudo supervisorctl start my_app
das tue, bleibt er einfach hängen, bis ich STRG+C drücke. Dann finde ich den obigen Fehler in der Datei supervisord.log.
Hat jemand eine Ahnung, was ich übersehe?
Antwort1
Ich scheine die Lösung gefunden zu haben. Ich kann Supervisor mein Serverskript nicht als unprivilegierten Benutzer ausführen lassen, my-www-user
da es in Protokolldateien usw. schreiben muss, was mehr Zugriff erfordert. Die Lösung besteht also darin, den Server als Root auszuführen und gunicorn_django den Arbeitsprozess alsmy-www-user
[program:my_app]
user=root
; rest of config follows
Antwort2
Beim Versuch, auszuführen, ist dieser Fehler aufgetreten Celery
, und ich hatte genau das gegenteilige Problem.
Ich habe meinen Benutzer von root
auf geändert www-data
und damit war das Problem gelöst.
Antwort3
In meinem Fall trat der gleiche Fehler auf und ich habe ihn debuggt, bis ich Folgendes herausfand:
die Festplatte war vollund ich habe den Speicherplatz vergrößert, um das Problem zu lösen.
(dummer Fehler, leicht zu beheben – vielleicht hilft es jemandem, das hier zu lesen und keine Zeit zu verschwenden)
Verlinke diese Frage auch für andere Optionen: