2008-10-16 13 views
5

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

हालांकि गलतियों को बनाया जा सकता है। कभी-कभी मैं साइट को रीफ्रेश करना चाहता हूं ताकि मुझे पता चल सके कि साइट कोड और डेटाबेस वास्तव में उपेक्षा में क्या दर्शाता है। मैं एक क्लिक समाधान के करीब जितना संभव हो उतना प्राप्त करना चाहता हूं ताकि यह मूर्खतापूर्ण हो।

ऐसा करने का सबसे अच्छा तरीका क्या है?

बीटीडब्ल्यू, यदि यह महत्वपूर्ण है, तो हम विंडोज मशीनों पर विकसित होते हैं।

उत्तर

7

निर्यात स्वतः ही हर एक के बाद प्रतिबद्ध हुक के साथ प्रतिबद्ध के बाद किया जा सकता है।

1

कोड को जांचने के बारे में क्या है जहां आप इसे चलाने के लिए चाहते हैं?

+0

आप उस कोड को "निर्यात" करने से कहीं अधिक बेहतर होंगे जहां आप इसे चलाने के लिए चाहते हैं, इसलिए आपके पास उन सभी एसएसएन फ़ोल्डर्स नहीं हैं जो आपके वेब सर्वर पर झूठ बोल रहे हैं। – Kibbee

4

मैं आपके उत्पादन सर्वर पर अपना कोड जांचने की अनुशंसा नहीं करता। यह संभावित रूप से सर्वर पर svn नियंत्रण फ़ाइलों (.svn) का पर्दाफाश कर सकता है।

मैं एसवीएन से फ़ाइलों को निर्यात करने और सर्वर पर फ़ाइलों को निर्यात करने के लिए कमांड लाइन svn और FTP क्लाइंट के साथ संयुक्त स्क्रिप्ट (पायथन, रूबी, इत्यादि) का उपयोग करने की अनुशंसा करता हूं। Svn export कमांड को सभी .svn निर्देशिकाओं के बिना svn सर्वर से फ़ाइलों का एक सेट देखने के लिए उपयोग किया जा सकता है। साथ ही, ऐसा करने पर svn भंडार को टैग करना न भूलें ताकि आपके पास तैनात किए गए चेकपॉइंट का चेकपॉइंट हो।

+0

आप एसएसएनएन फ़ोल्डरों के बिना एक स्वच्छ निर्देशिका "चेक आउट" करने के लिए 'svn export' का उपयोग कर सकते हैं। –

1

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

  • अद्यतन कोड और विकास के वातावरण में स्क्रिप्ट के माध्यम से डेटाबेस परिवर्तनों को लागू
  • एक तैनाती परीक्षण वातावरण को लाइव डेटाबेस डाउनलोड करें, यह बहाल करने और परिवर्तन स्क्रिप्ट
  • टेस्ट 'सिंक्रनाइज़' के खिलाफ कोड लागू लाइव डेटाबेस
  • अद्यतन भंडार पर प्रासंगिक शाखा से SVN के माध्यम से लाइव पर्यावरण (हम ssh सुरंग के माध्यम से यह कर के बाद से यह एक Linux वातावरण है) और जीने db
करने के लिए परिवर्तन स्क्रिप्ट लागू

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

आपके 'एक क्लिक' को शायद अंतिम चरण के लिए स्क्रिप्ट किया जा सकता है।

0

मैं सिफारिश करेंगे:

  • प्रत्येक वर्ष अपनी निर्देशिका के निर्माण को कॉपी (त्वरित पुनर्स्थापित के लिए, आप शायद ही इनमें से किसी एक रखने की जरूरत है) अपने सर्वर की एक गैर-वेब-सुलभ भाग में।
  • फिर svn से संपूर्ण नया निर्माण प्राप्त करने के लिए svn export का उपयोग करें। svn checkout का उपयोग न करें, क्योंकि यह सभी जगहों पर .svn निर्देशिका छोड़ देगा।
1

आप सबवर्सन कमांड लाइन ग्राहक स्थापित है, यह एक बैच फ़ाइल/खोल स्क्रिप्ट है कि सर्वर पर एक फ़ोल्डर में भंडार से नवीनतम संशोधन के चेकआउट निर्यात करना होगा बनाने के लिए काफी आसान है। यह आवश्यक है कि आपके पास सर्वर पर होने पर सबवर्सन में एक ही फ़ाइल संरचना हो (हालांकि जब तक आप स्क्रिप्ट में संरचना को बदलने के लिए तर्क जोड़ना नहीं चाहते हैं)।

http://svnbook.red-bean.com/en/1.5/svn.ref.reposhooks.post-commit.html

आप सेटअप हुक स्वचालित रूप से परियोजना क्षेत्र के अंदर छिपा ऑनलाइन परीक्षण के लिए निर्यात करने के लिए कर सकते हैं:

1

मैं अनुशंसा करता हूं कि आप किसी प्रकार की स्क्रिप्ट लिखें जो आपके लिए यह करता है। चाहे आप इसे PHP के साथ करते हैं या कुछ और आपके ऊपर है। जब आप ऐसा करते हैं तो सुरक्षा को ध्यान में रखें।

आपकी प्रोजेक्ट का निर्यात करने से कोई भी svn निर्यात नहीं होगा: बाहरी जो आपने सेट किए हों, जिसका अर्थ है कि आपको कई निर्यात करने की आवश्यकता है। जब आप इसे स्क्रिप्ट करते हैं तो यह निश्चित रूप से एक मुद्दा नहीं होना चाहिए। निर्यात के साथ एक और चीज, यदि आप प्रोजेक्ट बड़ा है (यदि आप बहुत सारे वीडियो, पीडीएफ इत्यादि का उपयोग करते हैं) तो एक निर्यात काफी बोझिल हो सकता है, खासकर जब आपका वर्जन कंट्रोल ऑफ़-साइट होस्ट किया जाता है और केवल HTTP के माध्यम से उपलब्ध होता है।

मैं आपको चेकआउट करने की सलाह देता हूं और सुनिश्चित करता हूं कि आपका सर्वर छुपा .svn फ़ोल्डर्स में स्थित किसी भी फाइल को सेवा नहीं दे सकता है।

2

हम सबवर्सन के माध्यम से तैनात करते हैं और ऐसा करने के लिए डेटाबेस माइग्रेशन टूल (स्कीमा वर्जनिंग के साथ) का उपयोग करते हैं।

(http://blog.lavablast.com/post/2008/02/I2c-for-one2c-welcome-our-new-revision-control-overlords!.aspx)

(हम .NET में विकसित)

0

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

इसके साथ समस्या: पूरी तरह से ताजा निर्यात की वजह से जीवनभर में तैनाती करते समय रुपये हमेशा सभी फाइलों की प्रतिलिपि बनाता है। निर्यात को अद्यतन करने के तरीके को जानने के लिए मैंने वास्तव में समय नहीं लिया।

किसी अन्य मशीन पर मैं सिर्फ एक चेकआउट है और --without .svn

0

आप बीनस्टॉक की जांच की है rsync के साथ तैनात? http://beanstalkapp.com/ यह एक एसवीएन/जीआईटी सर्वर है और इसमें स्वचालित एफ़टीपी परिनियोजन है।