Systemadministration

Hosting Django mit Nginx und Gunicorn unter Linux

Hosting Django mit Nginx und Gunicorn unter Linux

Einführung

Das Hosting von Django -Webanwendungen ist ziemlich einfach, kann jedoch komplexer werden als eine Standard -PHP -Anwendung. Es gibt einige Möglichkeiten, um die Django -Oberfläche mit einem Webserver zu erstellen. Gunicorn ist leicht einer der einfachsten.

Gunicorn (kurz für Green Unicorn) wirkt wie auf dem Vermittlungsserver zwischen Ihrem Webserver, in diesem Fall Nginx und Django selbst. Es kümmert sich um die Anwendung selbst, während Nginx den statischen Inhalt aufnimmt.

Gunicorn

Installation

Das Installieren von Gunicorn ist mit PIP super einfach. Wenn Sie Ihr Django -Projekt bereits mit Virtualenv eingerichtet haben, haben Sie PIP und sollten mit der Funktionsweise von Funktionen vertraut sein. Installieren Sie also Gunicorn in Ihrem Virtualenv.

$ pip Installieren Sie Gunicorn

Aufbau

Eines der Dinge, die Gunicorn zu einer ansprechenden Wahl machen, ist die Einfachheit seiner Konfiguration. Der beste Weg, um die Konfiguration zu bewältigen, besteht darin, a zu erstellen Gunicorn Ordner im Stammverzeichnis Ihres Django -Projekts. Erstellen Sie in diesem Ordner eine Konfigurationsdatei.

Für diesen Leitfaden wird es aufgerufen Gunicorn-Conf.py. Erstellen Sie in dieser Datei etwas Ähnliches wie die folgende Konfiguration.

multiprocessing bind = 'unix: //// tmp/Gunicorn1 importieren.Sock 'Workers = Multiprocessing.cpu_count () * 2 + 1 reload = true Daemon = true 

Bei der obigen Konfiguration erstellt Gunicorn einen Unix -Socket bei /TMP/Gunicorn1.Socke. Es wird auch eine Reihe von Arbeitsprozessen aufdrehen, die der doppelten Anzahl der CPU -Kerne sowie einem entsprechen. Es wird auch automatisch neu laden und als Daemonisierter Prozess ausgeführt.

Betrieb

Der Befehl zum Ausführen von Gunicorn ist etwas lang, enthält jedoch zusätzliche Konfigurationsoptionen, die darin angegeben sind. Der wichtigste Teil ist, Gunicorn auf die Ihres Projekts zu richten .WSGI Datei.

Gunicorn -c Gunicorn/Gunicorn -Conf.py -d -ERROR -LOGFILE GUNICORN/FEHLER.Loggen Sie Ihr Programm an.WSGI

Der obige Befehl sollte aus der Wurzel Ihres Projekts ausgeführt werden. Es fordert Gunicorn an, die Konfiguration zu verwenden, die Sie mit dem erstellt haben -C Flagge. -D Gibt erneut an, dass es daemonisiert sein sollte. Der letzte Teil gibt den Ort des Fehlers von GuniCorn Long in der an Gunicorn Ordner, den Sie erstellt haben. Der Befehl endet, indem er Gunicorn über den Ort Ihrer sagt .WSGIDatei.

Nginx

Jetzt, da Gunicorn konfiguriert und ausgeführt wird, können Sie Nginx einrichten, um eine Verbindung damit zu haben und Ihre statischen Dateien zu servieren. In dieser Anleitung wird davon ausgegangen, dass Sie Nginx bereits konfiguriert haben und separate verwenden Server Blöcke für die durch sie gehosteten Websites. Es wird auch einige SSL -Informationen enthalten.

Wenn Sie lernen möchten, wie Sie kostenlose SSL -Zertifikate für Ihre Website erhalten, schauen Sie sich unseren LetSencrypt -Leitfaden an.

