Produktiv Server für eine Django App

29. März 2026

Nginx Unit als WSGI Server für eine Django Applikation

Django Nginx Unit Header
Die Entwicklung einer Django-Webanwendung ist bereits eine anspruchsvolle Aufgabe, aber die richtige Konfiguration deines Serverstacks kann einen erheblichen Einfluss auf die Leistung und Produktivität deiner Anwendung haben. In diesem Artikel werden wir uns auf die Verwendung von Nginx Unit als WSGI (Web Server Gateway Interface) Server für deine Django-App konzentrieren und wie diese Konfiguration die Effizienz steigern kann.

Warum Nginx Unit?

Im Gegensatz zu traditionellen WSGI-Servern wie Gunicorn oder uWSGI lässt sich Nginx Unit dynamisch über eine REST-API konfigurieren. Ein Neuladen des Serverprozesses bei Konfigurationsänderungen entfällt. Unit ist leichtgewichtig, extrem schnell und verarbeitet statische Dateien effizient parallel zum Django-Python-Code.

1. Installation

Installiere Nginx Unit und das benötigte Python-Modul auf deinem Ubuntu/Debian-Server:

sudo apt update
sudo apt install unit unit-dev unit-python3

2. JSON-Konfiguration erstellen

Unit verwendet keine klassischen Konfigurationsdateien, sondern ein JSON-Payload. Erstelle eine Datei namens config.json und passe die Pfade an dein Django-Projekt an:

{
  "listeners": {
    "*:8000": {
      "pass": "applications/django"
    }
  },
  "applications": {
    "django": {
      "type": "python 3",
      "path": "/var/www/myproject/",
      "module": "myproject.wsgi",
      "environment": {
        "DJANGO_SETTINGS_MODULE": "myproject.settings"
      }
    }
  }
}

3. Konfiguration anwenden

Sende die JSON-Konfiguration über curl an den Unit-Control-Socket. Dies wendet die Einstellungen sofort an, ohne den Dienst neu zu starten.

sudo curl -X PUT --data-binary @config.json --unix-socket /var/run/control.unit.sock http://localhost/config/

Deine Django-Anwendung läuft nun und ist über Port 8000 erreichbar. Du kannst Worker-Prozesse dynamisch über dieselbe API skalieren, indem du das JSON anpasst und erneut sendest!

Teilen:


Schreibe einen Kommentar

Wird für die Bestätigung benötigt