Warum nicht der Entwicklungsserver?
Der eingebaute Server von Flask oder Django ist für die Entwicklung gedacht — er verträgt keine echte Last und ist nicht für den Dauerbetrieb gemacht. In der Produktion nimmt man einen WSGI-Server wie Gunicorn, betrieben als systemd-Dienst.
Gunicorn installieren
Am besten in einer virtuellen Umgebung deines Projekts:
python3 -m venv venv source venv/bin/activate pip install gunicorn
App testweise starten
gunicorn --workers 3 --bind 127.0.0.1:8000 app:app
Hier ist app:app das Modul und die Anwendungsinstanz. Lauscht Gunicorn auf 127.0.0.1:8000, ist der erste Schritt geschafft.
Als systemd-Dienst einrichten
Lege /etc/systemd/system/meineapp.service an:
[Unit] Description=Meine Python App After=network.target [Service] User=www-data WorkingDirectory=/var/www/meineapp ExecStart=/var/www/meineapp/venv/bin/gunicorn --workers 3 --bind 127.0.0.1:8000 app:app Restart=always [Install] WantedBy=multi-user.target
Dann aktivieren und starten:
sudo systemctl daemon-reload sudo systemctl enable --now meineapp
Hinter Nginx stellen
Gunicorn lauscht nur lokal. Ein Nginx-Reverse-Proxy stellt die App nach außen mit HTTPS bereit. Startet nichts, hilft 502 Bad Gateway beheben.
Status prüfen
sudo systemctl status meineapp journalctl -u meineapp -n 50
Der erste Befehl zeigt, ob der Dienst läuft, der zweite die letzten Log-Zeilen. Den vServer mit Root-Zugriff für solche Deployments gibt es bei Nytrix.