ग्रिगोर्न और नगीनेक्स के साथ Django की तैनाती


81

यह एक व्यापक प्रश्न है लेकिन मैं एक विहित उत्तर प्राप्त करना चाहूंगा। मैं Django में gunicorn और nginx का उपयोग करके एक साइट को तैनात करने की कोशिश कर रहा हूं । बहुत सारे ट्यूटोरियल पढ़ने के बाद मैं सफल रहा हूं, लेकिन मुझे यकीन नहीं हो रहा है कि मेरे द्वारा उठाए गए कदम किसी समस्या के बिना साइट चलाने के लिए पर्याप्त हैं या शायद इसे करने के बेहतर तरीके हैं। वह अनिश्चितता कष्टप्रद है।

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

  • आपने "सेटअप" को क्या सबसे अच्छा काम करते देखा है? मैंने virtualenv का उपयोग किया और इस वातावरण में अपने Django प्रोजेक्ट को स्थानांतरित किया , हालांकि मैंने एक और सेटअप देखा है जहां वर्चुअल वातावरण के लिए एक फ़ोल्डर है और अन्य प्रोजेक्ट्स के लिए।

  • मैं चीजों को एक तरह से कैसे सेट कर सकता हूं जिससे कई साइटों को एक सर्वर में होस्ट किया जा सके?

  • क्यों कुछ लोग सुझाव देते हैं gunicorn_django -b 0.0.0.0:8000और अन्य लोग सुझाव देते हैं gunicorn_django -b 127.0.0.1:8000? मैंने अमेज़ॅन EC2 उदाहरण में बाद का परीक्षण किया, लेकिन यह काम नहीं किया जबकि पूर्व ने समस्या के बिना काम किया।

  • Nginx की config फाइल के पीछे क्या तर्क है? बहुत सारे अलग-अलग कॉन्फ़िगरेशन फ़ाइलों का उपयोग करके बहुत सारे ट्यूटोरियल हैं जो मुझे उलझन में हैं कि कौन बेहतर है। उदाहरण के लिए, कुछ लोग उपयोग करते हैं alias /path/to/static/folderऔर अन्य root /path/to/static/folder। हो सकता है कि आप अपनी पसंदीदा कॉन्फ़िगरेशन फ़ाइल साझा कर सकें।

  • हम जो सिमलिंक क्यों बना सकता हूँ site-availableऔर sites-enabledमें /etc/nginx?

  • कुछ सर्वोत्तम प्रथाओं का हमेशा स्वागत किया जाता है :-)

धन्यवाद


क्या आप इन nginx और gunicorn / uwsgi के बारे में git पर एक उदाहरण पोस्ट कर सकते हैं। यह मेरे जैसे नए शिक्षार्थियों के लिए अधिक उपयोगी होगा।
शिव

@ शिव वास्तव में, miki725 के उत्तर में कॉन्फ़िगरेशन फ़ाइल का बहुत पूरा नमूना है। यदि आप nginx के साथ क्या चल रहा है, इस पर बहुत गहन परिचय चाहते हैं, तो मैं आपको <a href=" amazon.com/Nginx-HTTP-Server-Cl%C3%A9ment-Nedelcu/dp// bookcraft/rc gunicorn एकीकरण बहुत सरल है इससे उल्लिखित है <a href=" docs.djangoproject.com/en/dev/howto/deployment/wsgi/gunicorn/...>।
रॉबर्ट स्मिथ

जवाबों:


106

आपने "सेटअप" को क्या सबसे अच्छा काम करते देखा है? मैंने virtualenv का उपयोग किया और इस माहौल के अंदर अपनी django परियोजना को स्थानांतरित किया, हालांकि मैंने एक और सेटअप देखा है जहां आभासी वातावरण के लिए एक फ़ोल्डर है और अन्य परियोजनाओं के लिए।

virtualenv पायथन वातावरण को अलग करने का एक तरीका है; जैसे, इसमें तैनाती में खेलने के लिए एक बड़ा हिस्सा नहीं है - हालांकि विकास और परीक्षण के दौरान यह एक आवश्यकता है यदि अत्यधिक अनुशंसित नहीं है।

