2012-02-06 19 views
32

मैं एक Django वेब एप्लिकेशन को तैनात करना चाहता हूं, और इसलिए मुझे पाइथन फ़ाइलों की सेवा के लिए एक वेब सर्वर चुनना होगा।अपाचे या Nginx?

मुझे यह उल्लेख करना चाहिए कि मेरी उत्पादन साइट एक सर्वर पर होगी, जो डेटाबेस और वेब सर्वर होस्ट करेगा। गति की पसंद के रूप में, मैं समर्पित सर्वर के लिए डेटाबेस को स्थानांतरित करने के उद्देश्य आदि

यहाँ मेरी प्रश्न हैं:

  1. मैं एक वेब सर्वर या दो उपयोग करना चाहिए? इस सवाल का संदर्भ यह है कि बहुत से लोग पाइथन की सेवा के लिए स्थिर मीडिया फाइलों और अपाचे की सेवा के लिए एनजिनएक्स का उपयोग करने की सलाह देते हैं, जो निम्नलिखित प्रश्नों को मानते हैं:
    1. हम केवल एक सर्वर का उपयोग क्यों नहीं कर सकते हैं। मैं समझता हूं कि अपाचे कभी-कभी एक जानवर हो सकता है, इसलिए मुझे संदेह होगा कि लोग दोनों स्थिर मीडिया फाइलों और पायथन फाइलों की सेवा के लिए NginX का उपयोग करें।
    2. यदि एक सर्वर का उपयोग करना है, तो बेहतर है, अपाचे या NginX। मुझे अपाचे में अनुभव हुआ है, लेकिन मैंने NginX के बारे में केवल अच्छी बातें सुनी हैं।
  2. mod_wsgi के विपरीत FastCGI का उपयोग करने के क्या फायदे हैं?

अग्रिम में बहुत धन्यवाद

+2

मेरे अनुभव में, mod_wsgi साथ अपाचे अब तक कम सिर दर्द के साथ आता है। – nullability

+0

@ बेरी आपने क्या किया? ऐसा लगता है कि Django [दस्तावेज़] (https://docs.djangoproject.com/en/1.11/howto/deployment/wsgi/modwsgi/) स्थिर मीडिया और अपाचे के लिए प्राथमिक विकल्प के रूप में Nginx का उपयोग करने का सुझाव देते हैं [प्राथमिक पसंद] (https : Django ऐप्स के लिए //docs.djangoproject.com/en/1.11/topics/install/)। – Anupam

उत्तर

2

प्रश्न 1) आप सिर्फ एक सर्वर का उपयोग कर सकते हैं, लेकिन स्थिर मीडिया की सेवा के लिए lighttpd या nginx की तरह एक समाधान बहुत तेजी से किया जाएगा। अगर आप वास्तव में केवल एक सर्वर का उपयोग करना चाहते हैं, तो मैं अपाचे से चिपके रहूंगा, इसमें आपके लिए आवश्यक सभी लचीलापन है और यह सबसे आम वेबसर्वर है।

प्रश्न 2) आपके उद्देश्य पर निर्भर करता है। आप यहां जानकारी पा सकते हैं: Deploying Django (fastcgi, apache mod_wsgi, uwsgi, gunicorn)

+0

हाय। पायथन की सेवा के लिए NginX का उपयोग क्यों नहीं किया जा सकता - मेरा मतलब है, अगर NginX स्थिर फ़ाइलों के लिए अच्छा है, निश्चित रूप से यह भी Pthon फ़ाइलों के लिए अच्छा होगा। –

+0

इसका उपयोग किया जा सकता है। अपाचे सिर्फ अधिक व्यापक और आम है, इसलिए यदि आप कुछ विशेष मांगों पर ठोकर खा जाते हैं तो आपको परिपक्व समाधान मिल सकता है। दूसरी तरफ क्रिस प्रेट्स के जवाब को भी ध्यान में रखा जाना चाहिए। – marue

0
  1. कम, बेहतर।
  2. Nginx पर Django अनुप्रयोग को तैनात करने का सबसे अच्छा तरीका uwsgi का उपयोग करना है। यह शुद्ध डब्लूएसजीआई है और नए संस्करण Nginx द्वारा समर्थित में बनाया गया है।
2

मुझे यकीन है कि जो आप करने के लिए सिफारिश कर जाती है कि आप दोनों Nginx और अपाचे का उपयोग नहीं कर रहा हूँ, लेकिन यह एक भयानक विचार है। जो भी आप चुनते हैं, या तो केवल रिवर्स प्रॉक्सी के रूप में कार्य करेगा, केवल स्थिर संसाधनों की सेवा करेगा और अन्य सभी को यूवस्गी जैसे उपप्रोसेसर को सौंप देगा।

