DEV Community

Ruben Voß
Ruben Voß

Posted on

7. Gunicorn als service - Django in Produktion Teil 7

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 
Enter fullscreen mode Exit fullscreen mode

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 
Enter fullscreen mode Exit fullscreen mode

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 
Enter fullscreen mode Exit fullscreen mode

PS: probiere doch mal ein reboot aus, danach sollte dein gunicorn auch wieder laufen.

Viel Spaß beim Coden,
Dein Ruben

Mein Blog

Top comments (0)