2009-04-08 15 views
52

मैं अपने मैकबुक में एक्सएएमपीपी पर अपनी पहली ड्रूपल परियोजना पर काम कर रहा हूं। यह एक प्रोटोटाइप है और मेरे क्लाइंट से सकारात्मक प्रतिक्रिया प्राप्त करता है।सबसे अच्छा ड्रोपल परिनियोजन रणनीति क्या है?

मैं दो हफ्ते बाद एक लिनक्स वीपीएस पर परियोजना को तैनात करने जा रहा हूं। सर्वर पर स्क्रैच से सबकुछ फिर से करने से बेहतर तरीका है?

  • Drupal
  • डाउनलोड मॉड्यूल (CCK, दृश्य, तिथि, कैलेंडर)
  • स्थापित सामग्री
  • बनाने ...

धन्यवाद

+2

प्रश्न 37 ऊपर, 34 तारांकित, उत्तर 39 अप, अब विषय के रूप में बंद ... 3 साल बाद इस सवाल से पूछा गया। Wordless। – ohho

+0

यह प्रश्न शायद [Drupal.SE] (http://drupal.stackexchange.com) पर ले जाया जाना चाहिए। – dotancohen

उत्तर

52

युक्तियां: स्रोत नियंत्रण

  • का प्रयोग करें, नहीं एफ़टीपी/आदि, फ़ाइलों के लिए।। इससे कोई फर्क नहीं पड़ता कि आप क्या उपयोग करते हैं; हम प्रत्येक क्लाइंट के लिए एक Unfuddle.com उपवर्तन खाता को स्पिन करते हैं, इसलिए उनके पास बग लॉग करने के लिए एक जगह भी है, लेकिन महत्वपूर्ण पहला कदम आपकी साइट का पूर्ण स्रोत पेड़ संस्करण नियंत्रण में प्राप्त कर रहा है। जब परीक्षण सर्वर या स्टेजिंग सर्वर पर परिवर्तन किए जाते हैं, तो आप देखते हैं कि वे काम करते हैं, आप प्रतिबद्ध करते हैं, फिर आप लाइव सर्वर पर अपडेट करते हैं। रोलबैक और तैनाती बहुत, बहुत आसान हो जाता है। एकाधिक वेबहेड के क्लस्टर के लिए आप प्रक्रिया को दोहरा सकते हैं, या एक 'कैननिकल' सर्वर से rsync।

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

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

  • डेटाबेस ट्रिकियर हैं; डीवी/स्टेजिंग डीबी को साफ करना और इसे लाइव करने के लिए धक्का देना शुरुआती रोलआउट के लिए सबसे आसान है, लेकिन अगर लाइव साइट पर उपयोगकर्ता भी सामग्री उत्पन्न कर रहे हैं तो वृद्धिशील डीबी अपडेट करते समय कुछ झुर्रियां होती हैं।

मैं Drupal deployment best practices पिछले साल एक प्रस्तुति से किया था। स्लाइड्स को जांचने के लिए स्वतंत्र महसूस करें।

+0

आपकी युक्तियों के लिए धन्यवाद! असल में, मैंने इस प्रश्न पूछने से पहले अपनी प्रस्तुति देखी ;-) मैं विकल्पों की तलाश करता हूं और सुझावों का अनुभव करता हूं। मेरे VPS आपूर्तिकर्ता एक और विकल्प का सुझाव दिया: वर्चुअल उपकरण + rsync + एसक्यूएल डंप/बहाल कि बनाम सीवीएस रास्ते पर कोई भी टिप्पणी ... – ohho

+0

rsync निश्चित रूप से काम कर सकते हैं, हालांकि परियोजनाओं मैं शामिल पर काम का सबसे वितरित टीमों जहां SVN/केंद्रीय सिंकिंग तंत्र के रूप में सीवीएस केवल तैनाती के समय से अधिक मदद करता है। एसक्यूएल डंप/पुनर्स्थापना वह विधि है जिसका उपयोग हम 'लॉन्च' के लिए डीबी आउट को दबाते समय करते हैं, हालांकि चल रहे अपडेट – Eaton

+0

के लिए अन्य विधियों की आवश्यकता है एक बहुत अच्छी प्रस्तुति ईटन। धन्यवाद! –

2

मैं काम नहीं करते Drupal के साथ, लेकिन मैं जूमला के साथ बहुत काम करते हैं। मैं वेब रूट में सभी फ़ाइलों को संग्रहीत करके तैनात करता हूं (मेरे मामले में टैर और gzip, लेकिन आप ज़िप का उपयोग कर सकते हैं) और उसके बाद उत्पादन सर्वर पर उस संग्रह को अपलोड और विस्तारित कर सकते हैं। मैं फिर एक एसक्यूएल डंप लेता हूं (mysqldump -u user -h host -p डेटाबेसबेस> dump.sql), अपलोड करें, और डेटा डालने के लिए रिवर्स कमांड का उपयोग करें (mysql -u produser -h prodDBserver -p prodDatabase < dump.sql)। यदि आपके पास खोल पहुंच नहीं है तो आप एक समय में फ़ाइलों को अपलोड कर सकते हैं और dump.sql आयात करने के लिए एक PHP स्क्रिप्ट लिख सकते हैं।

+0

हाय रिचर्ड, क्या आप इस पर अधिक विस्तृत कर सकते हैं! मैं अभी भी इस पर सबसे अच्छा अभ्यास खोजने की कोशिश कर रहा हूं। धन्यवाद – jtanmay

