Djangos eingebauten Webserver in einer Produktionsumgebung verwenden

8

Ich werde eine einfache Django-App einrichten, die in einer Produktionsumgebung auf einer Linux-Box läuft. Die App wird sehr wenig Verkehr haben - weniger als 100 Seitenladevorgänge pro Tag. Ist es in Ordnung, den eingebauten Django-Webserver dafür zu verwenden oder sollte ich Apache und mod_wsgi installieren? Wenn ja, aus welchen Gründen? Sicherheit vielleicht?

AKTUALISIEREN

OK, es ist klar, dass ich den eingebauten Server nicht benutzen sollte. Einige der Alternativen zu Apache sehen interessant aus. Gibt es einen, der bei Django vielleicht beliebter / häufiger verwendet wird?

    
paperplane 01.02.2011, 20:48
quelle

4 Antworten

13
  

BENUTZEN SIE NICHT DIESEN (den eingebauten Django-Webserver) SERVER IN EINER PRODUKTIONSEINSTELLUNG. Es hat keine Sicherheitsaudits oder Leistungstests durchlaufen.

Ссылка

Aber Sie haben Apache nicht benutzt, wenn Sie nicht wollen. Du könntest Spawning , Gunigorn direkt verwenden usw.

Cherokee ist auch einfach einzurichten.

    
Epeli 01.02.2011, 20:51
quelle
16
  

Ist es in Ordnung, den eingebauten Django-Webserver dafür zu verwenden?

Nein.

  

Sollte ich Apache und mod_wsgi installieren?

Ja.

  

Wenn ja, aus welchen Gründen? Sicherheit vielleicht?

teilweise.

Noch wichtiger ist, dass der kleine Django-Server ein single-threaded ist und jedes Aufhängen in Ihrem Code den Server aufhängt. Dies bedeutet, dass wenn zwei Benutzer fast gleichzeitig klicken, die Abfrage von Benutzer eins vollständig durch Django gehen muss, bevor die Abfrage von Benutzer 2 überhaupt gestartet werden kann.

Und das muss die wahnsinnig langsame Download-Geschwindigkeit auf den Desktop bringen.

Apache (wie alle Alternativen, lighttpd oder nginx) ist multi-threaded. Der langsamste Teil der Transaktion ist der Download von Apache auf den Desktop. Sie möchten nicht, dass Python-Code (und Django) dies in einer Singlethread-Art verarbeitet. Auch für nur wenige Benutzer.

Sie tun auch nicht, was Django für statische Medien verwendet (d. h. CSS- und JS-Bibliotheksdateien).

Ein einzelner langsamer Punkt in Ihrer Anwendung wird den Gesamtsystemdurchsatz nicht beeinflussen, wenn Apache und mod_wsgi vorhanden sind. Die Ausgabeseite einer Anfrage kann langsam auf einen PC-Desktop parallel zur Ausgabe eines anderen Benutzers heruntergeladen werden.

    
S.Lott 01.02.2011 20:54
quelle
9

Benutze nginx + gunicorn.

Nginx: Fünf Zeilen der Konfiguration. Gunicorn: zwei Linien der Konfiguration. Das ist einfach und effizient. Zur besseren Kontrolle können Sie den Gunicorn-Prozess mit Supervisord spawnen.

Sowohl gunicorn als auch supervisord können mit pip installiert werden, und nginx ist in fast jeder Distribution im Standard-Paket-Pool verfügbar.

    
rewritten 01.02.2011 22:49
quelle
2

Der eingebaute Django-Server wurde nicht für die Produktion gebaut. Es gibt viele Gründe, hauptsächlich Sicherheit und Effizienz. Der empfohlene Weg ist die Verwendung von mod_wsgi, die in der Dokumentation hier

    
sdk900 01.02.2011 21:39
quelle

Tags und Links