2009-04-06 10 views
5

अतीत में, मैंने हमेशा अपनी सभी साइटें संपादित की हैं; एक त्रुटि संदेश देखकर मेरे 2 आगंतुकों के बारे में बहुत चिंतित नहीं था।मुझे लाइव वेबसाइट में रोलिंग कोड के लिए अपना विकास पर्यावरण कैसे स्थापित करना चाहिए?

हालांकि, एक दिन ऐसा हो सकता है जब मुझे 2 से अधिक आगंतुक मिलते हैं। मेरे परिवर्तनों का परीक्षण करने और फिर सभी बदलावों को एक साथ रहने के लिए सबसे अच्छा तरीका क्या होगा?

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

मैं विशेष परियोजना के बारे में मैं चिंतित हूँ के लिए CakePHP का उपयोग कर रहा है, लेकिन मुझे पता है कि क्या दृष्टिकोण लोग केक के साथ दोनों ले जा रहे हैं (जो इस के साथ सहायता के लिए उपकरण हो सकता?) उत्सुक हूँ, और बिना एक ढांचा।


मैं SVN, जो महान लग रहा है के लिए सिफारिशें की एक बहुत कुछ हो रही किया गया है, लेकिन दुर्भाग्य से मेरे मेजबान इसका समर्थन नहीं करता: \

+0

आप आपकी लाइव साइट पर SVN चलाने के लिए नहीं है। इसे अपनी विकास मशीन पर स्थानीय रूप से चलाएं और स्थानीय रूप से अपने परिवर्तनों (और परीक्षण) किए जाने के बाद बस बदली गई फ़ाइलों पर प्रतिलिपि बनाएँ। – RodeoClown

+0

+1 रोडियोक्लाउन - और इससे भी बेहतर, यदि आप स्थानीय रूप से एसवीएन चलाते हैं और इसे सार्वजनिक आईपी पर उपलब्ध करा सकते हैं, और आपका आईएसपी एसवीएन क्लाइंट का समर्थन करता है, तो आपके अपडेट को रोल करना 'svn up' – mozboz

+0

कमांड के रूप में सरल है फाइल अपलोड करने के लिए एसवीएन भी? यह बहुत साफ है। मुझे यह और देखना होगा, धन्यवाद दोस्तों – mpen

उत्तर

18

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

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

+0

मैं दूसरा कर दूंगा। यह बेहद मूल्यवान साबित हुआ है, खासकर जब ग्राहकों के साथ काम करना और लाइव होने से पहले उन्हें एक बदलाव दिखाने में सक्षम होना। – jerebear

+0

इसके अलावा, यह हर बार नकल करने और प्रतिलिपि बनाने की परेशानी की तरह प्रतीत हो सकता है लेकिन यह देखने के लिए आपके आगंतुकों के लिए एक स्क्रू डालना कहीं भी बदतर है। – jerebear

+0

यदि आप वर्जन कंट्रोल सॉफ्टवेयर का उपयोग करते हैं तो यह परेशानी से कम है, इसलिए तैनाती की प्रक्रिया सिर्फ आपके सिद्ध कामकाजी कोड को कर रही है और इसे लाइव इंस्टेंस पर रिपोजिटरी से अपडेट कर रही है। – chaos

3

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

एक और वेबसाइट पर मैं बनाए रखने के लिए उपयोग किया जाता था, मैंने थोड़ा अलग रणनीति का उपयोग किया: मैंने साइट के भीतर एक यूआरएल पथ निर्दिष्ट किया जो मूल साइट का विकास संस्करण होगा। यही है, http://www.example.com/devweb आमतौर पर http://www.example.com, http://www.example.com/devweb/foo/bar.php दर्पण करेगा http://www.example.com/foo/bar.php, आदि। मैंने दस्तावेज़ रूट के तहत devweb फ़ोल्डर बनाया है, लेकिन सभी फ़ाइलों की प्रतिलिपि बनाने के बजाय, मैंने सर्वर को कॉन्फ़िगर किया ताकि अगर कोई अनुरोधित फ़ाइल मौजूद न हो /devweb निर्देशिका, यह दस्तावेज़ रूट के तहत इसकी तलाश करेगा। हालांकि, एक अलग विकास सर्वर होने की तुलना में यह एक और नाजुक सेटअप था।

+0

यह और अधिक नाजुक क्यों था? यह एक चालाक समाधान की तरह लगता है। मेरे सर्वर को डुप्लिकेट करने की कोशिश करने से सेट अप करना बहुत आसान होगा। – mpen

+0

मूल रूप से विकास साइट के लिए PHP को एक अलग कॉन्फ़िगरेशन फ़ाइल पढ़ने और लाइव साइट की कॉन्फ़िगरेशन फ़ाइल के साथ विलय करने के लिए थोड़ा सा चालबाजी हुई; इसके अलावा हम छवियों, स्टाइलशीट्स, इंट्रासाइट लिंक इत्यादि के लिए सापेक्ष यूआरएल का उपयोग करने के लिए सीमित थे –

5

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

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

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

+0

+1। किसी प्रकार की वर्जनिंग सिस्टम का उपयोग करना देव से उत्पादन में परिवर्तनों को माइग्रेट करने में इतना समय बचाता है। –

2

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

सभी कोड सबवर्सन में चेक किया गया है, और मैं तो एक सतत एकीकरण सर्वर है - हडसन:

https://hudson.dev.java.net/

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

http://code.google.com/p/xinc/

संपूर्ण URL के लिए के रूप में आप अपनी होस्ट फ़ाइल में हमेशा सेटअप कुछ साइट स्थानीय स्तर पर आपकी मशीन पर बजाय हल कर सकते हैं। यह मेरे लिए काम करता है, सिर्फ बाद में इसे बाहर ले जाना मत भूलना:)

आशा है कि मदद करता है ...

2

मैं php सर्वर चर "सर्वर नाम का उपयोग करता है config/database.php का संस्करण नहीं "यह निर्धारित करने के लिए कि ऐप किस प्रणाली पर चल रहा है। फिर जब मैंने अपने गृह प्रणाली में विकास गिट रेपो को क्लोन किया, तो विकास स्थल (जो लाइव मशीन के समान चश्मा साझा करती है), और लाइव मशीन वे सभी अपने संबंधित डेटाबेस से जुड़ती हैं।

मैंने यहां चिपकाया, लेकिन मुझे यह भी विश्वास है कि यह बेकरी पर उपलब्ध है।

http://pastebin.com/f1a701145

+0

ओह! यह एक बहुत चालाक समाधान है। साझा करने के लिए धन्यवाद :) – mpen

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