2012-02-24 24 views
7

मुझे आशा है कि कोई यह पुष्टि कर सकता है कि निम्न परिदृश्य वर्डप्रेस साइटों के अपडेट को तैनात करने के साथ कोई समस्या है या नहीं, और यदि ऐसा है, तो क्या आपके पास इसका सर्वोत्तम प्रबंधन करने का समाधान है?Capistrano का उपयोग करते समय तैनात करते समय वर्डप्रेस और प्लगइन्स को अपग्रेड कैसे करें?

मूल बातें:

  • मैं एक स्थानीय विकास वर्डप्रेस एकाधिक परियोजना है जिसके लिए मैं GIT और Capistrano का उपयोग दूरस्थ मचान और उत्पादन सर्वरों के लिए तैनात किया है।
  • सब कुछ अपलोड और blogs.dir निर्देशिकाओं से बाहर ( wp-content में) संस्करण नियंत्रण के अंतर्गत हैं। हां, वर्डप्रेस कोर, थीम, प्लगइन्स इत्यादि स्थानीय रूप से अपडेट किए जाते हैं, प्रतिबद्ध, धक्का और तैनात किए जाते हैं। इसका मतलब यह है कि मैं के लिए लॉग इन करना होगा और शुरू में प्लगइन्स को सक्रिय कि - वे बस Capistrano के माध्यम से स्थापित कर रहे हैं
  • विकास, मचान और उत्पादन कर रहे हैं अलग और पर डेटाबेस को तैनात मैं इन अप
सिंक करने के लिए कोशिश कर रहा है के बारे में चिंतित नहीं हूँ

मेरी चिंता:

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

मेरे सवाल:

  1. उत्पादन और मचान नवीनतम कोड होने, लेकिन किसी भी डेटाबेस नवीनतम कोड सही के लिए आवश्यक अद्यतन लापता सर्वर के बारे में मेरी चिंता का विषय है?
  2. यदि हां, तो क्या किसी के पास विचार है कि मैं कैपिस्ट्रानो प्लगइन को निष्क्रिय/पुनः सक्रिय करने के लिए कोड को कैसे संशोधित कर सकता हूं? WordPress में परिवर्तनों के बारे में क्या, उदाहरण के लिए, 3.2 से 3.3?
  3. तो Capistrano इस के लिए उपकरण नहीं है - और मैं यह करने के लिए अधिक "मैन्युअल" व्यवस्थापक में प्रवेश करके की जरूरत है - वहाँ एक रखरखाव मोड उपकरण/प्लगइन है कि कुछ हद तक का छोड़ना/सक्रियण स्वचालित करेगा है प्लगइन्स ताकि सक्रियण पर कोई अपडेट ट्रिगर हो?

कई धन्यवाद,

मैट

उत्तर

4

यह नोट करना महत्वपूर्ण है कि आप को सक्रिय करने और प्लग-इन को निष्क्रिय करने की जरूरत नहीं है जब आप संस्करण के लिए संस्करण से वर्डप्रेस कोर उन्नयन। Here is an explanation from Ryan Boren on why। प्लगइन के आधार पर, उनमें से कुछ को में अपग्रेड में बनाया गया अपग्रेड प्रक्रिया हो सकती है - अर्थात, प्लगइन का अपग्रेड, वर्डप्रेस का नहीं। कोई भी कम नहीं, मैं आपके तीन प्रश्नों के माध्यम से जाऊंगा और जितना संभव हो उतना उत्तर दे सकता हूं।

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

हाँ, जब अद्यतन करने, अगर वहाँ डेटाबेस स्कीमा में परिवर्तन होता है, तो वर्डप्रेस ठीक से काम नहीं करेंगे जब तक कि नए स्कीमा मौजूद है। वर्डप्रेस के व्यवस्थापक पक्ष तक पहुंचने का प्रयास करते समय, यदि आपके वर्डप्रेस संस्करण की तुलना में डीबी संस्करण कम है, तो यह आपको डेटाबेस अपग्रेड पेज पर रीडायरेक्ट करेगा।

वर्डप्रेस /wp-includes/version.php फ़ाइल में एक वैश्विक $wp_db_version बुलाया सेट और अगले करने के लिए प्रत्येक पिछले संस्करणों से संवर्द्धित डेटाबेस उन्नत करने के लिए जब तक संस्करण संख्या तिथि, seen here पर निर्भर है माइग्रेशन स्क्रिप्ट से प्रत्येक बनाए रखता है। यहां एक एफएक्यू में एक सरल सूची है जो दिखाती है कि संशोधन संख्या WordPress versions. से कैसे संबंधित है।

2. यदि हां, तो क्या किसी के पास विचार है कि मैं प्लगइन्स को निष्क्रिय/पुनः सक्रिय करने के लिए कैपिस्ट्रानो तैनाती कोड कैसे संशोधित कर सकता हूं?

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

हालांकि आपको अलग-अलग मशीनों पर वास्तविक अपग्रेड प्रक्रिया होने के कारण अलग-अलग तैनात वातावरण में अलग-अलग निष्क्रिय/सक्रिय करने की आवश्यकता हो सकती है, और इस प्रकार संभवतया एक अलग डेटाबेस जो इसका अंततः उपयोग किया जाएगा।

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

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

पूरे /wp-admin/includes/plugin.php फ़ाइल के माध्यम से देखो जो आपके लिए उपयोगी हो सकता है देखने के लिए। इसके अतिरिक्त चेकआउट कोड जो /wp-admin/plugins.php में व्यवस्थापक पक्ष में प्लगइन को वास्तव में संभालता है - यह देखने के लिए कि यह कैसे किया जाता है। प्लगइन को डी-एक्टिवेट करते समय $silenttrue के रूप में $silent को गुजरने पर विचार करें, तो deactivate_plugin हुक को प्लगइन के साथ प्लगइन कॉन्फ़िगरेशन से पोंछने से रोकना चाहें।

यह वास्तव में चालाक बनाने के लिए, आप शायद get_option('active_plugins') हड़पने के लिए देखने के लिए, जो प्लग इन पहले से ही सक्रिय थे चाहता हूँ, और केवल (यकीन है कि प्लग इन प्रक्रिया से खुद को शामिल नहीं कर रहे हैं) उन पर अपनी स्क्रिप्ट चलाने

3. वर्डप्रेस में बदलावों के बारे में क्या, उदाहरण के लिए, 3.2 से 3.3?

3.2 से 3.3 के परिवर्तनों को किसी अन्य परिवर्तन के सेट से अलग नहीं माना जाना चाहिए, इसलिए यहां जो भी कहा गया है, वह लागू होता है।

4. यदि Capistrano इस के लिए उपकरण नहीं है - और मैं व्यवस्थापक में प्रवेश करके और अधिक "मैन्युअल" यह करने के लिए की जरूरत है - वहाँ एक रखरखाव मोड उपकरण/प्लगइन है कि कुछ हद तक की निष्क्रियता/सक्रियण स्वचालित करेगा है प्लगइन्स ताकि सक्रियण पर कोई अपडेट ट्रिगर हो?

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

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