डब्ल्यूएसजीआई, सीजीआई, और ढांचे सभी कैसे जुड़े हुए हैं?
अपाचे पोर्ट 80 पर सुनता है। यह HTTP अनुरोध प्राप्त करता है। यह जवाब देने का एक तरीका खोजने का अनुरोध करता है। अपाचे के पास जवाब देने के लिए बहुत सारे विकल्प हैं। जवाब देने का एक तरीका है स्क्रिप्ट चलाने के लिए सीजीआई का उपयोग करना। जवाब देने का एक और तरीका बस एक फाइल की सेवा करना है।
सीजीआई के मामले में, अपाचे एक पर्यावरण तैयार करता है और सीजीआई प्रोटोकॉल के माध्यम से स्क्रिप्ट को आमंत्रित करता है। यह एक मानक यूनिक्स फोर्क/एक्ज़ेक स्थिति है - सीजीआई सबप्रोसेस को सॉकेट और स्टडआउट समेत ओएस पर्यावरण प्राप्त होता है। सीजीआई सबप्रोसेस एक प्रतिक्रिया लिखता है, जो अपाचे पर वापस जाता है; अपाचे ब्राउज़र को यह प्रतिक्रिया भेजता है।
सीजीआई आदिम और कष्टप्रद है। अधिकांशतः क्योंकि यह प्रत्येक अनुरोध के लिए एक उपप्रजाति का त्याग करता है, और उपप्रोसेस को प्रतिक्रिया के अंत को इंगित करने के लिए बाहर निकलना या stdout और stderr को बंद करना होगा।
डब्लूएसजीआई एक इंटरफेस है जो सीजीआई डिजाइन पैटर्न पर आधारित है। यह जरूरी नहीं है कि सीजीआई - प्रत्येक अनुरोध के लिए इसे एक उपप्रजाय को फोर्क नहीं करना पड़ेगा। यह सीजीआई हो सकता है, लेकिन यह होना जरूरी नहीं है।
डब्लूएसजीआई कई महत्वपूर्ण तरीकों से सीजीआई डिजाइन पैटर्न में जोड़ता है। यह आपके लिए HTTP अनुरोध शीर्षलेखों को पार करता है और इन्हें पर्यावरण में जोड़ता है। यह किसी भी पोस्ट-उन्मुख इनपुट को पर्यावरण में फ़ाइल जैसी वस्तु के रूप में प्रदान करता है। यह आपको एक ऐसा फ़ंक्शन भी प्रदान करता है जो आपको फ़ॉर्मेटिंग विवरणों से बचाने के लिए प्रतिक्रिया तैयार करेगा।
यदि मैं वेब ढांचा चलाने के लिए चाहता हूं तो मुझे क्या पता/इंस्टॉल/करने की आवश्यकता है (वेब कहें।पीई या चेरीपी) मेरे मूल सीजीआई विन्यास पर?
याद रखें कि एक उपप्रोसेसर को मजबूती देना महंगा है। इस के आसपास काम करने के दो तरीके हैं।
एंबेडेडmod_wsgi
या mod_python
अपाचे अंदर अजगर को एम्बेड करता है; कोई प्रक्रिया फोर्क नहीं है। अपाचे सीधे Django आवेदन चलाता है।
Daemonmod_wsgi
या mod_fastcgi
अपाचे, एक अलग डेमॉन (या "लंबी चलने वाली प्रक्रिया") के साथ बातचीत करने WSGI प्रोटोकॉल का उपयोग की अनुमति देता है। आप अपनी लंबी दौड़ वाली Django प्रक्रिया शुरू करते हैं, फिर आप इस प्रक्रिया के साथ संवाद करने के लिए अपाचे के mod_fastcgi को कॉन्फ़िगर करते हैं।
ध्यान दें कि mod_wsgi
या तो मोड में काम कर सकते हैं: एम्बेडेड या डेमॉन।
जब आप mod_fastcgi पर पढ़ते हैं, तो आप देखेंगे कि Django mod_fastcgi द्वारा प्रदान की गई जानकारी से WSGI- संगत इंटरफ़ेस बनाने के लिए का उपयोग करता है। पाइपलाइन इस तरह काम करता है।
Apache -> mod_fastcgi -> FLUP (via FastCGI protocol) -> Django (via WSGI protocol)
Django कई इंटरफेस के लिए कई "django.core.handlers" है।
mod_fastcgi के लिए, Django एक manage.py runfcgi
प्रदान करता है जो FLUP और हैंडलर को एकीकृत करता है।
mod_wsgi के लिए, इसके लिए एक कोर हैंडलर है।
WSGI समर्थन कैसे स्थापित करें?
इन निर्देशों का पालन करें।
https://code.google.com/archive/p/modwsgi/wikis/IntegrationWithDjango.wiki
पृष्ठभूमि के लिए इस
http://docs.djangoproject.com/en/dev/howto/deployment/#howto-deployment-index
मैं mod_wsgi स्थापित नहीं कर सकता क्योंकि मैं साझा होस्टिंग पर हूं। मेरे पास एफसीजीआई समर्थन है। मैं अभी भी इसके माध्यम से डब्लूएसजीआई ऐप्स कैसे चला सकता हूं? –
+1 एक उत्कृष्ट उत्तर है और मेरे मन में बहुत सारे प्रश्न हैं (लेकिन सभी नहीं) प्रश्न। यह उत्तर अभी भी पूरा नहीं हुआ है। आपने सीजीआई और डब्लूएसजीआई के बारे में अच्छी तरह से समझाया लेकिन फास्टसीजीआई और डब्लूएसजीआई के बीच संबंध और मतभेद क्या हैं? कौनसा अच्छा है? वो कैसे काम करते है? Mod_python तस्वीर में कैसे आया? – claws
@claws: कृपया यह न पूछें कि "बेहतर" कौन सा है। सवाल मूर्खतापूर्ण है। क्या बेहतर है? सस्ता? और तेज? कम स्मृति का उपयोग करता है? सबसे प्रोग्रामिंग शामिल है? लगभग हर कोई mod_wsgi का उपयोग करता है क्योंकि यह सबकुछ करता है। –