Django ist ein High-Level-Webentwicklungsframework, das schnelle Entwicklung und pragmatisches Design fördert. Es ist bei Entwicklern für seine Eleganz und Einfachheit beliebt und ermöglicht die Erstellung komplexer Websites mit weniger Code. Für den Einsatz von Django-Anwendungen in der Produktion ist es üblich, Nginx als Webserver vor Gunicorn, einem HTTP WSGI-Server für Python, zu verwenden. Diese Konfiguration bietet eine robuste und skalierbare Kombination für das Hosting von Webanwendungen. In diesem Artikel führe ich Sie durch die Schritte zur Einrichtung von Django mit Nginx und Gunicorn und biete echte Beispiele für Befehlszeilen und Konfigurationen.
Schritt 1: Ihre Django-Anwendung vorbereiten
Stellen Sie sicher, dass Ihre Django-Anwendung produktionsbereit ist. Dies umfasst die Konfiguration der Datenbank, das Sammeln statischer Dateien und jegliche notwendige Anpassungen in settings.py
wie DEBUG = False
.
Schritt 2: Gunicorn installieren
Gunicorn dient als der Webanwendungsserver, der Ihre Django-Projekt bedient. Installieren Sie es mit pip:
pip install gunicorn
Nach der Installation können Sie testen, ob Gunicorn Ihre Anwendung korrekt bedienen kann, indem Sie folgendes ausführen:
gunicorn --workers 3 mein_django_projekt.wsgi:application
Ersetzen Sie mein_django_projekt
durch den Namen Ihres Django-Projekts. Wenn alles richtig konfiguriert ist, wird Gunicorn beginnen, Ihre Django-Anwendung zu bedienen.
Schritt 3: Nginx konfigurieren
Nginx wird als Reverse-Proxy für Gunicorn verwendet, um HTTP-Anfragen zu verarbeiten und an Gunicorn weiterzuleiten. Installieren Sie zunächst Nginx:
sudo apt update
sudo apt install nginx
Konfigurieren Sie dann Nginx, um Anfragen an Gunicorn weiterzuleiten. Erstellen Sie eine neue Nginx-Konfigurationsdatei für Ihr Projekt:
sudo nano /etc/nginx/sites-available/mein_django_projekt
Fügen Sie die folgende Konfiguration hinzu, wobei Sie Namen und Pfade entsprechend anpassen:
server {
listen 80;
server_name deine_domain.com;
location =https://shape-host.b-cdn.net/favicon.ico?x76608 { access_log off; log_not_found off; }
location /static/ {
root /pfad/zu/deinem/projekt;
}
location / {
include proxy_params;
proxy_pass http://unix:/pfad/zu/deinem/projekt/mein_django_projekt.sock;
}
}
Aktivieren Sie die Konfiguration, indem Sie die Datei in sites-enabled
verlinken:
sudo ln -s /etc/nginx/sites-available/mein_django_projekt /etc/nginx/sites-enabled
Überprüfen Sie die Nginx-Konfiguration und starten Sie den Dienst neu:
sudo nginx -t
sudo systemctl restart nginx
Schritt 4: Gunicorn mit Supervisor ausführen
Um sicherzustellen, dass Gunicorn kontinuierlich läuft und bei Fehlern neu gestartet wird, verwenden Sie Supervisor:
sudo apt-get install supervisor
Erstellen Sie eine Konfigurationsdatei für Ihr Projekt in Supervisor:
sudo nano /etc/supervisor/conf.d/mein_django_projekt.conf
Fügen Sie die folgende Konfiguration hinzu:
[program:mein_django_projekt]
command=/pfad/zu/deinem/virtuellen/umgebung/bin/gunicorn --workers 3 --bind unix:/pfad/zu/deinem/projekt/mein_django_projekt.sock mein_django_projekt.wsgi:application
directory=/pfad/zu/deinem/projekt
autostart=true
autorestart=true
stderr_logfile=/var/log/mein_django_projekt.err.log
stdout_logfile=/var/log/mein_django_projekt.out.log
Aktualisieren Sie Supervisor und starten Sie den Prozess:
sudo supervisorctl reread
sudo supervisorctl update
sudo supervisorctl start mein_django_projekt
Dienste von Shape.host
Für diejenigen, die daran interessiert sind, Django-Anwendungen mit der Konfiguration von Nginx und Gunicorn in einer optimierten und sicheren Umgebung zu hosten, bietet Shape.host Cloud VPS-Dienste, die eine perfekte Lösung sein können. Mit Cloud VPS-Optionen bietet Shape.host die notwendige Flexibilität und Skalierbarkeit, um mit Ihren Projekten zu wachsen, und gewährleistet gleichzeitig hohe Leistungs- und Sicherheitsstandards. Darüber hinaus steht das technische Support-Team von Shape.host zur Verfügung, um Ihnen bei der Einrichtung und Wartung Ihres Servers zu helfen, sodass Sie sich auf die Entwicklung Ihrer Anwendung konzentrieren können, ohne sich um die zugrunde liegende Infrastruktur sorgen zu müssen.