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)