2011-08-15 14 views
9

के लिए अनुशंसित सेटअप दो सप्ताह के लिए अब मैं अपने कार्यालय में गिट को लागू करने की कोशिश कर रहा हूं। दस्तावेज़ीकरण की कमी के बजाय यह उदाहरणों, ट्यूटोरियल और गिट के विभिन्न उपयोगों की संपत्ति है जिसने मुझे वेब विकास के लिए अनुशंसित सेटअप के रूप में भ्रमित कर दिया है।गिट: वेब विकास

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

  • वर्कस्टेशन एक स्थानीय मचान सर्वर से धक्का
  • स्थानीय मचान सर्वर gitolite साथ काम करता है ठीक से भूमिकाओं
  • एक हुक स्वतः पर मचान सर्वर से किसी भी परिवर्तन धक्का विभाजित करने के लिए: मैं निम्न बातों का ध्यान है enter image description here

    यह आप मतलब: उत्पादन सर्वर (बी)

यह नीचे कल्पना की जाती है? हमारे पास विभिन्न छोटी PHP वेबसाइटें हैं, कुछ भी जटिल नहीं है। मेरे पास संदेह हैं:

  • (बी) के लिए मुझे किस तरह के 'हुक' का उपयोग करना चाहिए?
  • क्या मुझे उत्पादन सर्वर पर गिटोलाइट भी चलाया जाना चाहिए? मुझे लगता है कि मुझे नहीं करना चाहिए, क्योंकि आखिरकार यह केवल एक उपयोगकर्ता है जो सर्वर पर चीजें अपलोड करता है (स्टेजिंग सर्वर पर हुक), लेकिन मुझे यकीन नहीं है।
  • मेरा प्रारंभिक बिंदु यह है: हमारे पास उत्पादन सर्वर पर सभी वेबसाइटें हैं, और अभी तक स्टेजिंग सर्वर और वर्कस्टेशन पर नहीं हैं। शुरुआती सेटअप में, उन्हें स्टेजिंग और वर्कस्टेशन में "खींचने" का एक सुविधाजनक तरीका क्या है?

अब, निम्न सवालों कुछ अतिरिक्त विचारों, अत्यंत का नहीं पल में महत्वपूर्ण हैं, लेकिन अपने विचारों को साझा करता है, तो आप को पता है अधिक होती हैं:

  • सादगी के लिए मैं सक्षम होने के लिए पसंद करते हैं वर्कस्टेशन से git push चलाने के लिए और दोनों स्टेजिंग सर्वर और उत्पादन सर्वर अद्यतन किया गया है। लेकिन कभी-कभी यह स्टेजिंग सर्वर को अपडेट करने और लाइव होने से पहले, वहां पहले चीजों को देखने के लिए उपयोगी हो सकता है। क्या कोई आसान समाधान है?

  • असल में हमारे पास केवल एक ही नहीं बल्कि कई अलग-अलग उत्पादन सर्वर हैं। लेकिन केवल एक स्टेजिंग सर्वर। क्या विभिन्न उत्पादन सर्वर को कॉन्फ़िगर करने का कोई तरीका है ताकि गिट स्वचालित रूप से उन्हें सही सर्वर पर धक्का दे?

आपके विचार साझा करने के लिए अग्रिम धन्यवाद!

+0

उत्पादन सर्वर को धक्का देने के लिए मानदंड क्या हैं? क्या एक विशिष्ट प्रतिबद्ध संदेश के लिए हुक जांच करता है? –

उत्तर

3
  • 'हुक' मैं (बी) के लिए इस्तेमाल करना चाहिए किस तरह का?

आप post-receive or post-update hooks का उपयोग करना चाहिए करने के लिए कि

  • मैं भी उत्पादन सर्वर पर gitolite चलाने चाहिए? मुझे लगता है कि मुझे नहीं करना चाहिए, क्योंकि आखिरकार यह केवल एक उपयोगकर्ता है जो सर्वर पर चीजें अपलोड करता है (स्टेजिंग सर्वर पर हुक), लेकिन मुझे यकीन नहीं है।

कारणों से आप उल्लेख किया है के लिए अनिवार्य नहीं है, लेकिन यह

  • मेरे प्रारंभिक बिंदु चोट नहीं होगा क्योंकि gitolite सेटअप करने के लिए बहुत सरल है: हम पर सभी वेबसाइटों है उत्पादन सर्वर, और अभी तक स्टेजिंग सर्वर पर नहीं और न ही वर्कस्टेशन। शुरुआती सेटअप में, उन्हें स्टेजिंग और वर्कस्टेशन में "खींचने" का एक सुविधाजनक तरीका क्या है?

के लिए उनमें से प्रत्येक आप बस इन आदेशों

cd /path/of/project 
git init 
# optionally create and edit your .gitignore file before the next step 
git add . 
git commit 

