Zum Inhalt

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

  1. Admin GUI öffnen: /admin/
  2. Navigation: "Mgmt" → "Gunicorn Configuration"
  3. URL direkt: /admin/mgmt/gunicornconfig/
  4. Log-Level auswählen:
  5. DEBUG - Sehr detaillierte Ausgaben
  6. INFO - Informative Meldungen (Standard)
  7. WARNING - Nur Warnungen
  8. ERROR - Nur Fehler
  9. CRITICAL - Nur kritische Fehler
  10. Speichern - Eine Warnung erscheint, dass ein Neustart erforderlich ist

Server-Neustart

Nach dem Ändern des Log-Levels:

  1. Gehen Sie zu /admin/server/ (Server Control)
  2. Klicken Sie auf "Restart Server"
  3. Die neue Konfiguration wird beim Start geladen

Funktionsweise

Priorität

  1. Datenbank-Konfiguration (GunicornConfig Model) - Höchste Priorität
  2. Wird im Admin GUI verwaltet
  3. Wird beim Server-Start aus der Datenbank gelesen
  4. Als Environment-Variable GUNICORN_LOG_LEVEL an Gunicorn übergeben

  5. Environment-Variable (GUNICORN_LOG_LEVEL) - Fallback

  6. Wird nur verwendet, wenn Datenbank-Konfiguration nicht verfügbar ist
  7. Nützlich während Migrationen oder wenn die Tabelle noch nicht existiert

  8. Default - info

  9. 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:

/path/to/mcc-web/scripts/mcc-web.sh 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

  1. Im Admin GUI: "Mgmt" → "Gunicorn Configuration"
  2. Log-Level auf "DEBUG" ändern
  3. Speichern
  4. Zu "Server Control" gehen (/admin/server/)
  5. "Restart Server" klicken
  6. 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

  1. Prüfen Sie, ob die Migration ausgeführt wurde:

    python manage.py showmigrations mgmt
    

  2. Prüfen Sie die aktuelle Konfiguration:

    python manage.py shell
    >>> from mgmt.models import GunicornConfig
    >>> config = GunicornConfig.get_config()
    >>> print(config.log_level)
    

  3. Prüfen Sie, ob der Server neu gestartet wurde:

    /path/to/mcc-web/scripts/mcc-web.sh status
    

  4. Prüfen Sie die Environment-Variable beim Start:

  5. Schauen Sie in logs/gunicorn_startup.log
  6. 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.