+4

यह ऐसी वेबसाइट पर काम नहीं करेगा जिसमें उपयोगकर्ता द्वारा उत्पन्न सामग्री है, क्योंकि उपयोगकर्ता द्वारा उत्पन्न सामग्री को देव साइट की प्रति द्वारा अधिलेखित किया जाएगा। रिचर्ड फिन के लिए – Tronathan

+1

-1 और ट्रोनथन के लिए +100। –

0

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

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

माफी मांगना अगर तैनाती आपके लिए पुरानी टोपी है, तो यह अस्पष्ट रूप से अपमानजनक है।

16

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

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

  1. विकास सर्वर पर एक मॉड्यूल स्थापित करें।
  2. ध्यान दें कि कौन से परिवर्तन और अपडेट आवश्यक थे। यदि कोई हिट्स है, तो वापस लौटें और तब तक करें जब तक आपके पास ठोस, त्रुटि रहित प्रक्रिया न हो।
  3. अपने परिवर्तनों का परीक्षण करें! एक सामान्य, लॉग-इन उपयोगकर्ता के रूप में, और फिर एक अज्ञात उपयोगकर्ता के रूप में अपनी परीक्षण प्रक्रिया दोहराएं।
  4. यदि अद्यतन प्रक्रिया में update.php चलाने के अलावा कुछ भी शामिल है, तो इसे करने के लिए एक स्क्रिप्ट लिखें।
  5. उत्पादन डेटाबेस को अपने स्टेजिंग सर्वर पर कॉपी करें, और तुरंत उसी चरण को निष्पादित करें। यदि यह विफल रहता है, विफलता का निदान करें और चरण 1 पर वापस आएं। अन्यथा, जारी रखें।
  6. अपने परिवर्तनों का परीक्षण करें!
  7. अपनी प्रोडक्शन डेटाबेस पर वापस जाएं और आपने एसवीएन से जांच की गई रिव्यूशन का नोट लें।
  8. रखरखाव मोड में अपना उत्पादन ड्रूपल रखें, अपने उत्पादन पेड़ पर "svn अद्यतन" चलाएं, और अपनी अपडेट प्रक्रिया के माध्यम से जाएं।
  9. Drupal रखरखाव मोड से बाहर ले लो और सब कुछ का परीक्षण (व्यवस्थापक, नियमित उपयोगकर्ता, और अनाम के रूप में)

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

5

मुझे आश्चर्य है कि किसी ने भी Deployment मॉड्यूल का उल्लेख नहीं किया है। यहां अपने प्रोजेक्ट पेज से एक अंश दिया गया है:

... उपयोगकर्ताओं को आसानी से एक ड्रूपल साइट से दूसरी सामग्री तक सामग्री को मंचित करने की अनुमति देने के लिए डिज़ाइन किया गया है। तैनाती स्वचालित रूप से इकाइयों (जैसे नोड संदर्भों) के बीच निर्भरताओं का प्रबंधन करता है। यह एक समृद्ध एपीआई बनाने के लिए डिज़ाइन किया गया है जिसे विभिन्न प्रकार की सामग्री स्टेजिंग स्थितियों में आसानी से उपयोग किया जा सकता है।

+0

इसका उल्लेख @ ईटन में किया गया था प्रस्तुति। –

5

हम विशेषताओं को कैप्चर करने के लिए सुविधाओं मॉड्यूल का व्यापक रूप से उपयोग करते हैं और फिर उन्हें उत्पादन साइट पर आसानी से इंस्टॉल करते हैं।

0

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

20

Features।मॉड्यूल Drupal कॉन्फ़िगरेशन परिवर्तनों के प्रबंधन के लिए एक बेहद शक्तिशाली उपकरण है।

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

सुनिश्चित करें कि आप अपनी चर तालिका में संग्रहीत ड्रूपल कॉन्फ़िगरेशन को निर्यात करने के लिए Strongarm.module स्थापित करें। आप uuid_features.module स्थापित करके सुविधाओं में स्थिर सामग्री/नोड्स (यानी: हमारे बारे में, faqs, आदि) भी कर सकते हैं।

हाथ नीचे, यह एक ही साइट पर अन्य डेवलपर्स के साथ काम करने का सबसे अच्छा तरीका है, और अपनी साइट को विकास से टेस्टिंग तक स्टेजिंग और प्रोडक्शन तक ले जाने का सबसे अच्छा तरीका है।

+0

यह वह रास्ता है जो मैं नीचे जा रहा हूं। मुझे लगता है कि यह सबसे आधुनिक समाधान है। ड्रश + फीचर्स + सबवर्जन। मैं हडसन, जेनकींस और फ़िंग भी देख रहा हूं क्योंकि मैंने उन्हें ड्रूपल समुदाय के भीतर उल्लेख किया है। –

1

कोई भी संस्करण नियंत्रण प्रणाली (जीआईटी, एसवीएन) + Features मॉड्यूल ड्रूपल कोड + कस्टम सेटिंग्स (सामग्री प्रकार, कस्टम फ़ील्ड, मॉड्यूल निर्भरता, विचार इत्यादि) को तैनात करने के लिए मॉड्यूल।

Deploy मॉड्यूल अभी भी विकास मोड में है, इसलिए आप अपनी सामग्री/नोड्स को तैनात करने के लिए ड्रूपल 7 में Node export मॉड्यूल का उपयोग करना चाह सकते हैं।

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