आप IIS वेबसाइट डिपो का उत्पादन कैसे करते हैं?


15

तो, अगर यह एक ढेर अतिप्रवाह या एक सर्वर दोष सवाल है यकीन नहीं है। अगर मेरे पास .NET वेबसाइट है जिसे मैं उत्पादन वातावरण में तैनात करना चाहता हूं, तो ऐसा करने का सबसे अच्छा तरीका क्या है। क्या मुझे इसे MSI के रूप में पैकेज करना चाहिए और इंस्टॉल करना चाहिए? जरूरी फाइलों को पुश करने के लिए नेंट का उपयोग करें। बस से परे फ़ाइलों का उपयोग कर एफ़टीपी तुलना करें?

आप उत्पादन कोड कैसे तैनात करते हैं? यह विंडोज विशिष्ट मामला है जिसे मैं यहां देख रहा हूं।

जवाबों:


15

IIS xcopy परिनियोजन का समर्थन करता है, इसलिए जब तक आपको विशेष आवश्यकता न हो, तब तक केवल फ़ाइलों की प्रतिलिपि बनाना चाहिए।

इसे करने का एक तरीका एक सरल स्क्रिप्ट है जो सर्वर पर नई फ़ाइलों को कॉपी करने के लिए ROBOCOPY का उपयोग करता है।

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

डाउनटाइम को कम करने के लिए, आप स्क्रिप्ट को फ़ाइलों को एक नई निर्देशिका में कॉपी कर सकते हैं और फिर जल्दी से निर्देशिकाओं का नाम बदल सकते हैं, या बदल सकते हैं जहां IIS नई निर्देशिका को इंगित करता है।


1
संस्करण नियंत्रण प्रणाली आकर्षक है, लेकिन वेब साइटों के लिए संकलन की आवश्यकता होती है जो बहुत अच्छी तरह से काम नहीं कर सकती है। जब तक संकलित संस्करण को पाठ्यक्रम के संस्करण नियंत्रण में नहीं रखा जाता है।
जोनाथन वाटनी

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

मैं हर समय तोड़फोड़ के साथ ऐसा करता हूं। Apache पर आप यह सुनिश्चित करने के लिए mod_rewrite का उपयोग करेंगे कि उपयोगकर्ता .svn निर्देशिकाओं तक नहीं पहुँच सकते। तैनाती के लिए संस्करण नियंत्रण का उपयोग करना निश्चित रूप से जाने का तरीका है।
ल्यूक

13

Microsoft से वेब परिनियोजन उपकरण का उपयोग करने पर विचार करें । यह विशेष रूप से IIS 6 और 7 वेब सर्वर के उत्पादन के लिए वेब एप्लिकेशन और उन वेब एप्लिकेशन को अपडेट करने में मदद करने के लिए डिज़ाइन किया गया था और यह MSI (विंडोज इंस्टालर), IMHO की तुलना में कार्य का बेहतर काम करता है।

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


+ अनंत। यह उपकरण एक जीवनरक्षक है और अधिक दिलचस्प समस्याओं पर काम करने के लिए पूरे विभागों (एक ला tsilb) को मुक्त करता है।
पोर्टमैन

4

मैं एक निरंतर एकीकरण सर्वर का सुझाव देकर जोएल के उत्तर को अपने स्रोत नियंत्रण प्रणाली से आपके परिवर्तनों को पिकअप करूंगा। यह तब परियोजना का निर्माण करेगा। फिर इसे नए फ़ोल्डर में बिल्ड के आउटपुट को xcopy करें। फिर आप कुछ क्विक कॉन्फिगर बदलाव (web.config और app.config) कर सकते हैं। वसीला, एक्सकोपी के लिए तैयार!

की जाँच करें CruiseControl.NET


3

मैंने अपने पिछले नियोक्ता पर, जो मूल रूप से एक नीलामी / ई-कॉमर्स साइट थी, जहां हम बहुत डाउनटाइम की अनुमति नहीं दे सकते थे:

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

वेब डेवलपर के रूप में करने के लिए बहुत सारी मजेदार चीजें हैं। लेकिन यह मेरे काम का सबसे महत्वपूर्ण हिस्सा था।


1

ओह जीज़, काम पर हमारे पास इसके लिए एक पूरी टीम है। उनके पास एक इन-हाउस टूल है जो सर्वर / क्लस्टर से बाहर ले जाता है, फाइलों को प्रकाशित करता है, NUnits चलाता है, और इसे वापस क्लस्टर / फ़ार्म में जोड़ता है। वे प्रत्येक 16 सर्वरों के लिए ऐसा करते हैं। इसमें घंटों लग जाते हैं। हममें से बाकी लोगों के पास "एक्सेस के आसपास नज़र" भी नहीं है।

अपनी निजी परियोजनाओं के लिए, मैं VS2005 से सीधे अपने वेबसर्वर पर प्रकाशित करता हूं। किंडा के पास कम सख्त सुरक्षा है।

हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.