मैं Nginx पसंद करता हूं क्योंकि यह हल्का वजन और बॉक्स से बेहद तेज़ है। अपाचे उतना ही अच्छा हो सकता है, लेकिन स्रोत से निर्माण की आवश्यकता है और यह जानने के लिए कि निग्नक्स से मेल खाने के लिए वास्तव में किस कॉन्फ़िगरेशन का उपयोग करना है। हालांकि, अपाचे में अधिक सुविधाएं हैं और साथ काम करना थोड़ा आसान है। यह वास्तव में आप पर निर्भर है और आपके आवेदन की जरूरत है।

हालांकि, जो भी आप चुनते हैं, आपको केवल एक की आवश्यकता नहीं है - दोनों नहीं।

+4

अपाचे/mod_wsgi के सामने के अंत के रूप में nginx होने के कारण वास्तव में विभिन्न लाभ होते हैं क्योंकि यह गतिशील पायथन वेब एप्लिकेशन चलाते समय, कम संसाधनों का उपयोग करके अपाचे को बेहतर प्रदर्शन करने की अनुमति देता है। तो यह निश्चित रूप से एक 'भयानक विचार' नहीं है। –

+0

उम्म ... हाँ, यह वास्तव में है। यदि आप पहले से ही nginx चला रहे हैं, तो आपको Django के लिए जरूरी कुछ है जो यूवीजीआई जैसा है, जो कि अपाचे की तुलना में तेजी से और अधिक हल्के वजन के आदेश है। जब आपके पास पहले से कोई अन्य सर्वर रिवर्स प्रॉक्सी के रूप में कार्य करता है तो पूरे अपाचे इंस्टेंस को चलाने का कोई अच्छा कारण नहीं है। –

+1

आप कहने के लिए बहादुर हैं। यहां तक ​​कि यूडब्ल्यूएसजीआई लेखक स्वयं भी दावा नहीं करते हैं। वे जानते हैं कि जब पाइथन के लिए अपाचे ठीक से सेटअप किया जाता है तो इसमें कोई अंतर नहीं होता है। जब आप शीर्ष पर एक वसा पायथन वेब अनुप्रयोग चिपकते हैं तो अंतर भी कम ध्यान देने योग्य होता है। वेब सर्वर परत पर प्रति अनुरोध microseconds में एक बचत कुछ भी नहीं है जब आप मानते हैं कि सबसे अच्छी तरह से ट्यून किए गए पायथन वेब अनुप्रयोग 10 मिलीलीटर मिलीसेकंड के क्रम में प्रतिक्रियाओं के साथ चलते हैं। तो कारण कुछ भी धीमा होने वाला है वेब सर्वर के कारण नहीं होने वाला है जबतक कि आप वास्तव में इसकी कॉन्फ़िगरेशन को खराब नहीं करते। –

2

मुझे लगता है कि सबसे अच्छे विकल्प वर्चुअलएन्व, uwsgi और nginx है। मैंने अब अपने सभी सर्वर बदल दिए हैं और मैं प्रदर्शन से वाकई खुश हूं।

यहाँ आप कैसे करने के लिए सेटअप वेबसर्वर http://senya.pl/2011/03/sexy-nginx-uwsgi-stack-for-django-with-virtualenv/

+0

हाय nicowernli। ट्यूटोरियल के लिंक के लिए धन्यवाद। मेरे पास इस ट्यूटोरियल के इस लेखक के बारे में एक सवाल है कि पैकेज प्रबंधक के माध्यम से बाइनरी पैकेज प्राप्त करने के बजाय स्रोत से सबकुछ संकलित करने के लिए जोर दें (उदा। डीजेंगो और एनजिनएक्स सभी स्रोत से डाउनलोड और संकलित हैं)? –

+0

असल में मैं पाइप का उपयोग करना पसंद करता हूं। यदि आप उबंटू/डेबियन का उपयोग कर रहे हैं तो अपनी उपयुक्त स्रोत सूची में nginx रिपोजिटरी जोड़ें, रिपॉजिटरीज़ से nginx इंस्टॉल करें और फिर वर्चुअलएन्व, uwsgi और Django को स्थापित करने के लिए पीआईपी का उपयोग करें।मैंने इसके लिए एक ट्यूटोरियल लिखा लेकिन स्पेनिश में – nicowernli

+0

आईरॉनिक है, मैं अभी स्पेन में हूं (पाम्प्लोना)। मुझे पता है कि आप शायद दक्षिण अमेरिकी हो सकते हैं, लेकिन ऑफिस पर आप स्पेनिश हैं और नवरा में स्थित हैं, तो तंत्रिका मुझ पर है :) आप योग्यता पर पाइप क्यों पसंद करते हैं? –

0

