2011-03-30 8 views
13

मैं एक स्वतंत्र वेब डेवलपर के रूप में शुरू कर रहा हूं और मैंने हाल ही में एक अपेक्षाकृत सरल साइट के लिए उद्धरण देकर एक ग्राहक को डरा दिया जो अपेक्षा से काफी अधिक था। यह मूल रूप से ब्रोशवेयर था कि वे वर्डप्रेस.com या Google साइटों जैसे होस्टेड समाधान में स्वयं को कर सकते थे। एक महत्वपूर्ण विशेषता के अलावा, ने मुझे यह सोचा कि Django एक अच्छा फिट होगा, और कुछ उचित वेब विकास को प्रेरित किया जा सकता है।डीजेगो परियोजनाओं के स्वत: सेटअप और तैनाती के लिए अच्छा उपकरण

जब कार्य मैं अपने मोटे अनुमान में सूचीबद्ध किया है पर देख रहे हैं उस में दिन का अधिकांश सामान है कि इस क्लाइंट की वेबसाइट के लिए विशिष्ट नहीं है देखते हैं कि मेरे लिए बहुत स्पष्ट है। यह मुझे सोच रहा है कि मुझे को Django परियोजनाओं की स्थापना और तैनाती की प्रक्रिया को स्वचालित करने के लिए एक स्क्रिप्ट है।

योग्य कुछ बातें अभी भी तरह मैन्युअल रूप से किया जा करने के लिए होगा:

  • एक नया VPS सेटअप करें (या ज्यादातर मामलों में सिर्फ एक मौजूदा VPS पर VirtualHosts साथ जाना)।

  • क्लाइंटडोमेन.com और test.clientsdomain.com को नए वीपीएस पर इंगित करने के लिए DNS सेटिंग्स संपादित करें।

  • SSH कुंजी

  • संपादित एक config फ़ाइल सेट करें।

स्क्रिप्ट तो सामान करना होगा जैसे:

  • नया VPS पर कुछ आवश्यक संकुल स्थापित

  • स्थापित डिफ़ॉल्ट एक iptables नया VPS पर फ़ायरवॉल

  • जोड़ें clientsdomain.com और test.clientsdomain.com के लिए nginx/apache config

  • वीपीएस पर उत्पादन और परीक्षण के लिए और मेरी स्थानीय मशीन पर विकास के लिए नए अप डेटाबेस सेट अप करें।

  • एक नया Django प्रोजेक्ट बनाएं और इसे बिटबकेट पर रखें।

  • उत्पादन, परीक्षण और विकास के लिए settings.py और local_settings.py सेट करें

  • उत्पादन डेटाबेस के लिए ऑफसाइट backuproutines सेट करें और फ़ाइलों निर्देशिका अपलोड की गई।

  • सक्षम कुछ डिफ़ॉल्ट क्षुधा: flatpages, व्यवस्थापक

  • कुछ बॉयलरप्लेट टेम्पलेट्स, बॉयलरप्लेट flatpages और एक नेविगेशन बार के एक जोड़े जोड़ें।

  • 960 जोड़ें।gs सीएसएस-ढांचे

  • खोज के लिए jQuery

  • djapian या Haystack सेट करें (स्वचालित अद्यतन करने के लिए क्रॉन जॉब सहित) जोड़ें।

  • एक नया Google Analytics प्रोफ़ाइल सेट अप करें।

  • शामिल उत्पादन, परीक्षण और विकास के बीच डेटाबेस को दोहराने के लिए संभावना

  • सेट करें Pingdom निगरानी

मैं Rake और Fabric का उपयोग किया है कुछ इसी तरह (लेकिन कम महत्वाकांक्षी) के लिए में सामान अतीत और मैं सोच रहा हूं कि फैब्रिक भी इस काम के लिए एक बहुत अच्छा फिट हो सकता है, लेकिन मुझे अभी भी आपका इनपुट पसंद आएगा। क्या मुझे अन्य टूल्स देखना चाहिए? मैंने Puppet के बारे में अच्छी बात सुनी है, लेकिन बस अपनी साइट (इसमें एंटरप्राइज़ शब्द शामिल है) को देखकर मुझे यह महसूस होता है कि यह एक व्यक्ति के ऑपरेशन के लिए अधिक हो सकता है।

