Welches ist das Beste für Django? Lighttpd oder Nginx? Oder vielleicht noch etwas? [geschlossen]

18

Welches von Lighttpd und Nginx ist Ihrer Erfahrung nach besser für Django geeignet? Ich habe beide verwendet und kann kaum einen Unterschied feststellen, sie funktionieren einfach gut ... Gibt es Anwendungsfälle, in denen einer viel besser als der andere wirkt? Berücksichtigen Sie bei der Beantwortung sowohl die Einfachheit der Konfiguration als auch die Effizienz.

Mein übliches Setup besteht darin, einen separaten Django FCGI-Prozess (wie in ./manage.py runfcgi daemonize=false port=8098 host=127.0.0.1) über daemontools oder ein init.dSkript zu starten und lighty / nginx als Reverse-Proxy zu verwenden.

Oh, und wenn Sie der Meinung sind, dass ein anderer http-Server für Django viel besser ist als Lighty und Nginx, zögern Sie bitte nicht, Ihre Gedanken mitzuteilen.

Ryszard Szopa
quelle
Wenn ein fastcgi-Dienst ausfällt, wird er von daemontools supervise innerhalb von fünf Sekunden neu gestartet, sodass der Dienst gesichert wird. Aber Sie haben immer noch eine kleine Verzögerung von Ausfallzeiten. In meinem Einsatz stellte ich fest, dass fastcgi unter leichtem Druck unerwartet brüchig ist. Nach ein paar Ausfallzeiten und einigen umständlichen Telefonanrufen von Kunden habe ich Nginx auf Reverse Proxy für Apache mod_wsgi umgestellt und seitdem summt einfach alles.

Antworten:

14

Sowohl Nginx als auch Lighttpd sind eine bessere Wahl als Apache, wenn es darum geht, sie als Reverse-Proxy für Django, Rails usw. zu verwenden. Beide unterstützen FastCGI- und HTTP-Proxys. Beide bieten ein einzelnes Thread-basiertes Select () - (oder besseres) Modell für eine effiziente Ressourcennutzung.

Mein Votum geht jedoch an Nginx, es hat eine sehr aktive Nutzerbasis (es ist derzeit der Liebling des Ruby on Rails-Sets) und befindet sich in der aktiven Entwicklung. Lighttpd könnte für über 2 Jahre tot gehalten werden und wir warten immer noch auf eine Beta von 1,5.

Dave Cheney
quelle
7

mod_wsgi wird empfohlen, um die Django-Anwendung in die Produktion zu bringen. Apache's mod_wsgi ist viel besser als nginx. Sie können das offizielle Paket (in aktuellen Linux-Distributionen) für nginxs mod_wsgi nicht finden und müssen es selbst kompilieren. Ich mag Nginx, aber wenn Sie auf Nummer sicher gehen wollen, spielen Sie mit Apache mod_wsgi.

miHost
quelle
2
Nginx mod_wsgi ist nicht etwas, das Sie verwenden möchten. Nginx ist am besten geeignet, um statischen Inhalt bereitzustellen und Apache mod_wsgi einen Reverse-Proxy zu geben, um die Dynamik zu generieren. Sie möchten den asynchronen Webserver nicht sowohl zum Generieren dynamischer Seiten als auch zum Bereitstellen statischer Inhalte verwenden. Apache mod_wsgi alleine macht auch nicht viel Sinn. Sie wollen nicht, dass dieses Biest beschäftigt ist, um statische Dateien zu sprühen, während es das schwere Heben erledigen soll. Lesen Sie hier mehr b-list.org/weblog/2008/jun/23/media
5

mod-wsgi ist der beste Weg, um Django-Apps in der Produktion auszuführen, weniger umständlich als fastcgi und ohne Probleme mit den Startzeiten usw.

Das echte Mod-wsgi ist für Apache, aber es gibt ein anderes Mod-wsgi für Nginx. Der Apache ist brillant, ich kann den Nginx nicht kommentieren.

Persönlich würde ich mich von lighttpd fernhalten. Es hat nicht die Stabilität von Nginx, ich habe noch keinen Fall von Lighttpd gesehen, der kein Speicherleck hat.

Grundsätzlich wäre meine erste Wahl Apache 2.2, meine zweite Wahl wäre Nginx.

Glauben Sie nicht dem Hype um Reaktionszeit und Skalierbarkeit. Die Wahrheit ist, es ist einfach egal. (Google benutzt Apache).

Reich
quelle
Google verwendet GWS ( de.wikipedia.org/wiki/Google_Web_Server ) und nicht Apache. Yahoo benutzt Apache, aber es ist eine alte Gabel von 1.3.
Dave Cheney
YouTube benutzt oder benutzt zumindest lighttpd, also denke ich nicht, dass es so schlimm ist. Siehe highscalability.com/youtube-architecture .
Cristian Ciupitu
Ja, aber während GWS ein geheimes Projekt ist, ist bekannt, dass es auf Apache basiert.
Was YT nicht sagt, ist, dass sie ihre eigene Lichtgabel haben. Ist wahr, Lighty hat ein bekanntes Speicherleck-Problem. Ich glaube, sie haben es vielleicht inzwischen behoben, aber der Repräsentant bleibt bestehen.
Abhishek Dujari
2

Ziehen Sie auch die Verwendung von Google App Engine in Betracht. Sie können Ihr Django-Projekt dort kostenlos hosten und müssen sich nicht um die Wartung der Serverinfrastruktur kümmern.

Stephen Hassard
quelle
8
Django auf GAE weist erhebliche Einschränkungen auf, z. B. dass keine der Datenbank- / ORM-Funktionen von Django unterstützt wird. Wenn es unterstützt, was Sie brauchen, großartig - aber überprüfen Sie es sorgfältig!
Ich glaube, dass MySQL jetzt von GAE unterstützt wird, also gehe ich davon aus, dass auch ORM unterstützt wird. Obwohl es wahr ist, habe ich keine Erfahrung damit. Django ohne ORM ist wie Porno ohne Torrents.
Abhishek Dujari