2011-06-03 23 views
25

अतीत में, मैं एक बहुत ही शौकिया फैशन में विकसित हो रहा हूं, जिसका अर्थ है कि मेरे पास एक स्थानीय मशीन थी जहां मैंने कोड और एक उत्पादन मशीन विकसित की और परीक्षण किया जिस पर मैंने कोड पूरा किया था। हाल ही में मैंने इसे थोड़ा सा संशोधित किया जहां मैंने स्थानीय रूप से विकसित किया, एसवीएन में कोड की जांच की और फिर एसवीएन के माध्यम से उत्पादन मशीन को अपडेट किया।PHP कोड परिनियोजन युक्तियाँ

अब मैं एक नई परियोजना शुरू करना चाहता हूं और अपना वर्कफ़्लो सुधारना चाहता हूं। आदर्श रूप में मैं निम्न बातों का ध्यान था:

  • एक या अधिक स्थानीय देव वातावरण
  • का विकास करना और स्थानीय मशीन (रों)
  • उपयोग SVN (या Git) पर परीक्षण कोड भंडार के रूप में है
  • उपयोग एक नए वातावरण (या तो देव, स्टेजिंग या उत्पादन) को स्थापित करने के लिए टूल बनाएं और कोड

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

  • विभिन्न सेटिंग्स के साथ विभिन्न प्रकार के सर्वरों पर तैनाती (उदा। देव विभिन्न डीबी, डीबी पासवर्ड, उत्पादन या स्टेजिंग से PHP त्रुटि रिपोर्टिंग का उपयोग करता है)।
  • परिनियोजन जो स्वचालित रूप से एसवीएन से कोड खींचता है।
  • परिनियोजन जो अस्थायी रूप से उत्पादन वातावरण के लिए "रखरखाव" पृष्ठ सेट करता है।
  • एक बार जब मैंने उपरोक्त महारत हासिल की, तो बिल्ड प्रक्रिया में कुछ परीक्षण भी कर सकते हैं।

मुझे पता है कि मेरा प्रश्न काफी उलझन में लग सकता है ... मैं मानता हूं, मैं इसके लिए नया हूं और वास्तव में मुझे जो चाहिए वह लक्ष्य से थोड़ा दूर हो सकता है। यही कारण है कि किसी भी मदद की सराहना की है।

+0

आप इस स्तर पर, इस के लिए +1 पर एक सच्चे डेवलपर होते जा रहे हैं। इसके अलावा मुझे लगता है कि इस प्रश्न का उत्तर पहले ही उत्तर दिया गया है SO – dynamic

+0

+1 पर, मुझे इसमें भी रूचि है। – cabaret

+0

http://programmers.stackexchange.com/questions/62852/php-project-deployment – OnesimusUnbound

उत्तर

3

मैं आपकी परीक्षण परिनियोजन रणनीति को एक उत्पादन-तैयार इंस्टॉल-स्क्रिप्ट बनाने का सुझाव दूंगा - क्योंकि आपको अंततः उन में से किसी एक की आवश्यकता होगी।

कुछ टिप्स कि कुछ करने के लिए स्पष्ट लग सकता है, लेकिन उनका कहना है लायक हैं:

  • आपका कॉन्फ़िग फ़ाइल अपने VCS में सहेजा एक टेम्पलेट होना चाहिए, और फ़ाइल अंत में शामिल होंगे कि से अलग नाम दिया जाना चाहिए वास्तविक सेटिंग्स। जैसे config-dist.php या config-sample.conf या sample/config-mysql.php या उन पंक्तियों के साथ कुछ। अन्यथा आप अपने टेम्पलेट पर सर्वर-विशिष्ट कॉन्फ़िगरेशन फ़ाइल में गलती से जांच कर समाप्त कर देंगे।
  • PHP परिनियोजन के लिए, अनुमान लगाएं कि कुछ उपयोगकर्ता वेब सर्वर के अलावा किसी भी तंत्र के माध्यम से सर्वर-साइड स्क्रिप्ट चलाने में सक्षम नहीं होंगे। एक PHP- आधारित इंस्टॉलर लगभग गैर-विचारणीय है।
  • आपको उपभोक्ता-अनुकूल अद्यतन तंत्र शामिल करना चाहिए, और इसके लिए, वर्डप्रेस अनुकरण करने के लिए एक प्रोजेक्ट का एक बड़ा उदाहरण है। एक PHP स्क्रिप्ट (ए) नवीनतम निर्माण डाउनलोड कर सकती है, (बी) ftp फ़ंक्शंस का उपयोग अपने एप्लिकेशन की फ़ाइलों को अपडेट करने के लिए करें, और (सी) एक अद्यतन स्क्रिप्ट निष्पादित करें जो डेटाबेस में उचित परिवर्तन करता है आदि।
  • स्वर्ग के लिए ऐसा नहीं करते हैं [ को पुन: सक्रिय करें] और अपने उपयोगकर्ताओं को प्रत्येक बिंदु रिलीज के लिए अलग-अलग पैच डाउनलोड और इंस्टॉल करें। उन्हें नवीनतम (अंतिम) रिलीज डाउनलोड करें जिसमें तिथि के सभी अपडेट शामिल हैं, और अनुक्रम में सही ALTER TABLE फ़ंक्शन लागू होते हैं।

