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?
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.
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.
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.
Tags und Links django