Vorwort
Mit gunicorn meine_app.wsgi
kannst du seit der letzten Folge deinen Appserver starten. Das ganze wäre aber etwas unpraktisch, wenn du immer eine Shell-Sitzung mit deinem Gunicorn offen haben müsstest, um deine Webapp laufen zu lassen. Außerdem, was passiert wenn die App crasht? Was passiert falls du gerade kein Internet hast, oder wenn du mal deinen Server neu starten willst? Da jedes mal den gleichen Befehl wieder einzugeben macht keinen Sinn. Deswegen gibt es .service
Dateien, die dafür sorgen dass dein Gunicorn automatisch beim Neustart / Anschalten deines Servers gestartet wird.
Installation von gunicorn.service
Lege entweder eine Datei an, oder verlinke von deiner Repo aus:
sudo ln -s /srv/www/meine_repo/services/gunicorn.service /etc/systemd/system/gunicorn.service
# oder:
sudo touch /etc/systemd/system/gunicorn.service
Diese kannst du mit folgendem Inhalt füllen:
[Unit]
Description=Gunicorn service that serves meine_app
After=network.target
[Service]
# Hier kannst du das richtige environment laden
Environment="ENV_NAME=production"
# Nutze am besten nicht root, sondern einen eigens erstellten nutzer, z.B. meine_app_gunicorn
User=root
Group=root
# Deine .wsgi - Datei ist in deinem django-Projektverzeichnis
# Hier wird dein Start-Befehl ausgeführt
WorkingDirectory=/srv/www/meine_repository/mein_projekt
# Das hier Startet deine django App
ExecStart=/srv/www/meine_repository/venv/bin/gunicorn --log-file /var/log/gunicorn --workers 1 --bind 127.0.0.1:8000 meine_app.wsgi
ExecReload=/bin/kill -s HUP $MAINPID
KillMode=mixed
TimeoutStopSec=5
PrivateTmp=true
[Install]
WantedBy=multi-user.target
Jetzt musst du nur noch den service anmachen:
# Lade deine neue Konfiguration
sudo systemctl daemon-reload
# Schalte gunicorn ein, sodass der Service automatisch bei einem reboot angeht
sudo systemctl enable gunicorn
# Starte gunicorn
sudo systemctl start gunicorn
# Jetzt sollte hier ein grünes 'started' und 'enabled' rauskommen:
sudo systemctl status gunicorn
PS: probiere doch mal ein reboot
aus, danach sollte dein gunicorn auch wieder laufen.
Viel Spaß beim Coden,
Dein Ruben
Top comments (0)