क्या एसवीएन या एफ़टीपी के माध्यम से फाइलें तैनात की गई हैं, इंस्टॉल/अपडेट मैकेनिज्म समान होना चाहिए: नवीनतम फाइलें प्राप्त करें, अद्यतन स्क्रिप्ट चलाएं। अद्यतनकर्ता PHP स्क्रिप्ट में सूचीबद्ध संस्करण और डीबी में सूचीबद्ध संस्करण का उपयोग करता है, और उस ज्ञान का उपयोग उचित डीबी पैच को क्रम में लागू करने के लिए करता है। उन पैच को उत्पन्न करने के तरीके के लिए, यहां other questions हैं जिन्हें आप अधिक जानकारी के लिए देख सकते हैं।

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

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

+0

एक नोट के रूप में: वर्डप्रेस का अपडेट मैकेनिज्म मैन-इन-द-बीच हमलों के लिए कमजोर है, यदि कोई हमलावर वर्डप्रेस परिनियोजन सर्वर और वेबसर्वर "बीच में" प्राप्त कर सकता है जो वर्तमान में अपडेट होने वाले वर्डप्रेस इंस्टॉल को होस्ट करता है। – damianb

+0

@ ओब्बिडियन: सचमुच इंटरनेट के माध्यम से डेटा के हर टुकड़े के लिए भी सच है। इसका मुकाबला करने का एकमात्र तरीका क्रिप्टोग्राफिक हस्ताक्षर (या तो सुरक्षित सॉकेट या हस्ताक्षरित फाइलें) का उपयोग कर रहा है, जो आप अपने अपग्रेड प्रक्रिया के हिस्से के रूप में बना सकते हैं यदि आप उस पागल हैं। – tylerl

3

यही आपके प्रश्न का हिस्सा नहीं है, लेकिन यह प्रासंगिक है:

आप एक विस्तृत जनता के लिए बनाई कोड वितरण में जाने, मैं निर्माण और OpenSSL-हस्ताक्षरित PHAR संकुल वितरण के साथ जाने के लिए सलाह होगा। आप बिना किसी समस्या के HTTP पर उन्हें वितरित कर सकते हैं, और क्योंकि वे ओपनएसएसएल-हस्ताक्षरित हैं, आप मैन-इन-द-बीच हमलों के जोखिम को कम कर रहे हैं और अंत उपयोगकर्ताओं/ग्राहकों/ग्राहकों को किसी इंजेक्शन कोड से सुरक्षित कर रहे हैं यदि आप एक स्वचालित या एक-क्लिक अद्यतन स्थापित करना चाहते हैं।

ऐसे उपकरणों का एक सेट है जो मैंने अतीत में योगदान दिया है जो इसके लिए बहुत अच्छा काम करता है, लेकिन आपको या तो PHP 5.3 की आवश्यकता होगी, या आपको पीईसीएल के माध्यम से PHAR के साथ PHP 5.2 की आवश्यकता होगी। https://github.com/koto/phar-util

जहां तक ​​परीक्षण चल रहा है, PHPUnit एक वास्तविक मानक है।

+1

यह सब ठीक है। लेकिन मैं अपने सॉफ़्टवेयर का उपयोग करने के लिए उपयोगकर्ताओं को एक चरम (या यहां तक ​​कि नाशपाती) पैकेज स्थापित करने की आवश्यकता को लागू करने से बचने की सलाह दूंगा, जब तक कि यह बिल्कुल जरूरी न हो। कम से कम एक फॉलबैक है (उदा।हस्ताक्षर सत्यापन केवल तभी समर्थित है जब आप PHAR इंस्टॉल करते हैं, लेकिन सॉफ़्टवेयर का उपयोग करने की आवश्यकता नहीं है)। निश्चित रूप से यह * सरल * एक pecl पैकेज स्थापित करने के लिए है, लेकिन सभी उपयोगकर्ताओं के पास स्वतंत्रता नहीं है। – tylerl

+0

@tylerl मैं ईमानदार रहूंगा, यह दो कारणों में से एक है क्यों मैं केवल PHP 5.3 का समर्थन करता हूं (दूसरा यह है कि ज़ेंड अभी भी इसका समर्थन नहीं करता है)। चूंकि PHAR 5.3 में मूल है, इसलिए यह मुझे आधिकारिक सामान के लिए केवल PHAR वितरण को धक्का दे सकता है और यदि कोई जिथब से स्रोत टैरबॉल लेना चाहता है, तो वे कर सकते हैं (लेकिन उन्हें इसे PHAR के बाहर काम करने के लिए संशोधित करना होगा)। – damianb

0

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

https://github.com/CodeMeme/Phingistrano

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