Gunicorn-Konfiguration im Admin GUI¶
Übersicht¶
Der Gunicorn Log-Level kann jetzt direkt über das Admin Interface gesteuert werden, ohne Environment-Variablen ändern zu müssen.
Verwendung¶
Im Admin GUI¶
- Admin GUI öffnen:
/admin/ - Navigation: "Mgmt" → "Gunicorn Configuration"
- URL direkt:
/admin/mgmt/gunicornconfig/ - Log-Level auswählen:
- DEBUG - Sehr detaillierte Ausgaben
- INFO - Informative Meldungen (Standard)
- WARNING - Nur Warnungen
- ERROR - Nur Fehler
- CRITICAL - Nur kritische Fehler
- Speichern - Eine Warnung erscheint, dass ein Neustart erforderlich ist
Server-Neustart¶
Nach dem Ändern des Log-Levels:
- Gehen Sie zu
/admin/server/(Server Control) - Klicken Sie auf "Restart Server"
- Die neue Konfiguration wird beim Start geladen
Funktionsweise¶
Priorität¶
- Datenbank-Konfiguration (GunicornConfig Model) - Höchste Priorität
- Wird im Admin GUI verwaltet
- Wird beim Server-Start aus der Datenbank gelesen
-
Als Environment-Variable
GUNICORN_LOG_LEVELan Gunicorn übergeben -
Environment-Variable (GUNICORN_LOG_LEVEL) - Fallback
- Wird nur verwendet, wenn Datenbank-Konfiguration nicht verfügbar ist
-
Nützlich während Migrationen oder wenn die Tabelle noch nicht existiert
-
Default - info
- Wenn weder Datenbank noch Environment-Variable verfügbar sind
Singleton-Pattern¶
Die GunicornConfig ist ein Singleton-Model - es existiert nur eine Instanz. Beim ersten Zugriff wird automatisch eine Instanz mit dem Standard-Wert (info) erstellt.
Migration und Setup¶
Erste Einrichtung¶
Nach der Migration:
# Migration ausführen
python manage.py migrate mgmt
# Standard-Wert wird automatisch erstellt (info)
Deployment¶
Das Startup-Script liest die Konfiguration automatisch aus der Datenbank beim Start:
Hinweis:
- Produktion: Die Anwendung läuft unter /data/appl/mcc/mcc-web als der vom Admin konfigurierte Benutzer (z.B. mcc, www-data, etc.)
- Entwicklung: Pfade können individuell sein, da die Anwendung relativ im Projektverzeichnis alle Informationen findet
- Benutzer: Der Benutzer mcc ist nicht zwingend erforderlich, der Benutzer wird vom Admin konfiguriert
Das Script verwendet das Management-Command get_gunicorn_config, um die Konfiguration aus der Datenbank zu lesen.
Beispiel-Workflow¶
Log-Level ändern¶
- Im Admin GUI: "Mgmt" → "Gunicorn Configuration"
- Log-Level auf "DEBUG" ändern
- Speichern
- Zu "Server Control" gehen (
/admin/server/) - "Restart Server" klicken
- Neue Konfiguration wird geladen
Wichtige Hinweise¶
⚠️ Server-Neustart erforderlich¶
Änderungen am Gunicorn Log-Level erfordern einen Server-Neustart, um wirksam zu werden. Die Konfiguration wird nur beim Start geladen.
🔄 Sofortige Wirkung¶
Nach einem Neustart gilt die neue Konfiguration sofort für alle neuen Log-Einträge.
📊 Best Practices¶
- Entwicklung: DEBUG oder INFO
- Staging: INFO oder WARNING
- Produktion: WARNING oder ERROR
- Kritische Systeme: ERROR oder CRITICAL
Troubleshooting¶
Konfiguration wird nicht übernommen¶
-
Prüfen Sie, ob die Migration ausgeführt wurde:
-
Prüfen Sie die aktuelle Konfiguration:
-
Prüfen Sie, ob der Server neu gestartet wurde:
-
Prüfen Sie die Environment-Variable beim Start:
- Schauen Sie in
logs/gunicorn_startup.log - Das Script sollte "Using log level from database: X" anzeigen
Fallback auf Environment-Variable¶
Wenn die Datenbank-Konfiguration nicht verfügbar ist (z.B. während Migrationen), fällt das System automatisch auf die GUNICORN_LOG_LEVEL Environment-Variable zurück.
Integration mit Server Control¶
Die Gunicorn-Konfiguration ist in die Server-Control-Seite integriert:
- Server Control (
/admin/server/) zeigt das aktuelle Log-Level an - Direkter Link zur Gunicorn-Konfiguration
- Nach dem Ändern der Konfiguration wird ein Link zum Server-Neustart angezeigt
Migration von alter Konfiguration¶
Wenn Sie vorher GUNICORN_LOG_LEVEL in der .env oder als Environment-Variable verwendet haben:
# Migration ausführen
python manage.py migrate mgmt
# Konfiguration im Admin GUI setzen
# Oder über Management-Command:
python manage.py shell
>>> from mgmt.models import GunicornConfig
>>> config = GunicornConfig.get_config()
>>> config.log_level = 'info' # oder 'debug', 'warning', etc.
>>> config.save()
Danach können Sie GUNICORN_LOG_LEVEL aus der .env entfernen und alles über das Admin GUI steuern.