ข้อไหนดีที่สุดสำหรับ Django Lighttpd หรือ Nginx? หรืออาจเป็นอย่างอื่น? [ปิด]


18

Lighttpd และ Nginx ใดที่พิจารณาจากประสบการณ์ของคุณเหมาะสำหรับ Django มากขึ้น ฉันใช้ทั้งสองอย่างและแทบจะไม่สามารถสังเกตเห็นความแตกต่างได้เลยพวกเขาใช้ได้ดี ... มีกรณีการใช้งานเมื่อหนึ่งในนั้นทำงานได้ดีกว่าอีกหรือไม่? เมื่อตอบโปรดคำนึงถึงทั้งความเรียบง่ายของการกำหนดค่าและประสิทธิภาพ

การตั้งค่าปกติของฉันคือการแยกกระบวนการ Django FCGI (เหมือนใน./manage.py runfcgi daemonize=false port=8098 host=127.0.0.1) ออกจาก daemontools หรือinit.dสคริปต์และ lighty / nginx ทำหน้าที่เป็น reverse proxy

โอ้และถ้าคุณรู้สึกว่าเซิร์ฟเวอร์ http อื่น ๆ นั้นดีกว่า Django มากกว่า Lighty และ Nginx โปรดอย่าลังเลที่จะแบ่งปันความคิดของคุณ


หากบริการ fastcgi ตาย daemontools supervise จะรีสตาร์ทภายในห้าวินาทีดังนั้นบริการจะสำรอง แต่คุณยังมีเวลาหยุดทำงานเล็กน้อย ในการใช้งานของฉันฉันพบ fastcgi ที่จะหยุดการเปราะบางโดยไม่คาดคิดภายใต้ความกดดันเล็กน้อย หลังจากหยุดทำงานไปสองสามครั้งและคู่สนทนาทางโทรศัพท์แปลก ๆ จากไคลเอนต์ฉันเปลี่ยน Nginx ให้ย้อนกลับพร็อกซีเป็น Apache mod_wsgi และทุกอย่างก็ฮัมเพลงตั้งแต่นั้นมา

คำตอบ:


14

ทั้ง Nginx และ Lighttpd เป็นตัวเลือกที่ดีกว่า apache เมื่อใช้เป็น reverse proxy สำหรับ Django, Rails และอื่น ๆ ทั้งสองรองรับ FastCGI และ Http proxying ทั้งสองมีแบบจำลองแบบเลือกเธรดเดี่ยว () (หรือดีกว่า) สำหรับการใช้ทรัพยากรอย่างมีประสิทธิภาพ

อย่างไรก็ตามการโหวตของฉันไปที่ Nginx มันมีฐานผู้ใช้ที่ใช้งานได้ดีมาก (ปัจจุบันเป็นที่รักของชุด Ruby on Rails) และอยู่ระหว่างการพัฒนา Lighttpd อาจเข้าใจผิดว่าเป็นคนตาย 2 ปีขึ้นไปและเรายังคงรอเบต้า 1.5 อยู่


7

mod_wsgi แนะนำให้ใช้วิธีรับแอปพลิเคชั่น Django เพื่อการผลิต mod_wsgi ของ Apache ดีกว่า nginx มาก คุณไม่สามารถหาแพ็คเกจอย่างเป็นทางการ (ในการกระจาย Linux ปัจจุบัน) สำหรับ mod_wsgi ของ nginx และคุณจำเป็นต้องรวบรวมมันด้วยตัวเอง ฉันชอบ nginx แต่ถ้าคุณต้องการเล่นอย่างปลอดภัยให้เล่นกับ Apache mod_wsgi


2
Nginx mod_wsgi ไม่ใช่สิ่งที่คุณต้องการใช้ Nginx ที่ดีที่สุดคือการให้บริการเนื้อหาคงที่และย้อนกลับ proxy เพื่อ Apache mod_wsgi เพื่อสร้างแบบไดนามิก คุณไม่ต้องการใช้เว็บเซิร์ฟเวอร์แบบอะซิงโครนัสสำหรับการสร้างหน้าแบบไดนามิกและการให้บริการเนื้อหาแบบคงที่ Apache mod_wsgi บนตัวมันเองก็ไม่ได้ทำให้รู้สึกอะไรมากนัก คุณไม่ต้องการให้สัตว์ร้ายยุ่งกับการฉีดพ่นไฟล์คงที่ในขณะที่มันควรจะยกของหนักขึ้น อ่านเพิ่มเติมได้ที่นี่b-list.org/weblog/2008/jun/23/media

5

mod-wsgi เป็นวิธีที่ดีที่สุดในการเรียกใช้แอพ django ในการผลิตน้อยกว่าเที่ยวยุ่งยิ่ง fastcgi และไม่มีปัญหากับเวลาเริ่มต้น ฯลฯ

mod-wsgi ที่แท้จริงนั้นใช้สำหรับ apache แต่มี mod-wsgi อีกอันสำหรับ nginx หนึ่ง apache นั้นยอดเยี่ยมฉันไม่สามารถแสดงความคิดเห็นบน nginx ได้

โดยส่วนตัวแล้วฉันจะอยู่ห่างจาก lighttpd มันไม่มีเสถียรภาพของ nginx ฉันยังไม่เห็นกรณีของ lighttpd ที่ไม่มีหน่วยความจำรั่ว

โดยทั่วไปตัวเลือกแรกของฉันจะเป็น apache 2.2 ตัวเลือกที่สองของฉันคือ nginx

อย่าเชื่อโฆษณาเกินจริงเกี่ยวกับเวลาตอบสนองและความยืดหยุ่น ความจริงก็คือมันไม่สำคัญ (Google ใช้ Apache)


Google ใช้ GWS ( en.wikipedia.org/wiki/Google_Web_Server ) ไม่ใช่ Apache Yahoo ใช้ Apache แต่เป็นทางแยกที่เก่าแก่ 1.3
Dave Cheney

YouTube ใช้หรืออย่างน้อยก็ใช้ lighttpd ดังนั้นฉันจึงไม่คิดว่ามันแย่ขนาดนั้น ดูhighscalability.com/youtube-architecture
Cristian Ciupitu

ใช่ แต่ในขณะที่ GWS เป็นโครงการลับก็เป็นที่รู้จักกันว่ามันเป็นไปตาม Apache

สิ่งที่ YT ไม่ได้พูดก็คือพวกเขามีส้อมที่สว่าง เป็นเรื่องจริงที่เบามีปัญหาหน่วยความจำรั่วที่รู้จักกันดี ฉันเชื่อว่าพวกเขาอาจแก้ไขได้ในตอนนี้ แต่ตัวแทนยังคงอยู่
Abhishek Dujari

2

ลองใช้ Google App Engine เช่นกัน คุณสามารถโฮสต์โครงการ Django ของคุณได้ฟรีและไม่ต้องกังวลกับการบำรุงรักษาโครงสร้างพื้นฐานของเซิร์ฟเวอร์


8
Django บน GAE มีข้อ จำกัด ที่สำคัญเช่นไม่สนับสนุนคุณสมบัติดาต้าเบส / ORM ใด ๆ ของ Django หากรองรับสิ่งที่คุณต้องการยอดเยี่ยม - แต่ตรวจสอบอย่างระมัดระวัง!

ฉันเชื่อว่า MySQL รองรับโดย GAE ดังนั้นฉันคิดว่า ORM จะดีเช่นกัน แม้ว่าจะเป็นจริงฉันก็ไม่เคยลองเลย Django ที่ไม่มี ORM เป็นเหมือนสื่อลามกที่ไม่มีเพลง
Abhishek Dujari
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.