2012-02-24 11 views
5

परियोजना को कैसे तैनात और चलाया जाना चाहिए। इस जगह में बहुत सारे उपकरण हैं। किस का इस्तेमाल किया जाना चाहिए और क्यों?aws पर django प्रोजेक्ट चलाने का सबसे अच्छा तरीका क्या है?

  • पर्यवेक्षक
  • Gunocorn
  • Ngnix
  • कपड़ा
  • Boto
  • पिप
  • virtualenv
  • लोड बैलेंसर्स
+0

ऑफ-विषय, लेकिन आप एजेडब्ल्यू में एक Django परियोजना को तैनात करने और इस बहस के अधिकांश को छोड़ने के लिए हेरोकू का उपयोग करने पर विचार कर सकते हैं। –

उत्तर

11

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

  • उबंटू 11.04
  • वार्निश (स्मृति कैश में) डिस्क से बचने के लिए सर्वर स्थैतिक सामग्री
  • अपाचे सर्वर गतिशील सामग्री के लिए (एमओडी-WSGI) के साथ
  • अजगर 2.7.2 करना चाहता है
  • nginx Django
  • हमारे निरंतर के लिए जेनकींस बनाता संस्करण नियंत्रण
  • कपड़ा च के लिए
  • GIT या तैनाती।

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

उम्मीद है कि इससे मदद मिलती है।

+0

नाइस स्टैक माइकल क्या आपके पास अपने प्रोजेक्ट स्रोत कोड में आपकी Nginx कॉन्फ़िगरेशन है? आपके पायथन परियोजना और धागे की संख्या के संचालन का प्रबंधन क्या है। मेरा मानना ​​है कि सुपरवाइजर और गनोकॉर्न यहां मदद कर सकते हैं। –

+1

ब्याज से, अपगैक्स फ्रंटिंग यूडब्ल्यूएसजीआई की बजाय अपाचे + मॉडडब्लूजीआई और एनजिनक्स का उपयोग करने का क्या कारण है? साथ ही, स्थिर सामग्री के लिए, एस 3 पर होस्ट करने की बजाए ec2 इकाइयां क्यों स्थानांतरित कर रही हैं? क्या कोई प्रदर्शन प्रभाव है? – jvc26

+2

ग्रेट प्वाइंट। हमने Apache/ModWSGI के साथ शुरुआत की, फिर बाद में मिश्रण को NginXinto जोड़ा, अनुमानितता के कारण हम अपाचे को हमारे प्रोड वातावरण में रखना चाहते थे। एस 3 पूरी तरह से भयानक है। हमें क्लाउडफाइल (एस 3 समकक्ष) पर हमारी अधिकांश चीज़ें मिलीं। लेकिन ऐसी स्थिर फाइलें हैं जो हमारे लिए अक्सर बदलती हैं और क्लाउडफाइल आपको <20 मिनट की सीडीएन पर कैशिंग टीटीएल सेट करने की अनुमति नहीं देती है। – Michael

3

माइकल Klockel पहले ही कहा गया आपके विन्यास पर निर्भर करता है के रूप में, मेरे पास है:

  • उबंटू 10.04 LTS
  • Nginx
  • Uwsgi
  • Git संस्करण नियंत्रण
  • अजगर virtualenv और पिप

आप उसे तैनाती सेटिंग्स की जांच कर सकते हैं ई: Django, Virtualenv, nginx + uwsgi import module wsgi error

और कारण है कि मैं nginx uwsgi यहाँ का उपयोग करें और: http://nichol.as/benchmark-of-python-web-servers

इसके अलावा, मैं अनुप्रयोग की तैनाती के लिए कपड़े का उपयोग करें, और एसक्यूएल प्रश्नों और कौवे के लिए एकल http://ericholscher.com/blog/2010/nov/8/building-django-app-server-chef/

जॉनी कैश महाराज और ऐप पर क्या चल रहा है इसका एक लॉग रखने के लिए संत्री।

2

मैं एक प्रदर्शन परिप्रेक्ष्य (मुझे लगता है कि तुलना में पहले से ही एक और जवाब में जोड़ा गया है), पिप और तैनाती के लिए virtualenv से uWSGI+Nginx का उपयोग के रूप में इस बातें आत्म निहित रहता है, और कपड़े या इसी तरह का उपयोग कर साफ तैनाती की सुविधा होगी। संस्करण नियंत्रण के लिए गिट का प्रयोग करें। Jenkins निरंतर एकीकरण को संभाल सकता है। मैं संतुलन के लिए आपके ईसी 2 उदाहरणों के सामने AWS load balancer (ELB) का उपयोग करूंगा - बिना नौकरी के आपके काम को बहुत ज्यादा परेशान करना होगा। django-storages अपनी स्थिर फ़ाइलों को s3 पर अपलोड करने के लिए, जो आपको स्थिर फ़ाइलों को सौंपने के लिए एक और सर्वर रखने का प्रयास बचाता है।

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

संबंधित मुद्दे