Ich möchte Dev-Server bereitstellen, aber ich habe ein Problem mit dem Starten von Sellerie und Gunicorn. Ich verwende Skripte für meine Zwecke
sellerie.sh
#!/bin/bash
cd /home/dev/app
pipenv run celery -A config worker -B -l info
und start.sh für gunicorn
#!/bin/bash
cd /home/dev/app
pipenv run gunicorn config.wsgi:application -b 127.0.0.1:8005 -w 2 -t 60 \
--env Django_SETTINGS_MODULE=$Django_SETTINGS_MODULE \
--env DSN=$SENTRY_DSN \
--env DATABASE_URL=$DATABASE_URL \
--log-file - \
--error-logfile /home/dev/app/errors.log
Auch hier ist meine Config für Supervisor
[program:back]
directory=/home/dev/app/
command=/home/dev/bin/start
user=dev
autostart=true
autorestart=true
redirect_stderr=true
stopsignal=QUIT
stopasgroup=true
killasgroup=true
[program:celery]
directory=/home/dev/app/
command=/home/dev/bin/celery
user=dev
autostart=true
autorestart=true
redirect_stderr=true
stopsignal=QUIT
stopasgroup=true
killasgroup=true
Beim Ausführen von Sudo supervisorctl start celery
erhalte ich die folgende Fehlermeldung: /home/dev/bin/celery: line 3: pipenv: command not found
Außerdem fügte ich die folgenden Zeilen hinzu, wie in der pipenv-Dokumentation ( https://pipenv.readthedocs.io/de/latest/diagnose/ )
[supervisord]
environment=LC_ALL='en_US.UTF-8',LANG='en_US.UTF-8'
Meine Supervisor-Konfiguration geändert:
[program:back]
directory=/home/dev/app/
command=pipenv run gunicorn config.wsgi:application --bind 127.0.0.1:8005
user=dev
autostart=true
autorestart=true
redirect_stderr=true
stopsignal=QUIT
stopasgroup=true
killasgroup=true
[program:celery]
directory=/home/dev/app/
command=pipenv run celery -A config:celery_app worker -B -l info
user=dev
autostart=true
autorestart=true
redirect_stderr=true
stopsignal=QUIT
stopasgroup=true
killasgroup=true
Und jetzt bekomme ich einen Fehler:
back: ERROR (no such file)
Sie müssen einen expliziten Pfad von Gunicorn angeben. Ich bin mir zwar nicht sicher über pipenv, aber der Fehler, den Sie erhalten, ist, dass der Supervisor versucht, Gunicorn im Verzeichnis zu finden. Sie sollten Ihre Konfigurationsdatei folgendermaßen ändern:
[program:back]
directory=/home/dev/app/
command=/path/to/pipenv run /path/to/gunicorn config.wsgi:application --bind 127.0.0.1:8005
Dann müssen Sie Ihren Supervisord neu starten, um die Einstellungen zu laden.
Sudo Service Supervisord Nachladen
in deiner Konfigurationsdatei. Ändern Sie
command=
inbash -c
, gefolgt von dem vollständigen Pfad und der auszuführenden Datei das sollte den Trick tun