2011-11-10 22 views
8

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

क्या यह सुरक्षित रूप से करने के लिए सिम्फनी 2 में कोई तंत्र है? साइट को 'रखरखाव मोड' में डालने की तरह (जिसे 503 फेंकना चाहिए) या कुछ?

उत्तर

3

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

दूसरी तरफ, यदि आप रखरखाव मोड में जाना चाहते हैं, तो आप एक समाधान चाहते हैं जिसमें ढांचे पर न्यूनतम भार हो (यानी, शायद आप कर्नेल को आग नहीं करना चाहते हैं), या आप वैसे भी उद्देश्य को हराने के लिए: चीजों के साथ बकवास करते समय ढांचे को बंद करना।

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

+0

क्या वाकई इसमें शामिल है? आप कॉन्फ़िगरेशन विकल्प के आधार पर केवल वाइल्डकार्ड रूट नहीं जोड़ सकते हैं? –

+0

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

+0

मैं app.php फ़ाइल को एक रखरखाव.एफ़.पी. फ़ाइल के साथ प्रतिस्थापित करता हूं जिसे मैंने बनाया है। जैसे ही तैनाती समाप्त हो जाती है app.php वापस रखा जाता है। – tmas

0

कृपया capifony http://capifony.org/

यह Symfony2 के लिए उत्कृष्ट समर्थन हासिल है देखो।

1

यह सुनिश्चित नहीं है कि इस बारे में एक बड़ी साइट के लिए कैसे जाना है जहां उपयोगकर्ता किसी प्रकार के लेनदेन (उदाहरण के लिए खरीदारी) के बीच में हो सकता है लेकिन एक छोटी सी साइट के लिए आप केवल एक .htaccess फ़ाइल (एक वेब निर्देशिका में यह मानते हुए कि आपकी जड़ है) app.php के बजाय कुछ रखरखाव पृष्ठ पर रीडायरेक्ट करने के लिए।

5

मुझे सिम्फनी 2 के लिए अभी एक बंडल मिला है, जो आपको अपने एप्लिकेशन को रखरखाव मोड में रखने के लिए कंसोल में 2 अतिरिक्त-आदेश प्रदान करता है। यहां आप जाएं: https://github.com/lexik/LexikMaintenanceBundle

+1

LexikMaintenanceBundle, जबकि अच्छा है, सिम्फनी को काम करने की आवश्यकता है। मेरी राय में CorleyMaintenanceBundle बेहतर है, क्योंकि यह अपाचे/Nginx स्तर पर काम करता है। – TheFrost

1

मैं आपके Symfony2 एप्लिकेशन को तैनात करने के लिए नियोक्ता (http://deployer.org/) का उपयोग करने की सलाह दे सकता हूं। इस तरह आपको रखरखाव पृष्ठ की आवश्यकता नहीं है। एक symfony2 और symfony3 टेम्पलेट के साथ उपकरण जहाजों में पहले से ही शामिल है। यह आपकी संपत्ति उत्पन्न करता है, कैश को गर्म करता है और आपकी रिलीज निर्देशिकाओं का ट्रैक रखता है। पिछली रिलीज पर भी रोल करना आसान है। एक "वर्तमान" -सिमलिंक है जो हमेशा आपकी वर्तमान रिलीज निर्देशिका को इंगित करता है। यदि एक रिलीज परिनियोजन पूरा हो गया है तो यह लिंक नव निर्मित रिलीज निर्देशिका के लिए अद्यतन करता है।

सिद्धांत माइग्रेशन के संबंध में आपको इसके लिए एक कस्टम कार्य लिखना होगा।