Virtualenv से आपको जो मूल्य मिलेगा, वह आपको यह सुनिश्चित करने की अनुमति देता है कि आवेदन के लिए पुस्तकालयों के सही संस्करण स्थापित हैं। तो इससे कोई फर्क नहीं पड़ता कि आप वर्चुअल एनवायरनमेंट को कहाँ चिपकाते हैं। बस यह सुनिश्चित करें कि आप इसे स्रोत कोड संस्करण प्रणाली के भाग के रूप में शामिल नहीं करते हैं।

फ़ाइल सिस्टम लेआउट महत्वपूर्ण नहीं है। आप निर्देशिका लेआउट और यहां तक ​​कि कंकाल परियोजनाओं के गुणों को बाहर निकालने वाले बहुत सारे लेख देखेंगे जिन्हें आप एक प्रारंभिक बिंदु के रूप में क्लोन कर सकते हैं। मुझे लगता है कि यह एक कठिन आवश्यकता की तुलना में एक व्यक्तिगत प्राथमिकता है। यकीन है कि यह अच्छा है; लेकिन जब तक आप यह नहीं जानते कि यह आपकी तैनाती प्रक्रिया के लिए कोई मूल्य क्यों नहीं जोड़ता - तो ऐसा न करें क्योंकि कुछ ब्लॉग इसकी अनुशंसा करते हैं जब तक कि यह आपके परिदृश्य के लिए समझ में न आए। उदाहरण के लिए - setup.pyयदि आपके पास कोई निजी PyPi सर्वर नहीं है जो आपके परिनियोजन वर्कफ़्लो का हिस्सा है, तो फ़ाइल बनाने की आवश्यकता नहीं है।

मैं चीजों को एक तरह से कैसे सेट कर सकता हूं जिससे कई साइटों को एक सर्वर में होस्ट किया जा सके?

साइट सेटअप करने के लिए आपको दो काम करने होंगे:

  1. एक सर्वर जो पोर्ट 80 और / या पोर्ट 443 पर सार्वजनिक आईपी पर सुन रहा है यदि आपके पास एसएसएल है।
  2. "प्रक्रियाओं" का एक गुच्छा जो वास्तविक django स्रोत कोड चला रहे हैं।

लोग # 1 के लिए nginx का उपयोग करते हैं क्योंकि इसकी बहुत तेज़ प्रॉक्सी है और यह Apache जैसे व्यापक सर्वर के ओवरहेड के साथ नहीं आता है। यदि आप इसके साथ सहज हैं तो आप अपाचे का उपयोग करने के लिए स्वतंत्र हैं। कोई आवश्यकता नहीं है कि "शहतूत साइटों के लिए, नगनेक्स का उपयोग करें"; आपको बस उस पोर्ट पर सुनने वाली एक सेवा की आवश्यकता है, जो वास्तविक django कोड को चलाने वाली आपकी प्रक्रियाओं को रीडायरेक्ट (प्रॉक्सी) करना जानता है।

# 2 के लिए इन प्रक्रियाओं को शुरू करने के कुछ तरीके हैं। gevent / uwsgi सबसे लोकप्रिय हैं। यहां केवल एक चीज याद रखने की जरूरत नहीं है कि उत्पादन में रनसर का उपयोग न करें

