Apache oder Nginx zu dienen Django-Anwendungen?
Möchte ich für die Bereitstellung einer Django-web-Anwendung, und daher muss ich wählen, um einen web-server zu dienen, die Python-Dateien.
Sollte ich erwähnen, dass mein Betrieb auf einem einzigen server, der als host für die Datenbank und der Webserver. Als momentum greift, werde ich versuchen, verschieben Sie die Datenbank auf dedizierte server usw.
Hier sind meine Fragen:
- Soll ich verwenden Sie eine web-server-oder zwei? Der hintergrund dieser Frage ist, dass viele Leute empfehlen die Verwendung von NginX zu dienen statische Medien-Dateien und Apache zu dienen, die Python, welches die folgenden Fragen:
- Warum können wir nicht einfach einen server. Ich verstehe, dann kann der Apache möglicherweise ein Tier zu Zeiten, von daher würde ich vermuten, die Menschen, um NginX zu dienen, SOWOHL die statische als auch media-Dateien und python-Dateien.
- Wenn Sie mit einem server, was ist besser, Apache oder NginX. Ich bin erfahren in der Apache, aber ich habe nur gehört, gute Dinge über NginX.
- Was sind die Vorteile der Verwendung von FastCGI als Gegensatz zu mod_wsgi?
Vielen Dank im Voraus
InformationsquelleAutor der Frage Barry Steyn | 2012-02-06
Du musst angemeldet sein, um einen Kommentar abzugeben.
Wenn Sie derzeit keine anderen Seiten, die bereits konfiguriert sind, in eine oder andere Weise, oder Sie benötigen einige spezifische Funktionen, die sich gegenseitig ausschließen, zwischen den verschiedenen Servern, sehe ich keinen Grund für die Verwendung von mehreren Servern. Dies erhöht nur unnötig die Komplexität und Konfiguration.
Wie bei allen "was ist besser" Fragen, dies ist normalerweise eine Frage der Vorliebe. Und um eine konkrete Antwort müssen Sie wahrscheinlich mehr zu Fragen, spezifische Fragen.
Wenn Sie bereits Erfahrungen mit einem bestimmten server und wollen Sie einfach nur einen laufen schnell, dann würde ich vorschlagen, gehen mit, was Sie bereits wissen. Man kann immer wechseln Sie zu einem anderen web-server später.
Auf der anderen Seite ist es eine gute Möglichkeit zu lernen über alternativen.
tl;dr : ich gehen würde, für das, was ist einfacher zu konfigurieren und zu verwalten. Ich persönlich würde für ein nginx und gunicorn, vor allem, weil es ist einfach und es gibt viele Ressourcen zur Verfügung, wenn Sie sollten stecken bleiben.
Ich würde nicht zu viel sorgen über die performance, bis Sie müssen eigentlich. Alle Grundnahrungsmittel web-Server erprobt und getestet, so dass es meist darum geht, die Anforderungen der Anwendung und der tatsächlichen Belastung, die monitoring und Modellierung und Prüfung für die fine-tuning sowieso.
Unterschiede und nutzt zwischen WSGI, CGI, FastCGI, mod_python, in Bezug auf Python?
Artikel zu Lesen, (einige alte, einige neue);
InformationsquelleAutor der Antwort kalvatn
Frage 1) Sie können mit nur einem server, aber für die statischen Medien eine Lösung wie lighttpd oder nginx wird viel schneller sein. Ich würde stick mit Apache wenn Sie wirklich wollen, verwenden Sie nur einen server, es hat all die Flexibilität, die Sie brauchen, und es ist die häufigste webserver.
Frage 2) Abhängig von Ihrem Zweck. Sie finden die Infos hier: Die Bereitstellung von Django (fastcgi, apache, mod_wsgi, uwsgi, gunicorn)
InformationsquelleAutor der Antwort marue
Ich bin mir nicht sicher, wer ist zu empfehlen, dass Sie verwenden beide Nginx und Apache, aber das ist eine schreckliche Idee. Welches Sie wählen, wird entweder einfach zu handeln, da die reverse-proxy, der nur statische Ressourcen und die übergabe alles andere aus, um einen Teilprozess wie uwsgi.
Ich lieber Nginx, denn es ist leicht und extrem schnell aus der box. Apache kann genauso gut sein, erfordert aber aus den Quellen zu übersetzen und genau zu wissen, welche Konfiguration zu verwenden, zu entsprechen, Nginx. Aber Apache hat mehr Funktionen und ist ein bisschen einfacher, mit zu arbeiten. Es ist wirklich bis zu Ihnen und den Anforderungen Ihrer Anwendung.
Jedoch, je nachdem, was Sie wählen, Sie müssen nur eine - nicht beide.
InformationsquelleAutor der Antwort Chris Pratt
Denke ich die beste Wahl ist virtualenv, uwsgi und nginx.
Ich änderte alle meine Server jetzt, und ich bin wirklich zufrieden mit der Leistung.
Hier ist eine gute Anleitung, wie man setup webserver
http://senya.pl/2011/03/sexy-nginx-uwsgi-stack-for-django-with-virtualenv/
InformationsquelleAutor der Antwort nicowernli
InformationsquelleAutor der Antwort risent
Ich habe versucht, Folgen den vorgeschlagenen link von Nicowernli, aber senya.pl unten war in diesem moment.
Dies scheint wie eine gute alternative-tutorial....
Gonna versuchen Sie es, Lesen Sie einfach die ersten 2 Kapitel, aber es scheint sehr vollständige und wirklich Schritt für Schritt:
http://www.abidibo.net/blog/2012/04/30/deploy-django-applications-nginx-uwsgi-virtualenv-south-git-and-fabric-part-1/
InformationsquelleAutor der Antwort michel.iamit
Habe ich verwendet gunicorn + eventlet wie der Python-server und nginx als reverse-proxy mit großem Erfolg. Vor kurzem wechselte ich zu uWSGI und es scheint genauso gut eine Lösung, wenn nicht besser. Ich habe noch zu versuchen, apache und Django obwohl ich war ein apache-Benutzer vor der Verwendung von Django. Hier ist eine gute schreiben, bis auf, bekommen es alle getan: http://radtek.ca/blog/django-production-deployment-via-nginx-and-gunicorn-and-virtualenv/
InformationsquelleAutor der Antwort radtek