2009-03-14 8 views
11

मैं एक साइट, Django पर चल रहा है (लेकिन सवाल कुछ भी, php, आदि पर लागू होता है)क्या मुझे वेबसाइटों को तैनात करने के लिए गिट का उपयोग करना चाहिए?

वर्तमान में मैं unison उपयोग कर रहा हूँ मेरे परिवर्तन तैनात करने के लिए, और मैं (थोड़े करते थे) यह क्योंकि है कि मैं पहले प्यार मैन्युअल रूप से कर रहा था !!

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

इस तरह मेरे पास मेरे परिवर्तनों को वापस करने में सक्षम होने का अतिरिक्त लाभ होगा यदि किसी तरह उन्हें तैनात करना आपदा हो गया है!

सवाल यह है:

  • Git वेबसाइटों की तैनाती के लिए उपयुक्त है?

  • कोई चीज/समस्या/गठिया जो मुझे अवगत होना चाहिए?

उत्तर

16

मैं Git का उपयोग मेरी वेबसाइट ट्रैक करने के लिए, और मैं इसे इस तरह की तैनाती:

git archive --format=tar --prefix="homepage/" master | gzip | ssh webserver "tar xvz -C ~/public_html" 

यह थोड़ा स्पष्टीकरण के योग्य है।गिट के लिए संग्रह कमांड मास्टर शाखा के लिए फ़ाइलों को निर्यात करेगा, जो नेटवर्क यातायात को कम करने के लिए gzip के साथ संपीड़ित हो जाता है। इसे एसएसएच पर दूरस्थ रूप से प्राप्त किया गया है, जो अंतिम गंतव्य निर्देशिका में डिकंप्रेस किया गया है।

मैं जिस तैनाती स्क्रिप्ट का उपयोग करता हूं वह थोड़ा और आगे बढ़ रहा है, लेकिन यह सबसे महत्वपूर्ण टुकड़ा है।

+0

सर्वर से फ़ाइलों को निकालने के लिए आप कैसे व्यवस्थित करते हैं? क्या 'rsync' टैर-स्टाइल इनपुट ले सकता है? – mjs

+0

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

+0

अब तक मैं एकजुट भी उपयोग करता हूं। इसका लाभ है, कि दोनों तरफ से परिवर्तन स्वचालित रूप से सिंक हो जाते हैं (सिवाय इसके कि दोनों तरफ एक ही फाइल बदल दी गई है)। मैं भी सर्वर पर गिट परिनियोजन पर स्विच करना चाहता हूं। लेकिन ऐसा नहीं है। सर्वर पर एक गिट चेकआउट चलाया जाता है। कोड गिट पुल द्वारा अद्यतन हो जाता है। – guettli

5

ठीक है, मैं अपनी वेबसाइट को तैनात करने के लिए एसवीएन का उपयोग करता हूं, इसलिए मैं इसके लिए कहूंगा! ध्यान रखें कि जब भी आप वेबसाइट के लिए कोड अपडेट करते हैं तो आपको सर्वर को पुनरारंभ/पुनः लोड करना पड़ सकता है (मुझे यकीन नहीं है कि Django या जो कुछ भी आप इसे चला रहे हैं वह उस पर काम करने में सक्षम है)।

+0

संदर्भ के लिए: यह सीधे django नहीं है जो यह नियंत्रित करता है कि सर्वर को पुनः लोड करने की आवश्यकता है, लेकिन सर्वर-पायथन पुल। अपाचे-डब्ल्यू/-मोडपीथॉन कॉन्फ़िगरेशन में, पायथन कोड में परिवर्तनों को एक अपाचे पुनरारंभ करने की आवश्यकता होती है, टेम्पलेट्स में परिवर्तन (या स्थिर फाइलें) नहीं होती हैं। ओआरएम परिवर्तनों की आवश्यकता बहुत अधिक है। –

+0

तकनीकी रूप से mod_python का कस्टम आयातक सर्वर पुनरारंभ किए बिना पाइथन कोड को फिर से लोड कर सकता है, लेकिन मैं आमतौर पर सुरक्षित होने के लिए फिर से शुरू करता हूं। –

9

यदि प्रश्न यह है कि यदि आप अपने django एप्लिकेशन को तैनात करने के लिए गिट का उपयोग कर सकते हैं, तो जवाब निश्चित है!

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

आपकी तैनाती प्रक्रिया के हिस्से के रूप में आप अपने कोड बेस को पूरी तरह से बैक अप लेना चाहते हैं ताकि आप किसी भी संस्करण को वापस रोलबैक कर सकें।

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

हालांकि Capistrano एक रूबी आधारित तैनाती आमतौर पर रेल के साथ इस्तेमाल किया उपकरण है, यह अपने स्वचालन क्षमताओं के मामले में नास्तिक है। इंटरनेट पर कई पोस्ट हैं जो कैपिस्ट्रानो (google - django capistrano) के साथ Django ऐप्स को तैनात करने के लाभों पर चर्चा करती हैं।

तुम भी जाँच कर सकते हैं check out this link here

+0

मुझे लगता है कि आप इसे जटिल बना रहे हैं .. सवाल कभी भी लोकप्रिय/जटिल व्यावसायिक वेबसाइटों जैसा कुछ भी नहीं बताता है .. लेकिन, कैपिस्ट्रानो एक अच्छा सुझाव है – dbr

9

आप Fabric पर एक नज़र, Djangonauts के बीच लोकप्रिय ले जा सकते हैं ...

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