2013-03-31 10 views
9

मुझे इसे कम करने के बिना मेरी वेबसाइट पर एक या अधिक फ़ाइलों को अपडेट करने के लिए सबसे अच्छा अभ्यास की आवश्यकता है;वेबसाइट को अपडेट किए बिना अपडेट कैसे करें?

उदाहरण, यदि मैं Model.php फ़ाइल अद्यतन करता हूं, तो अपलोड में सर्वर को फ़ाइल को प्रतिस्थापित करने से पहले एक या दो सेकंड की तरह कुछ सेकंड लगेंगे, इस बीच, वेबसाइट कुछ त्रुटि दिखाएगी जो model.php है नहीं मिला, या पूरा नहीं हुआ, भले ही मैं त्रुटियों को दबा दूं, फिर भी अंततः वेबसाइट मर जाएगी।

इसके लिए सबसे अच्छा अभ्यास क्या है?

+0

डेटाबेस का उपयोग करें। – jeremy

+1

में रखरखाव मोड – ElefantPhace

+0

है यातायात को किसी अस्थायी पृष्ठ पर रीडायरेक्ट कर सकता है? – Songo

उत्तर

10

एक अभ्यास मैं अक्सर इस्तेमाल किया और व्यवहार में देखा है है -

  • उपयोग एक संस्करण नियंत्रण प्रणाली (VCS) SVN की तरह या Git

  • लाइव सर्वर पर, साइट के वेब बनाने संशोधन संख्या के लिए अपनी वेबसाइट के नवीनतम संशोधन (उदाहरण के लिए /www/domain.com/r555) वाली निर्देशिका के लिए एक प्रतीकात्मक लिंक रूट करें। 555

  • जब एक परिवर्तन आता है, VCS

  • में परिवर्तन में जाँच एक स्क्रिप्ट है कि एक नया निर्देशिका के लिए नवीनतम संशोधन बाहर की जाँच करता है, संशोधन नाम (जैसे कि, /www/domain.com/r556)

  • ले जाने की है चेकआउट पूरा होने पर

    , प्रतीकात्मक लिंक बदलें और इसे /www/domain.com/r556 पर इंगित करें। आप फ़ाइल अपलोड और इस तरह आप VCS में नहीं हो सकता है इस तरह गतिशील डेटा है तो

वहाँ कुछ snags हैं, लेकिन वे सभी डाउनटाइम के बिना के साथ निपटा जा सकता है।

डेटाबेस परिवर्तन जैसी चीजें अभी भी किसी प्रकार के रखरखाव मोड की आवश्यकता हो सकती है।

+0

शायद कुछ हद तक digressing ... PHP कोड के साथ डेटाबेस स्कीमा अद्यतन समन्वय के बारे में क्या? – Tucker

+1

मानक प्रक्रिया साइट को रखरखाव मोड में रखना है जबकि स्कीमा परिवर्तन किए जा रहे हैं। कुछ डेटाबेस डिज़ाइन फैंसी-पैंट चीजों जैसे ["नीली हरी" परिनियोजन] (http://martinfowler.com/bliki/BlueGreenDeployment.html) परमिट करते हैं, जहां वास्तव में एप्लिकेशन और डेटाबेस के दो पूर्ण उदाहरण होते हैं, अद्यतन प्रक्रिया के हिस्से के रूप में उनके बीच कटौती करने के लिए। – Charles

+0

काफी अच्छा, धन्यवाद @ पेक्का। – Emad

1

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

यह असामान्य दृष्टिकोण नहीं है क्योंकि लाभ में से एक है अगर कोड में कुछ गड़बड़ है, तो व्यवस्थापक तुरंत 1.0 फ़ोल्डर पर सिमलिंक कर सकता है।

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

0

उपयोगकर्ताओं के लिए कैश की गई प्रतिलिपि रखने के लिए कैशिंग सर्वर/एप्लिकेशन का उपयोग करें। Varnish एक उदाहरण है। आप एक निश्चित समय के लिए सामग्री को कैश करने के लिए वार्निश सेट कर सकते हैं, और वास्तविक वेबसाइट का सर्वर पहुंच योग्य नहीं होने पर वैकल्पिक समय (Model.php not found त्रुटियों और समान) में वैकल्पिक समय हो सकता है।

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

सभी वेब सर्वरों में कुछ कैशिंग सुविधाएं उपलब्ध हैं, लेकिन वार्निश और कैशिंग के लिए बनाई गई हैं।

एक और विकल्प HAProxy जैसे लोड बैलेंसर के पीछे एक ही वेबसाइट के दो या दो से अधिक उदाहरण चलाने के लिए है। एक समय में एक अपडेट करें और HAPROxy उस ट्रैफ़िक को रीडायरेक्ट कर सकता है जिसे आप वर्तमान में अपडेट नहीं कर रहे हैं।

यदि आप सर्वर स्तर कैशिंग या लोड संतुलन पर अधिक जानकारी चाहते हैं तो Server Fault पर जाएं।

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