उत्तर

4

हम वर्तमान में कपड़े + बिल्डआउट के साथ ऐसा करते हैं। अन्य कहते हैं कि शेफ या कठपुतली बेहतर अनुकूल है (और शायद यह है, यदि आप सर्वर स्तर की सामग्री करना चाहते हैं, न केवल ऐप-स्तर)।

Django के लिए

इसके अलावा वहाँ कुछ समर्पित होस्टर जो आप लोड बंद का एक बहुत ले, मैं विशेष रूप से http://ep.io जो हम django-cms के डेमो के लिए हमारी पूरी तरह से स्वचालित deployements शक्ति का उपयोग करना चाहते हैं, तो हो सकता है आप उन होस्टिंग प्रदाता ध्यान देना चाहिए स्वयं को वीपीएस में सीमित करने के बजाय जो आपके लिए अधिक ओवरहेड हैं।

+1

ठीक है, मुझे लगता है कि यह कठपुतली या शेफ को देखने के लायक हो सकता है। – oivvio

+0

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

+0

@olvvio, पूरी तरह से समझते हैं, लेकिन मुझे यह जानकर बहुत अच्छा लगा कि मुझे अपने सर्वरों के बारे में चिंता करने की ज़रूरत नहीं है और कोई जानता है कि वे क्या कर रहे हैं, इसे संभालने में हैं। मुझे अपने सर्वर के बजाय मेरे ऐप के बारे में सोचने के लिए बहुत अधिक समय देता है। – ojii

4

मैं हाल ही में इसी तरह की स्थिति में किसी के रूप में इस पर विचार कर रहा हूं।

आपने जो कुछ भी उल्लेख किया है, उसे कुछ अच्छे कंकाल कोड स्थापित करके मदद की जा सकती है जिसे हर नई परियोजना के लिए गिट से खींचा जा सकता है।

एक सामान्य Django परियोजना कंकाल कोड

http://blog.zacharyvoase.com/2010/02/03/django-project-conventions/

मैं एक साथ कुछ इसी तरह रखा है कि मुझे और चल पाने के लिए जल्दी से अनुमति देता है के लिए एक अच्छा प्रारंभिक बिंदु के लिए इस पर एक नज़र डालें, लेकिन यह भी अलग करने के लिए परियोजना सामान से सर्वर सामान। यह बहुत महत्वपूर्ण है क्योंकि यह आपको सिस्टम/सर्वर फ़ाइलों को शामिल किए बिना प्रत्येक प्रोजेक्ट को वर्जन नियंत्रित करने की अनुमति देता है। It's here (अभी भी बहुत प्रगति पर है)। यह फ़ोल्डर लेआउट, अतिरिक्त सीएसएस, बॉयलरप्लेट एचटीएमएल सामान, ग्रिड/960 सामान, jQuery, उत्पादन सेटिंग्स बनाम विकास, डेटाबेस सेटिंग्स (mostely), डिफ़ॉल्ट इंस्टॉल किए गए एप्लिकेशन आदि यहाँ the layout explained

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

डेटाबेस के संदर्भ में, मैंने विकास डेटाबेस और उत्पादन डेटाबेस पर प्रयास करना बंद कर दिया है विभिन्न मशीनें, आयात/निर्यात फिक्स्चर के लिए बहुत मुश्किल है।अब मेरे पास VPS पर अलग उत्पादन & देव डेटाबेस हैं और विकास करते समय देव को दूरस्थ रूप से (एसएसएच) से कनेक्ट करें। आप आसानी से एक दूसरे को कॉपी कर सकते हैं जो भी अच्छा है।

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

मैं बहुत हो जाएगा इस बारे में अन्य लोगों के विचारों को सुनने में दिलचस्पी है क्योंकि मैं कुछ ख़ूबसूरत पोस्ट करने वाला था!

+0