वे परम न्यूनतम आवश्यकताएं हैं। आमतौर पर लोग सभी "django सर्वर" (# 2) को नियंत्रित करने के लिए किसी प्रकार के प्रोसेस मैनेजर को जोड़ते हैं। यहाँ आप देखेंगे upstartऔर supervisorउल्लेख किया है। मैं पर्यवेक्षक को पसंद करता हूं क्योंकि इसे पूरे सिस्टम (अपस्टार्ट के विपरीत) को संभालने की आवश्यकता नहीं है। हालांकि, फिर से - यह एक कठिन आवश्यकता नहीं है । आप पूरी तरह से screenसत्रों का एक समूह चला सकते हैं और उन्हें अलग कर सकते हैं। नकारात्मक पक्ष यह है कि क्या आपके सर्वर को फिर से शुरू करना चाहिए, आपको स्क्रीन सत्रों को फिर से शुरू करना होगा।

व्यक्तिगत रूप से मैं सुझाऊंगा:

  1. # 1 के लिए Nginx
  2. Uwsgi और gunicorn के बीच अपनी पिक लें - मैं uwsgi का उपयोग करता हूं।
  3. बैकएंड प्रक्रियाओं के प्रबंधन के लिए पर्यवेक्षक
  4. आपके द्वारा होस्ट किए जा रहे प्रत्येक एप्लिकेशन के लिए व्यक्तिगत सिस्टम खाते (उपयोगकर्ता)।

मेरे द्वारा # 4 का कारण अनुमतियों को अलग करना है; फिर से, एक आवश्यकता नहीं है।

क्यों कुछ लोग gunicorn_django -b 0.0.0.0:8000 का उपयोग करने का सुझाव देते हैं और अन्य लोग gunicorn_django -b 127.0.0.1:8000 का सुझाव देते हैं? मैंने अमेज़ॅन EC2 उदाहरण में बाद का परीक्षण किया, लेकिन यह काम नहीं किया जबकि पूर्व ने समस्या के बिना काम किया।

0.0.0.0इसका अर्थ है "सभी आईपी पते" - इसका एक मेटा एड्रेस (जो एक प्लेसहोल्डर एड्रेस है)। 127.0.0.1एक आरक्षित पता है जो हमेशा स्थानीय मशीन की ओर इशारा करता है। यही कारण है कि इसका "लोकलहोस्ट" कहा जाता है। यह केवल एक ही सिस्टम पर चलने वाली प्रक्रियाओं के लिए उपलब्ध है।

आमतौर पर आपके पास सार्वजनिक आईपी पते पर सुनने वाले फ्रंट एंड सर्वर (उपरोक्त सूची में # 1) होता है। आपको सर्वर को एक आईपी ​​पते पर स्पष्ट रूप से बांधना चाहिए

हालाँकि, यदि किसी कारण से आप डीएचसीपी पर हैं या आपको नहीं पता है कि आईपी एड्रेस क्या होगा (उदाहरण के लिए, यह एक नया प्रावधान है), तो आप इसे करने के लिए बाध्य करने के लिए nginx / apache / किसी अन्य प्रक्रिया को बता सकते हैं 0.0.0.0यह एक अस्थायी रोक-अंतर उपाय होना चाहिए

उत्पादन सर्वर के लिए आपके पास एक स्थिर आईपी होगा। यदि आपके पास एक गतिशील आईपी (डीएचसीपी) है, तो आप अंदर छोड़ सकते हैं 0.0.0.0। यह बहुत दुर्लभ है कि आपके पास अपने उत्पादन मशीनों के लिए डीएचसीपी होगा।

इस पते पर बाइंडिंग गॉइंसेर / uwsgi उत्पादन में अनुशंसित नहीं है । यदि आप अपनी बैकएंड प्रक्रिया (gunicorn / uwsgi) को बाइंड करते हैं 0.0.0.0, तो यह आपके सीधे-सीधे प्रॉक्सी (nginx / apache / etc) को दरकिनार करते हुए "सीधे" सुलभ हो सकता है; कोई केवल http://your.public.ip.address:9000/आपके आवेदन को सीधे अनुरोध और एक्सेस कर सकता है, खासकर अगर आपका फ्रंट-एंड सर्वर (nginx) और आपका बैक एंड प्रोसेस (django / uwsgi / gevent) एक ही मशीन पर चल रहा हो

आप इसे करने के लिए स्वतंत्र हैं यदि आप एक फ्रंट-एंड प्रॉक्सी सर्वर को चलाने की परेशानी नहीं चाहते हैं।

Nginx की config फाइल के पीछे क्या तर्क है? बहुत सारे अलग-अलग कॉन्फ़िगरेशन फ़ाइलों का उपयोग करके बहुत सारे ट्यूटोरियल हैं जो मैं उलझन में हूं, जिस पर एक बेहतर है। उदाहरण के लिए, कुछ लोग "उपनाम / पथ / से / स्थिर / फ़ोल्डर" और अन्य "रूट / पथ / से / स्थिर / फ़ोल्डर" का उपयोग करते हैं। हो सकता है कि आप अपनी पसंदीदा कॉन्फ़िगरेशन फ़ाइल साझा कर सकें।

सबसे पहले आपको nginx के बारे में पता होना चाहिए कि यह Apache या IIS की तरह वेबसर्वर नहीं है । यह एक छद्म है। इसलिए आपको 'अपस्ट्रीम' / 'डाउनस्ट्रीम' और कई "सर्वर" जैसे विभिन्न शब्द दिखाई देंगे। कुछ समय ले लो और पहले nginx मैनुअल के माध्यम से जाना।

नगीनक्स स्थापित करने के लिए बहुत सारे अलग-अलग तरीके हैं; लेकिन यहां आपके सवाल का एक जवाब aliasबनाम है rootrootएक स्पष्ट निर्देश है जो नगनेक्स के दस्तावेज़ रूट ("होम डायरेक्टरी") को बांधता है। यह वह निर्देशिका है, जब आप बिना किसी पथ के अनुरोध को देखेंगेhttp://www.example.com/

alias"एक निर्देशिका के लिए एक नाम मानचित्र"। अन्य निर्देशिकाएं दस्तावेज़ रूट की उप निर्देशिका नहीं हो सकती हैं

हम साइट-उपलब्ध और साइटों / सक्षम / nginx के बीच एक सहसंबंध क्यों बनाते हैं?

यह डेबियन (और इबुन्तु जैसी डेबियन जैसी प्रणालियों) के लिए कुछ अनूठा है। sites-availableसिस्टम पर सभी वर्चुअल होस्ट / साइटों के लिए कॉन्फ़िगरेशन फ़ाइलों को सूचीबद्ध करता है। उस साइट या वर्चुअल होस्ट sites-enabledको sites-available"एक्टिवेट" करने के लिए एक सिमलिंक । यह कॉन्फ़िगरेशन फ़ाइलों को अलग करने और मेजबानों को आसानी से सक्षम / अक्षम करने का एक तरीका है।


1
बहुत बढ़िया जवाब! बहुत सारे प्रश्न स्पष्ट किए। क्या आप थोड़ा और अधिक विस्तृत कर सकते हैं (या एक उदाहरण जोड़ सकते हैं) कि आप क्या मतलब है स्पष्ट रूप से सर्वर को एक आईपी पते से बांधते हैं और यह कि बाध्यकारी gunicorn / uwsgi 0.0.0.0 के लिए बाध्य होना चाहिए? दुर्भाग्य से, मुझे लगता है कि मैं क्या कर रहा था। धन्यवाद!
रॉबर्ट स्मिथ

7
एक सामान्य कंप्यूटर में कम से कम दो आईपी पते होंगे: 127.0.0.1और वह जो उसे नेटवर्क द्वारा सौंपा गया है; यह न्यूनतम है - आपकी मशीन में कई इंटरफेस और कई आईपी पते हो सकते हैं। आपको अपने वेबसर्वर (या किसी भी प्रक्रिया, वास्तव में) को कॉन्फ़िगर करना चाहिए; एक आईपी ​​पते पर सुनने के लिए - यह मेरा मतलब स्पष्ट होने से है। जब आप बाइंड करते हैं 0.0.0.0, तो आप सभी आईपी पते पर कार्यक्रम को बता रहे हैं, जिसमें कोई नया भी शामिल है जिसे आपकी मशीन को सौंपा जा सकता है । यह विभिन्न कारणों (उनमें से एक होने के नाते सुरक्षा) के लिए अच्छा अभ्यास नहीं है।
बुरहान खालिद

समझ गया। मैंने पहले से ही Gunicorn को ठीक से कॉन्फ़िगर किया है। आपका बहुत बहुत धन्यवाद!
रॉबर्ट स्मिथ

nginx स्थैतिक सामग्री की सेवा कर सकता है।
मैरिन

सर्वर को किस फ़ाइल में पता चलेगा कि हमने सर्वर पते को कॉन्फ़िगर किया है/etc/nginx/sites-enabled
शिव

11

मैं एक परिनियोजन गुरु नहीं हूं, लेकिन जिओगो को जिओवेंट के साथ तैनात करने के लिए अपनी कुछ प्रथाओं को साझा करूंगा (हालांकि गिंकोर्न के समान होना चाहिए)।

virtualenvउन कारणों के लिए बहुत अच्छा है जो मैं नहीं जाऊंगा। मुझे हालांकि virtualenv-wrapper( डॉक्स ) बहुत उपयोगी लगा, खासकर जब आप कई प्रोजेक्ट्स पर काम कर रहे हैं क्योंकि यह विभिन्न वर्चुअन के बीच आसान स्विच करने की अनुमति देता है। यह वास्तव में परिनियोजन वातावरण पर लागू नहीं होता है, लेकिन जब मुझे SSH का उपयोग कर सर्वर पर समस्या निवारण की आवश्यकता होती है, तो मुझे यह बहुत उपयोगी लगा। इसका उपयोग करने का एक और लाभ यह है कि यह virtualenv निर्देशिका का प्रबंधन करता है, इसलिए आपके लिए कम मैनुअल काम करता है। Virtualenvs को डिस्पोजेबल माना जाता है ताकि आपके पास संस्करण समस्याएँ, या कोई अन्य स्थापित समस्याएँ हों, तो आप बस env को डंप कर सकते हैं और एक नया बना सकते हैं। परिणामस्वरूप, वर्चुअलएन के भीतर अपने किसी भी प्रोजेक्ट कोड को शामिल नहीं करना सबसे अच्छा अभ्यास है। इसे अलग रखना चाहिए।

कई साइटों की स्थापना के लिए, virtualenvबहुत ज्यादा जवाब है। आपके पास प्रत्येक प्रोजेक्ट के लिए एक अलग virutalenv होना चाहिए। बस इतना ही कई मुद्दों को हल कर सकता है। फिर जब आप तैनात करते हैं, तो एक अलग पायथन प्रक्रिया विभिन्न साइटों को चलाएगी जो तैनाती के बीच किसी भी संभावित संघर्ष से बचती है। एक उपकरण जिसे मैं विशेष रूप से एक ही सर्वर पर कई साइटों के प्रबंधन में बहुत उपयोगी पाया गया है supervisor( डॉक्स)। यह विभिन्न Django उदाहरणों को शुरू करने, रोकने और पुनः आरंभ करने के लिए एक आसान इंटरफ़ेस प्रदान करता है। यह विफल होने पर या कंप्यूटर के स्टार्ट-अप होने पर एक प्रक्रिया को ऑटो-रीस्टार्ट करने में भी सक्षम है। उदाहरण के लिए, यदि कुछ अपवाद उठाए गए हैं और कुछ भी नहीं पकड़ता है, तो पूरी वेब साइट नीचे जा सकती है। पर्यवेक्षक उसे पकड़ लेगा और Django उदाहरण को स्वचालित रूप से पुनः आरंभ करेगा। निम्नलिखित एक नमूना पर्यवेक्षक कार्यक्रम (एक एकल प्रक्रिया) विन्यास है:

[program:foo]
command=/path/toviertualenv/bin/python deploy.py
directory=/path/where/deploy.py/is/located/
autostart=true
autorestart=true
redirect_stderr=True
user=www

Nginx के लिए, मुझे पता है कि यह पहली बार में भारी हो सकता है। मुझे नग्नेक्स पुस्तक बहुत उपयोगी लगी । यह सभी प्रमुख नगीनेक्स निर्देशों की व्याख्या करता है।

मेरे nginx इंस्टॉल में, मैंने पाया कि nginx.confफ़ाइल में केवल कोर कॉन्फिगर्स को सेटअप करने के लिए सबसे अच्छा अभ्यास है और फिर मेरे पास एक अलग फ़ोल्डर है sitesजहां मैं अपने द्वारा होस्ट की जाने वाली प्रत्येक साइट के लिए nginx कॉन्फिगर रखता हूं। फिर मैंने कोर फोल्डर फाइल में उस फोल्डर की सभी फाइलों को शामिल किया। मैं निर्देश का उपयोग करता हूं include sites/+*.conf;। इस तरह इसमें केवल फ़ोल्डर के +भीतर प्रतीक के साथ शुरू होने वाली फाइलें शामिल हैं sites। इस तरह सिर्फ फ़ाइल नाम से मैं नियंत्रित कर सकता हूं कि कौन सी फाइल को लोड करना है। इसलिए अगर मैं एक निश्चित साइट को निष्क्रिय करना चाहता हूं, तो मुझे बस config फाइल का नाम बदलना होगा और nginx को पुनरारंभ करना होगा। वास्तव में आपके द्वारा अपने प्रश्न में "साइट-उपलब्ध और साइटों-सक्षम / / nginx के बीच सहानुभूति" से क्या मतलब है, यह निश्चित नहीं है क्योंकि वे Apache नाम वाले फ़ोल्डर हैं, लेकिन वे includeनिर्देश के समान कार्य को पूरा करते हैं ।

के रूप में rootऔर aliasनिर्देशों के लिए, वे बहुत ही समान हैं, जहां उनकी जड़ की गणना की जाती है। में alias, जो कुछ भी locationगिरा है, जबकि जड़ में नहीं। छवि है कि आप निम्नलिखित nginx विन्यास है:

location /static {
    alias /some/path/;
}
location /static2 {
    root /some/other/path/;
}

यदि उपयोगकर्ता इन URL पर जाता है, तो nginx सिस्टम पर निम्न स्थानों की फ़ाइलों को देखने का प्रयास करेगा:

/static/hello/world.pdf => /some/path/hello/world.pdf
/static2/hello/world.pdf => /some/other/path/static2/hello/world.pdf

यह नगीनेक्स साइट के लिए एक सरल विन्यास है:

server {
    server_name .foodomain.com;
    listen 80;

    access_log logs/foodomain.log;

    gzip                on;
    gzip_http_version   1.0;
    gzip_comp_level     2;
    gzip_proxied        any;
    gzip_min_length     1100;
    gzip_buffers        16 8k;
    gzip_types          text/plain text/html text/css application/x-javascript text/xml application/xml application/xml+rss text/javascript;

    # Some version of IE 6 don't handle compression well on some mime-types, so just disable for them
    gzip_disable "MSIE [1-6].(?!.*SV1)";

    # Set a vary header so downstream proxies don't send cached gzipped content to IE6
    gzip_vary on;

    location / {
        proxy_read_timeout      30s;
        proxy_pass              http://localhost:8000;
        proxy_set_header        Host                 $host;
        proxy_set_header        User-Agent           $http_user_agent;
        proxy_set_header        X-Real-IP            $remote_addr;
    }

    location /media {
        alias   /path/to/media/;
        expires 1y;
    }

    location /static {
        autoindex on;
        expires   1y;
        alias     /path/to/static/;
    }

     location /favicon.ico {
        alias /path/to/favicon.ico;
    }
}

उम्मीद है कि इससे आपको थोड़ी मदद मिलेगी।


दरअसल, आपका जवाब बहुत मदद करता है! पर्यवेक्षक बहुत अच्छा लगता है और यह उन कुछ चीजों में से एक है जहाँ ब्लॉगर्स के बीच आम सहमति बनती है। आभासी वातावरण और इसके आवरण पर महान सलाह। मुझे मिश्रण में virtualenv-आवरण जोड़ने के लिए लुभाया गया था, लेकिन मैं इस प्रश्न में जटिलता को अनावश्यक रूप से नहीं बढ़ाना चाहता था। साइट-उपलब्ध और साइटों-सक्षम के लिए, nginx में वे निर्देशिकाएँ हैं। आप nginx के लिए अपनी कॉन्फ़िग फ़ाइल कहाँ से बनाते हैं? अपने Django परियोजना के अंदर?
रॉबर्ट स्मिथ

मैं व्यक्तिगत रूप से उन्हें nginx config फ़ोल्डर में है। मेरे मामले में यह है /usr/local/nginx/config/sites। हालांकि यह सुनिश्चित नहीं है कि यह सही या बेहतर तरीका है। मैं उन्हें वहां रखता हूं इसका कारण यह है कि अगर मैं इसे बाहर निकालता हूं, तो किसी तरह मुझे इसे नग्नेक्स में शामिल करना होगा, या तो मैन्युअल रूप से includeनिर्देशन सहित , या सिमिलिंक बनाना होगा। किसी भी मामले में, यह मैनुअल श्रम है, इसलिए मैं इसे मुख्य कॉन्फ़िगरेशन स्थान पर रखता हूं।
miki725

मैं आपके द्वारा अनुशंसित पुस्तक पढ़ रहा हूं :-) यह बहुत अच्छा है और जैसा कि आपको याद होगा, /sites/*.conf इसे करने का एक सुझाया तरीका है। वैसे भी, आपके उत्तर के लिए धन्यवाद।
रॉबर्ट स्मिथ

आपका स्वागत है। पुस्तक के बारे में एक खंड हालांकि मैं बहुत उपयोगी नहीं था कि कैसे नंगो के साथ Django का उपयोग किया जाए। बुक फास्टसी का उपयोग करने की सिफारिश करती है, जो प्रॉक्सी पास का उपयोग करने के रूप में साफ नहीं है। तो आप अध्याय 6.
miki725

मैंने अभी पुस्तक पढ़ना समाप्त किया। यह बहुत अच्छा है। मैं वास्तव में अध्याय 6 को पढ़ता हूं क्योंकि मैं जानना चाहता था कि hoy fastcgi काम करता है, लेकिन आप सही हैं ... यह बहुत उपयोगी नहीं था। धन्यवाद!
रॉबर्ट स्मिथ

2

खैर, जहां तक ​​सर्वोत्तम प्रथाओं का सवाल है, जो आपने अपने प्रश्न में पूछा है, मैं एक ऐसे उपकरण को साझा करने में मदद नहीं कर सकता, जो मेरे लिए चमत्कार का काम करता है, सचमुच! मैं खुद कई साइटों के लिए gunicorn, nginx, पर्यवेक्षक की कई कॉन्फिग फाइलों में उलझ जाता था! लेकिन मैं किसी भी तरह से पूरी प्रक्रिया को स्वचालित करने के लिए तरस रहा था ताकि मैं अपने ऐप / साइट में बदलाव कर सकूं और इसे तुरंत तैनात कर सकूं। इसका नाम django-fagungis है। आप यहाँ Django तैनाती स्वचालन के साथ मेरे अनुभव का विवरण पा सकते हैं । मैंने अभी एक fabfile.py ONCE (django-fagungis फैब्रिक का उपयोग करके पूरी प्रक्रिया को स्वचालित करने के लिए कॉन्फ़िगर किया है और आपके दूरस्थ सर्वर में एक वर्चुअन बनाता है, जो बहुत काम आता हैएक सर्वर पर होस्ट की गई कई साइटों की निर्भरता का प्रबंधन करने के लिए। यह Django प्रोजेक्ट / साइट परिनियोजन को संभालने के लिए nginx, gunicorn और पर्यवेक्षक का उपयोग करता है) और django-fagungis बिटबकेट (जो मैं तोड़फोड़ के लिए उपयोग करता हूं) से मेरी नवीनतम परियोजना को क्लोन करता है और इसे मेरे दूरस्थ सर्वर पर लागू करता है और मुझे सिर्फ शेल पर तीन कमांड दर्ज करनी है मेरे स्थानीय मशीन और यह है कि !! मेरे लिए, यह Django तैनाती के लिए सबसे अच्छा और परेशानी मुक्त अभ्यास बन गया है।


धन्यवाद!। मैं इस पर एक नज़र डालूँगा।
रॉबर्ट स्मिथ

हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.