Ubuntu 18.04
Ich versuche, den Gunicorn-Webserver beim Booten zu starten.
/etc/systemd/system/gunicorn.service
[Unit]
Description=gunicorn daemon
[Service]
# the specific user that our service will run as
User=pcask
Group=pcask
WorkingDirectory=/home/michael/PycharmProjects/pcask/pcask
ExecStart=gunicorn pcask.wsgi
ExecReload=/bin/kill -s HUP $MAINPID
KillMode=mixed
TimeoutStopSec=5
PrivateTmp=true
[Install]
WantedBy=multi-user.target
Berechtigungen
pcask@tmpgmv:~/pcask/venv/lib/python3.8/site-packages$ ls -la |grep gunicorn
drwxrwxr-x 7 pcask pcask 4096 Jul 28 19:32 gunicorn
drwxrwxr-x 2 pcask pcask 4096 Jul 28 19:32 gunicorn-20.0.4.dist-info
Beim Neustart läuft der Server nicht. Wenn ich meine Website öffne, wird 502 Bad Gateway angezeigt. Das bedeutet, dass Gunicorn nicht läuft.
Können Sie mir sagen, ob es ein Fehlerprotokoll gibt, in dem ich sehen kann, was schief gelaufen ist, als diese Servicedatei beim Booten verwendet wurde? Und ob sie überhaupt verwendet wurde.
SPÄTER HINZUFÜGT
$ sudo journalctl -u gunicorn.service
[sudo] password for pcask:
Loaded: loaded (/etc/systemd/system/gunicorn.service; enabled; vendor preset: enabled)
Active: failed (Result: exit-code) since Fri 2020-08-14 12:36:57 MSK; 1min 11s ago
Process: 439 ExecStart=/home/pcask/pcask/venv/lib/python3.8/site-packages/gunicorn pcask.wsgi:application (code=exited, status=203/EXEC)
Main PID: 439 (code=exited, status=203/EXEC)
Aug 14 12:36:57 tmpgmv systemd[1]: Started gunicorn daemon.
Aug 14 12:36:57 tmpgmv systemd[439]: gunicorn.service: Failed to execute command: Permission denied
Aug 14 12:36:57 tmpgmv systemd[439]: gunicorn.service: Failed at step EXEC spawning /home/pcask/pcask/venv/lib/python3.8/site-packages/gunicorn: Permission denied
Aug 14 12:36:57 tmpgmv systemd[1]: gunicorn.service: Main process exited, code=exited, status=203/EXEC
Aug 14 12:36:57 tmpgmv systemd[1]: gunicorn.service: Failed with result 'exit-code'.
Antwort1
systemd verwendet sein eigenes Logging. Der Befehl zum Anzeigen dieses Loggings lautet
journalctl
Sie können
journalctl -u gunicorn.service
um einen bestimmten Dienst zu verfolgen.
Einige andere Beispiele:
journalctl --since="2020-01-01 10:00:00"
journalctl --since "30 min ago"
journalctl _PID=1000
Stellen Sie sicher, dass der Dienst aktiv ist. Überprüfen Sie ihn,
sudo systemctl status gunicorn.service
und wenn er inaktiv ist, können Siesudo systemctl enable gunicorn
ihn mit aktivieren.Stellen Sie sicher, dass der Dienst erst gestartet wird, nachdem alle anderen erforderlichen Dienste gestartet wurden. Das Starten von Gunicon vor Nginx oder Ihrem Netzwerk funktioniert nicht. Beachten Sie Folgendes: In Ihrem Gerät fehlt ein
After=network.target
in diesem[UNIT]
Abschnitt.
Vorausgesetzt, Ihr Gunicorn funktioniert, wenn es manuell gestartet wird, benötigen Sie die Nginx-Protokolle nicht. Für alle Fälle sind dies jedoch die folgenden:
/var/log/nginx/access.log
/var/log/nginx/error.log