और फिर अपने मचान सर्वर से एक git clone आदेश चला निष्पादित कर सकते हैं।

  • सादगी के लिए मैं कार्य केंद्र से Git धक्का चलाने के लिए और दोनों मचान सर्वर और उत्पादन सर्वर अद्यतन के लिए सक्षम होने के लिए पसंद करते हैं। लेकिन कभी-कभी यह स्टेजिंग सर्वर को अपडेट करने और लाइव होने से पहले, वहां पहले चीजों को देखने के लिए उपयोगी हो सकता है। क्या कोई आसान समाधान है?

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

  • असल में हमारे पास केवल एक ही नहीं बल्कि कई अलग-अलग उत्पादन सर्वर हैं। लेकिन केवल एक स्टेजिंग सर्वर। क्या विभिन्न उत्पादन सर्वर को कॉन्फ़िगर करने का कोई तरीका है ताकि गिट स्वचालित रूप से उन्हें सही सर्वर पर धक्का दे?

आप इस परियोजना में कुछ पाठ फ़ाइल में अपने उत्पादन सर्वर पता की दुकान और फिर अपने Git हुक में है कि फ़ाइल की सामग्री इस्तेमाल कर सकते हैं।

+0

धन्यवाद, सब कुछ अच्छा लगता है! मैं इसे आज़मा दूंगा! – user852091

3

आप अपने उत्पादन वेब सर्वर पर एक गिट सर्वर नहीं चलाना चाहते हैं। और आप वास्तव में अपने उत्पादन सर्वर पर अपने गिट रिपोजिटरी फ़ाइलों को नहीं चाहते हैं। व्यक्तिगत रूप से मैं चीजों को सरल रखना पसंद करता हूं और मेरी एससीएम प्रक्रिया के साथ अपनी तैनाती प्रक्रिया को मिश्रित नहीं करता हूं।

तो मुझे लगता है मैं Git के बारे में अपने सवाल का जवाब देने नहीं जा रहा हूँ, लेकिन मैं अपने सभी वेब परियोजनाओं के लिए Git का उपयोग करते हैं, और यहां तैनाती सेटअप के प्रकार मैं का उपयोग करें:

मैं आमतौर पर केवल के लिए Git का उपयोग एससीएम, और रिपॉजिटरीज़ होस्ट करने के लिए एक आंतरिक सर्वर का उपयोग करें (यह स्टेजिंग सर्वर के समान मशीन भी हो सकता है)।

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

# deploy_staging.sh 
rsync -va --delete --exclude-from excludes.txt ./ stagingserver:/htdocs/www.mysite.com/ 

# deploy_prod.sh 
rsync -va --delete --exclude-from excludes.txt ./ realserver:/htdocs/www.mysite.com/ 

# deploy_all.sh 
bash deploy_staging.sh || exit $? 
bash deploy_prod.sh 

# excludes.txt 
.git 
deploy_*.sh 
excludes.txt 

डेवलपर्स कि सर्वर को प्रकाशित करने के लिए अधिकृत कर रहे हैं उनके SSH कुंजियों सर्वर मशीनों पर उचित खातों में जोड़ा है: बैश संस्करण कुछ इस तरह होगा।

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

+1

का जुर्माना आपके रूट में है जब तक कि आपकी जड़ वेब पर न हो। – Kzqai

+0

मैं इसे स्टेजिंग और उत्पादन दोनों पर गिट सर्वर के साथ सेट करने का प्रयास करूंगा, लेकिन यदि यह बहुत मुश्किल हो जाता है तो मुझे लगता है कि आपका समाधान मेरा बचने का मार्ग होगा। धन्यवाद। – user852091

+0

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

3

मेरे पास एक समान सेटअप है और मैं एकाधिक रिमोट का उपयोग करना पसंद करता हूं। तो एक हुक का उपयोग करने के बजाय, मैं रिमोट के रूप में "प्रोड" जोड़ता हूं और रिमोट के रूप में "यूट" भी जोड़ता हूं। इस तरह अगर मैं उत्पादन करने के लिए पुश करने के लिए चाहते हैं, तो मैं कर सकते हैं:

git push prod 
git push uat 
+0

मैं यह भी करता हूं – thinkdevcode

+0

मैं केवल अपने उत्पादन को खींचता हूं, लेकिन यह उपयोगी है कि यह स्वयं का भंडार भी हो। ऐसा इसलिए है क्योंकि गैर-रिबेस पश कभी-कभी उत्पादन रेपो से निपटने के लिए मुश्किल होते हैं। – Kzqai

+0

@ नागरिक कॉन: समझ में आता है, धन्यवाद। हालांकि एक सवाल: क्या यह परेशान नहीं होता है कि आपको दोबारा प्रतिबद्ध करना है - दोनों को उबाऊ और प्रोड? यदि आप धक्का देने से पहले बहुत कम काम करते हैं, तो यह प्रकार की बोल्डिंग हो जाती है, या नहीं? – user852091

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