आपको वर्चुअलएवी फाइलें ~/.virtualenvs की बजाय प्रोजेक्ट के साथ मिश्रित हुई हैं। इसके लिए तर्क क्या है? – oivvio

+0

यकीन नहीं है कि मैं समझता हूँ? Project_root में हैप (और वीसीएस के तहत क्या सबमिट किया गया है) शामिल है। प्रोजेक्ट की जड़ में सबकुछ वर्चुअलएन्व इत्यादि से संबंधित है, लेकिन यह वीसी के लिए सबमिट नहीं किया गया है। –

2

चेक बाहर सिल्क तैनाती है, जो कपड़ा पर आधारित है और Django (या किसी भी WSGI) तैनात करने के लिए प्रयोग किया जाता है + Nginx + Gunicorn:

http://pypi.python.org/pypi/silk-deployment/

8

कठपुतली चुनौतीपूर्ण और छोटी परियोजनाओं के लिए overkill लग सकता है यह है के बाद से अक्सर विशाल तैनाती के लिए उपयोग किया जाता है, लेकिन मैं इसका उपयोग क्लाइंट सर्वर सेटअप के बिना standalone mode में केवल एक मशीन को प्रबंधित करने के लिए करता हूं ताकि मुझे एसएसएल कर्ट और एकाधिक मशीनों से निपटने की ज़रूरत न हो, जो चीजों को बहुत आसान रखती है, लेकिन फिर भी मुझे लाभ जो मैं वास्तव में तेजी से आपदा वसूली कर सकता हूं या बिना किसी प्रयास के अपने होस्टिंग को स्थानांतरित कर सकता हूं। वहाँ कुछ great reasons (idempotency, पार मंच समर्थन, पूर्ण जीवन चक्र प्रबंधन, अमूर्त, संक्षिप्त DSLs) प्रणाली है कि अनिवार्य रूप से स्क्रिप्ट कि एक पाश में या प्लेटफॉर्म है कि आप में बंद पर भरोसा ssh कर रहे हैं से अधिक आधुनिक विन्यास प्रबंधन प्रणाली का उपयोग के लिए है।

उदाहरण और वीएम खेल का मैदान सहित त्वरित रैंप अप के लिए learning puppet देखें। आप सरल कठपुतली स्क्रिप्ट्स (प्रकट) के साथ वास्तव में उपयोगी चीजें प्राप्त कर सकते हैं जो स्टैंडअलोन चलाते हैं, और फिर उन्हें आवश्यकतानुसार सभी उन्नत सुविधाओं को सीखना शुरू कर देते हैं।

एक और अच्छी बात यह है कि बहुत सारे कठपुतली प्रकट होते हैं और मॉड्यूल पहले से ही दूसरों द्वारा लिखे गए हैं, और उन्हें Puppet Forge और कई अन्य advanced Puppet users पर साझा किया जाता है।

+0

प्यार कठपुतली, लेकिन जहां तक ​​मैं कह सकता हूं, कठपुतली फोर्ज * केवल * मॉड्यूल प्रदान करता है, प्रकट नहीं करता है, जो दुर्भाग्यपूर्ण है। –

+0

मैनिफ़ेस्ट्स को केवल थोड़ी सी कॉन्फ़िगरेशन के साथ सही मॉड्यूल की आवश्यकता होती है, और अक्सर आपके सेटअप के लिए विशिष्ट होगी, जबकि मॉड्यूल का पुन: उपयोग किया जाना चाहिए और आपके सेटअप के लिए विशिष्ट नहीं है। मॉड्यूल के रीडमे में विवरण होना चाहिए कि इसे अपने मैनिफेस्ट से कैसे इस्तेमाल किया जाए। आपको गिस्ट्स (https://gist.github.com/rcrowley/701221) में उदाहरण प्रकट करने की अधिक संभावना है, लेकिन किसी भी कोड की तरह आपको एक गिस्ट में मिलते हैं, अगर आप कहीं भी पुन: प्रयोज्य (जैसे मॉड्यूल की तरह) डाल सकते हैं) और इसे वहां कॉल करें आप रखरखाव के लिए लंबे समय तक बेहतर हो जाएंगे। – mmrobins

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