2010-01-01 17 views
16

मुझे यह जानने में दिलचस्पी है कि लोग अपने केकेपीएचपी अनुप्रयोगों को कैसे तैनात कर रहे हैं। मुझे हाल ही में कुछ फ्रीलांस केकपीएचपी विकास करने के बारे में संपर्क किया गया है, जो मेरे लिए प्रस्तुति स्तर में कुछ अनुभव प्राप्त करने का एक अच्छा अवसर होगा (मेरे एफटी नौकरी में मैं व्यवसाय और दृढ़ता के स्तर में जावा ईई विकास करता हूं)।केकेपीएचपी आवेदन परिनियोजन

मेरे विचार थोड़ा इस बिंदु पर बेतरतीब हैं, लेकिन मैं निम्न परिदृश्यों पर विचार कर रहा हूँ:

  • डेवलपर एक IDE में काम कर रहे एक फ़ाइल है, जो स्वचालित रूप से है (पृष्ठभूमि में) को संशोधित करता है एक साथ सिंक्रनाइज़ विकास वेब सर्वर स्थानीय रूप से चल रहा है। यह परिदृश्य यह है कि मैं आदर्श रूप से विकास कैसे करना चाहूंगा ... परिवर्तन करें और बिना किसी अतिरिक्त कदम के कार्रवाई में बदलाव को देखने में सक्षम हो।

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

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

विकास उपकरण जिन्हें मैं सबसे अधिक आरामदायक हूं, ग्रहण, चींटी और सबवर्जन हैं। मेरी वरीयता उन लोगों का उपयोग जारी रखना है, लेकिन अगर ऐसा करना स्विचिंग पर विचार करेगा तो परिदृश्यों को हासिल करना आसान हो जाता है।

सवाल:

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

एक पोस्ट में इतने सारे प्रश्नों के लिए खेद है, लेकिन मुझे लगता है कि प्रश्न सभी संबंधित हैं और सोचा है कि चर्चा एक ही स्थान पर रखने के लिए उपयोगी होगी।

उत्तर

12

क्या ये उचित परिदृश्य हैं, या मुझे अलग-अलग तरीके से विकास और तैनाती के बारे में सोचना चाहिए?

उचित लगता है, हालांकि एफ़टीपी सिंक्रनाइज़ेशन मुझे ड्रीमवेवर के बारे में सोचता है। :)

एक IDE है कि आप अधिक (एस) एफ़टीपी एक सर्वर से कनेक्ट, या निम्न में से एक का उपयोग करने की अनुमति देता उपयोग पर विचार करें ...

उपकरण क्या मौजूद है कि मदद कर सकते हैं आसान बनाने में विकास/तैनाती? क्या मेरे लिए चींटी, स्क्रिप्ट इत्यादि के साथ अपना खुद का समाधान रोल करना बेहतर होगा?

Jenkins, Capistrano, Phing, चींटी, git push/pull, rsync, आदि

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

cake schema generate और cake schema run update का उपयोग करें।

हम उन संपत्तियों को कैसे कॉन्फ़िगर करते हैं जो तैनाती के बीच भिन्न होते हैं? उदाहरण के लिए विकास के दौरान इस्तेमाल में वृद्धि हुई डिबग और प्रवेश स्तर पर विचार, आदि के विकास के दौरान भुगतान प्रवेश द्वार के लिए भेजे जाने से भुगतान रोकने

नाम फ़ाइलों को तदनुसार (यानी। core.php.prd बनाम core.php.dev) अलग और स्थापित पर नाम बदलें।

एक तैनाती को अपग्रेड या वापस करने से ग्राहकों को कैसे प्रभावित किया जाता है? उदाहरण के लिए यदि वे एक लेनदेन के बीच में हैं (उदाहरण के लिए एक उत्पाद खरीदना)?

तो आपकी एप्लिकेशन फाइलें असंगत स्थिति में समाप्त नहीं होती हैं, आपको एप्लिकेशन की एक नई प्रतिलिपि को नए फ़ोल्डर में जांचकर शुरू करना चाहिए। किसी भी उपयोगकर्ता द्वारा सबमिट की गई फ़ाइलों में प्रतिलिपि बनाएँ, *.prd फ़ाइलों का नाम बदलें, और फिर पुरानी प्रतिलिपि को नई प्रतिलिपि के साथ स्विच करें (सिमलिंक का नाम बदलकर या प्रयोग करके)। सत्र कहीं भी संग्रहीत किया जाना चाहिए जो cake के बजाय अपग्रेड (यानि php या database) से बच जाएगा।

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

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

+0

वैकल्पिक डीबी माइग्रेशन स्क्रिप्ट यहां पाई जा सकती हैं: http://stackoverflow.com/questions/2522372/good-db-migrations-for-cakephp – deizel

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