# Richten Sie die Verbindung zu Gunicorn vor, stromaufwärts Your Project-Gunicorn Server Unix:/TMP/Gunicorn1.SOCK fail_timeout = 0;  # Umleiten Sie den unverschlüsselten Datenverkehr auf den verschlüsselten Site -Server Hören 80; server_name yourwebsite.com; Gibt 301 https: // yourwebsite zurück.com $ request_uri;  # Der Hauptserver -Blockserver  # Legen Sie den Port auf und geben Sie die Domäne an, um das Hören zu hören. 443 Standard SSL; client_max_body_size 4g; server_name yourwebsite.com; # Angeben Sie Protokollorte Access_log/var/log/nginx/yourwebsite.Access_log main; ERROR_LOG/VAR/LOG/NGINX/YORWEBSITE.INAGE_LOG INFO; # Punkt Nginx auf Ihre SSL -Zertifikate SSL on; SSL_Certificate/etc/letSencrypt/live/yourwebsite.com/fullchain.Pem; ssl_certificate_key/etc/letsencrypt/live/yourWebsite.com/privkey.Pem; # Setzen Sie Ihr Root -Verzeichnis root/var/www/yourvirtualenv/yourProject; # Punkt nginx an den statischen Dateiensposition / static /  # # autoIndex die Dateien, um sie durch Browsable zu machen, wenn Sie autoIndex auf möchten; # Der Standort Ihrer Dateien alias/var/www/yourvirtualenv/yourProject/static/; # Einrichten von Caching für Ihre statischen Dateien läuft 1m ab. Access_log aus; add_header cache-kontroll "public"; proxy_ignore_Headers "set-Cookie";  # Point nginx an Ihren hochgeladenen Dateien Speicherort / Media / autoIndex Wenn Sie AutoIndex auf; # Der Standort Ihrer hochgeladenen Dateien alias/var/www/yourvirtualenv/yourProject/media/; # Einrichten von Schmerzen für Ihre hochgeladenen Dateien läuft 1m ab. Access_log aus; add_header cache-kontroll "public"; proxy_ignore_Headers "set-Cookie";  location /  # probieren Sie zuerst Ihre statischen Dateien aus und leiten Sie dann zu Gunicorn try_files $ uri @proxy_to_app; # Geben Anforderungen an den Gunicorn-Standort @proxy_to_app proxy_set_header x-forwarded-for $ proxy_add_x_forwarded_for; proxy_set_header host $ http_host; Proxy_Redirect Off; proxy_pass http: // njc-gunicorn;  # Caching für HTML-, XML- und JSON -Standort ~* \.(HTML?| xml | json) $ läuft 1H;  # Caching für alle anderen statischen Assets Ort ~* \.(JPG | JPEG | PNG | GIF | ICO | CSS | JS | TTF | WOFF2) $ läuft 1m aus; Access_log aus; add_header cache-kontroll "public"; proxy_ignore_Headers "set-Cookie";  

Okay, das ist ein bisschen viel und es kann viel mehr geben. Die wichtigen Punkte sind die zu beachten stromaufwärts Blockieren Sie das auf Gunicorn und die Standort Blöcke, die den Verkehr an Gunicorn übergeben. Der größte Teil des Restes ist ziemlich optional, aber Sie sollten es in irgendeiner Form tun. Die Kommentare in der Konfiguration sollten Ihnen bei den Einzelheiten helfen.

Sobald diese Datei gespeichert ist, können Sie Nginx neu starten, damit die Änderungen wirksam werden können.

# SystemCTL Neustart Nginx

Sobald Nginx wieder online ist, sollte Ihre Website über Ihre Domain zugänglich sein.

Gedanken schließen

Es gibt noch viel mehr, die mit Nginx geschehen können, wenn Sie tief graben möchten. Die bereitgestellten Konfigurationen sind jedoch ein guter Ausgangspunkt und etwas, das Sie tatsächlich verwenden können. Wenn Sie es gewohnt sind, Apache und aufgeblähte PHP -Anwendungen zu erhalten.

Automatische HTML -Formulare mit wwwmechanize
Hier ist ein kurzer Tipp, wie Sie mithilfe einer Linux -Befehlszeile und Perl -Skript automatisch ein HTML -Formular einreichen können. Für dieses Bei...
Dieser Kernel benötigt die folgenden Merkmale, die nicht vorhanden sind PAE
Heute habe ich versucht, RHEL6 i386 als virtuelle Maschine mit VirtualBox zu installieren. Gleich nach dem Start erhielt ich eine Fehlermeldung mit de...
Zeigen Sie Bildattribute mit OpenCV an
Hier ist ein einfaches Programm, mit dem Bildattribute wie Breite, Größe, Größe usw. angezeigt werden können. In diesem Programm wird davon ausgegange...