मैं Nicowernli ने सुझाव दिया कड़ी का अनुसरण करने की कोशिश की, लेकिन senya.pl उस पल में नीचे था पर अच्छा ट्यूटोरियल है। यह एक अच्छा विकल्प ट्यूटोरियल की तरह लगता है .... गोना यह कोशिश, बस पहले 2 अध्याय पढ़, लेकिन बहुत पूरा लगता है और वास्तव में चरण दर चरण:

http://www.abidibo.net/blog/2012/04/30/deploy-django-applications-nginx-uwsgi-virtualenv-south-git-and-fabric-part-1/

0

मैं के रूप में gunicorn + eventlet का इस्तेमाल किया है पाइथन सर्वर, और nginx महान सफलता के साथ रिवर्स प्रॉक्सी के रूप में। हाल ही में मैंने यूडब्ल्यूएसजीआई पर स्विच किया और यह बेहतर नहीं होने पर समाधान के जितना अच्छा लगता है। मैंने अभी तक अपाचे और डीजेगो को आजमाया है हालांकि मैं Django का उपयोग करने से पहले एक अपाचे उपयोगकर्ता था। यह सब कुछ करने के लिए यहां एक अच्छा लिखना है: http://radtek.ca/blog/django-production-deployment-via-nginx-and-gunicorn-and-virtualenv/

7

क्या मुझे एक वेब सर्वर या दो का उपयोग करना चाहिए? इस प्रश्न का संदर्भ है कि बहुत से लोग स्थिर मीडिया फ़ाइलों और पाइथन की सेवा के लिए अपाचे को सेवा देने के लिए NginX का उपयोग करने की सलाह देते हैं, जो निम्न प्रश्नों को मानता है: हम केवल एक सर्वर का उपयोग क्यों नहीं कर सकते हैं। मैं समझता हूं कि अपाचे एक जानवर कभी-कभी हो सकता है, इसलिए मुझे संदेह होगा कि लोग 0,स्थिर मीडिया फ़ाइलों और पायथन फ़ाइलों की सेवा के लिए NginX का उपयोग करें।

आप वर्तमान में कोई अन्य साइटों कि पहले से ही एक ही रास्ता या किसी अन्य रूप में कॉन्फ़िगर किया गया है है, या आपको लगता है कि विभिन्न सर्वरों के बीच परस्पर अनन्य हैं कुछ विशिष्ट सुविधाओं की जरूरत है, मैं कई सर्वरों का उपयोग कर के लिए कोई कारण नहीं देखते हैं। यह सिर्फ अनावश्यक जटिलता और विन्यास जोड़ता है।

यदि एक सर्वर का उपयोग करना है, तो बेहतर है, अपाचे या NginX। मुझे अपाचे में अनुभव हुआ है, लेकिन मैंने NginX के बारे में केवल अच्छी बातें सुनी हैं।

सभी "जो बेहतर है" प्रश्नों के साथ यह आमतौर पर वरीयता का मामला है। और एक विशिष्ट उत्तर पाने के लिए आपको शायद अधिक विशिष्ट प्रश्न पूछने की आवश्यकता है।

यदि आपके पास पहले से ही एक विशिष्ट सर्वर के साथ अनुभव है और आप बस जल्दी से चलना चाहते हैं, तो मैं सुझाव देता हूं कि आप समय के लिए पहले से क्या जानते हैं। आप बाद में किसी अन्य वेब सर्वर पर स्विच कर सकते हैं। दूसरी ओर यह विकल्पों के बारे में जानने का एक अच्छा अवसर है।


tl; डॉ: मैं क्या कॉन्फ़िगर और प्रबंधित करने के लिए आसान है के लिए जाना होगा। व्यक्तिगत रूप से मैं एक nginx और gunicorn के लिए जाना होगा, मुख्य रूप से क्योंकि यह आसान है और अगर आप अटक जाना चाहिए तो बहुत सारे संसाधन उपलब्ध हैं।

मैं प्रदर्शन के बारे में बहुत ज्यादा चिंता नहीं करता जब तक कि आप वास्तव में की आवश्यकता नहीं है। सभी प्रमुख वेब सर्वरों की कोशिश की जाती है और परीक्षण किया जाता है, इसलिए यह अधिकतर आवेदन की आवश्यकताओं और वास्तविक भार के लिए आता है, जिसे किसी भी तरह से ठीक ट्यूनिंग के लिए निगरानी और मॉडलिंग और परीक्षण की आवश्यकता होती है।

mod_wsgi के विपरीत FastCGI का उपयोग करने के क्या फायदे हैं?

Differences and uses between WSGI, CGI, FastCGI, and mod_python in regards to Python?


लेख (कुछ पुराने कुछ नए) को पढ़ने के लिए;