Django:Nginx unf Gunicorn mit socket“
Django: Nginx und Gunicorn mit unix:socket
Gunicorn ist ein WSGI-HTTP-Server für Python-Anwendungen. Er ist eine Alternative zu uWSGI und mod_wsgi. Gunicorn ist ein reiner Python-Server und kann mit Django, Flask und anderen Python-Web-Frameworks verwendet werden.
In diesem Tutorial werden wir zeigen, wie
- Django-Anwendung auf einem Gunicorn-Server ausgeführt wird. - Nginx als Reverse-Proxy-Server für Gunicorn konfiguriert wird. - Gunicorn mit einem Unix-Socket anstelle eines TCP-Sockets konfiguriert wird.
Schritt 1: Gunicorn mit einem Unix-Socket
Gunicorn kann mit einem Unix-Socket anstelle eines TCP-Sockets konfiguriert werden. Ein Unix-Socket ist ein Kommunikationsendpunkt, der auf dem Dateisystem erstellt wird. Es ist schneller als ein TCP-Socket, da es keine Netzwerkschicht durchläuft.
Erstellen Sie ein Verzeichnis für die Sockeldatei:
sudo mkdir /run/gunicorn
Erstellen Sie eine Sockeldatei:
sudo touch /run/gunicorn/django.sock
Ändern Sie die Berechtigungen der Sockeldatei:
sudo chmod 777 /run/gunicorn/django.sock
Erstellen Sie eine Systemd-Dienstdatei für Gunicorn:
sudo nano /etc/systemd/system/gunicorn.service
Fügen Sie den folgenden Inhalt hinzu:
[Unit] Description=gunicorn daemon After=network.target [Service] User=www-data Group=www-data WorkingDirectory=/path/to/your/project ExecStart=/path/to/your/venv/bin/gunicorn --access-logfile - --workers 3 --bind unix:/run/gunicorn/django.sock myproject.wsgi:application [Install] WantedBy=multi-user.target
Starten und aktivieren Sie den Gunicorn-Dienst:
sudo systemctl start gunicorn sudo systemctl enable gunicorn
Schritt 2: Nginx als Reverse-Proxy-Server für Gunicorn
Nginx kann als Reverse-Proxy-Server für Gunicorn konfiguriert werden. Ein Reverse-Proxy-Server empfängt Anfragen von Clients und leitet sie an den entsprechenden Server weiter.
Erstellen Sie eine Nginx-Konfigurationsdatei:
sudo nano /etc/nginx/sites-available/myproject
Fügen Sie den folgenden Inhalt hinzu:
server { listen 80; server_name example.com; location / { proxy_pass http://unix:/run/gunicorn/django.sock; proxy_set_header Host $host; proxy_set_header X-Real-IP $remote_addr; proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for; proxy_set_header X-Forwarded-Proto $scheme; } }
Aktivieren Sie die Nginx-Konfigurationsdatei:
sudo ln -s /etc/nginx/sites-available/myproject /etc/nginx/sites-enabled
Starten Sie Nginx:
sudo systemctl start nginx