Który jest najlepszy dla Django? Lighttpd czy Nginx? A może coś innego? [Zamknięte]

18

Który z Lighttpd i Nginx jest, w oparciu o twoje doświadczenie, bardziej odpowiedni dla Django? Użyłem obu i prawie nie zauważam żadnej różnicy, po prostu działają dobrze ... Czy są jakieś przypadki użycia, gdy jeden z nich działa znacznie lepiej niż drugi? Odpowiadając, należy wziąć pod uwagę zarówno prostotę konfiguracji, jak i wydajność.

Moją zwykłą konfiguracją jest uruchomienie osobnego procesu Django FCGI (np. In ./manage.py runfcgi daemonize=false port=8098 host=127.0.0.1) za pomocą daemontools lub init.dskryptu i lighty / nginx działającego jako odwrotne proxy.

Aha, a jeśli uważasz, że inny serwer HTTP jest znacznie lepszy dla Django niż Lighty i Nginx, nie wahaj się podzielić swoimi przemyśleniami.

Ryszard Szopa
źródło
Jeśli usługa fastcgi umrze, nadzór Daemontools uruchomi ją ponownie w ciągu pięciu sekund, więc usługa zostanie ponownie uruchomiona. Ale nadal masz tam niewielkie opóźnienie. W moim wdrożeniu odkryłem, że fastcgi jest delikatne i zatrzymuje się niespodziewanie pod łagodną presją. Po kilku przestojach i kilku niezręcznych telefonach od klientów zmieniłem Nginx na odwrotne proxy na Apache mod_wsgi i odtąd wszystko szumi.

Odpowiedzi:

14

Zarówno Nginx, jak i Lighttpd są lepszym wyborem niż apache, jeśli chodzi o użycie ich jako odwrotnego proxy dla Django, Railsów itp. Oba obsługują proxy FastCGI i HTTP. Oba oferują model oparty na pojedynczym wątku select () (lub lepszym) w celu efektywnego wykorzystania zasobów.

Jednak mój głos należy do Nginx, ma bardzo aktywną bazę użytkowników (obecnie jest to ulubieniec zestawu Ruby on Rails) i jest w fazie rozwoju. Lighttpd można pomylić z tym, że nie żyje od ponad 2 lat, a my wciąż czekamy na wersję beta 1,5.

Dave Cheney
źródło
7

mod_wsgi jest zalecanym sposobem na uruchomienie aplikacji Django w produkcji. Mod_wsgi Apache jest znacznie lepszy niż nginx. Nie możesz znaleźć oficjalnego pakietu (w obecnych dystrybucjach Linuksa) dla mod_wsgi nginx i musisz go skompilować samodzielnie. Lubię nginx, ale jeśli chcesz grać bezpiecznie, zagraj z Apache mod_wsgi.

miHost
źródło
2
Nginx mod_wsgi nie jest czymś, czego chciałbyś użyć. Nginx najlepiej jest podawać zawartość statyczną i odwrócić proxy do Apache mod_wsgi w celu wygenerowania dynamiki. Nie chcesz używać asynchronicznego serwera WWW do generowania stron dynamicznych i udostępniania treści statycznych. Apache sam mod_wsgi też nie ma większego sensu. Nie chcesz, aby ta bestia była zajęta opryskiwaniem plików statycznych, podczas gdy powinna ona wykonywać ciężkie podnoszenie. Przeczytaj więcej tutaj b-list.org/weblog/2008/jun/23/media
5

mod-wsgi to najlepszy sposób na uruchomienie aplikacji django w środowisku produkcyjnym, mniej kłopotliwy niż fastcgi i bez problemów z czasem uruchomienia itp.

Prawdziwy mod-wsgi jest dla apache, ale jest inny mod-wsgi dla nginx. Apache jest genialny, nie mogę komentować nginxa.

Osobiście trzymałbym się z dala od lighttpd. Nie ma stabilności nginx, nie widziałem jeszcze przypadku lighttpd, który nie ma przecieku pamięci.

Zasadniczo moim pierwszym wyborem będzie apache 2.2, moim drugim wyborem będzie nginx.

Nie wierz w szum o czasie reakcji i skalowalności. Prawda jest taka, że ​​to nie ma znaczenia. (Google używa Apache).

Bogaty
źródło
Google używa GWS ( en.wikipedia.org/wiki/Google_Web_Server ) nie Apache. Yahoo używa Apache, ale jest to starożytny rozwidlenie 1.3.
Dave Cheney
YouTube używa lub przynajmniej używa lighttpd, więc nie sądzę, że jest tak źle. Zobacz highscalability.com/youtube-architecture .
Cristian Ciupitu
Tak, ale chociaż GWS jest tajnym projektem, wiadomo, że opiera się na Apache.
YT nie mówi, że mają swój własny widelec światła. Czy to prawda, że ​​ma dobrze znany problem wycieku pamięci. Wydaje mi się, że już to naprawili, ale przedstawiciel się utrzymuje.
Abhishek Dujari
2

Rozważ też użycie Google App Engine. Możesz hostować tam swój projekt Django za darmo i nie musisz się martwić o utrzymanie infrastruktury serwera.

Stephen Hassard
źródło
8
Django na GAE ma znaczące ograniczenia, takie jak brak obsługi żadnej z funkcji bazy danych / ORM Django. Jeśli obsługuje to, czego potrzebujesz, świetnie - ale sprawdź dokładnie!
Wierzę, że MySQL jest teraz obsługiwany przez GAE, więc zakładam, że ORM również będzie. Chociaż to prawda, nie mam doświadczenia w jej wypróbowywaniu. Django bez ORM jest jak porno bez torrentów.
Abhishek Dujari,