मैं एक बहुत ही छोटी वेबसाइट एप्लिकेशन पर काम करता हूं, और हम सिर्फ अपनी तैनाती में सुधार करने के लिए काम कर रहे हैं (इसे "विंडोज़ पर आवश्यक सभी मॉड्यूल को स्थापित करने के लिए एक दिन बिताएं और तब तक फ़ाइलों को फेंक दें जब तक सबकुछ काम न करे ", तो यह कुछ सुधार है)।
हम तीन चीजें हैं जो हम हमारी वेबसाइट स्थापित करने के लिए कर रही है की जरूरत है:
- एक पर्ल मॉड्यूल
Module::Starter
का उपयोग कर, एक Config
मॉड्यूल जो साइट-व्यापी कॉन्फ़िगरेशन विकल्प रखती युक्त बनाया है। स्थापना पर, यह मॉड्यूल (MakeMaker
के PREREQ_PM
का उपयोग करके यह जांचने के लिए कि हमारे द्वारा आवश्यक सभी मॉड्यूल पहले से ही स्थापित किए जा चुके हैं)। इस मॉड्यूल से पहले स्थापित करने के लिए कोई भी मॉड्यूल स्थापित नहीं किया जा सकता है।
- कुछ SQL फ़ाइलें जिन्हें डेटाबेस सेट अप करने के लिए निष्पादित करने की आवश्यकता है।
- पर्ल सीजीआई फाइलें जो वेबसाइट बनाती हैं। जब तक अपाचे उन्हें इंगित करता है, वेबसाइट "बस काम करती है"। इसमें सभी पर्ल फाइलों द्वारा उपयोग किए जाने वाले सामान्य कोड मॉड्यूल शामिल हैं।
परिनियोजन में मुझे हर किसी की गिट शाखाओं से खींचने और एक संस्करण पैकेजिंग शामिल है। इसके बाद हम इसे स्थानीय रूप से या अमेज़ॅन ईसी 2 उदाहरण पर परीक्षण के लिए सौंप सकते हैं। एक बार जब हम रिलीज करने के लिए अच्छे होते हैं, तो हम इसे अंतिम संस्करण में इंस्टॉल करते हैं, या डेटाबेस को परीक्षण उदाहरण पर ले जाते हैं और नया उदाहरण बनाते हैं।
आपके मानदंडों को यह तुलना: पुस्तकालयों में से
- नियंत्रण: कुछ हद तक। हम काफी व्यापक रूप से सीपीएएन मॉड्यूल का उपयोग करते हैं। एक नया संस्करण आज़माने के लिए, हम उत्पादन सर्वर पर अपग्रेड करने से पहले मॉड्यूल के अपने संस्करण को अपग्रेड करते हैं। हम मैन्युअल रूप से एक सूची बनाए रखते हैं, लेकिन चूंकि हमारा कोडबेस काफी छोटा है, उदाहरण के लिए
use
से शुरू होने वाली लाइनों के लिए grep
आईएनजी के माध्यम से कौन से मॉड्यूल का उपयोग किया जा रहा है, यह पता लगाना मुश्किल नहीं है)।
- मेकफ़ाइल/बिल्ड एकीकरण: हां। कोई भी मेकफ़ाइल संबंधित सामान हमारे ईयू :: एमएम सेटअप द्वारा किया जाता है। हमारे पास वैश्विक परीक्षण नहीं हैं, लेकिन चूंकि हमारा पूरा परीक्षण सूट हाल ही में एक फ़ोल्डर में समाप्त हो गया है, उम्मीद है कि हमारे पास जल्द ही कुछ ऐसा होगा जो आप सीधे
prove
चला सकते हैं।
- संस्करण नियंत्रण अनुकूल: हाँ। हमारा पूरा स्रोत कोड बहुत अधिक डुप्लिकेशंस के बिना, एक फ़ोल्डर में निहित है।
- क्रॉस प्लेटफ़ॉर्म: हाँ। मेकमेकर में हमें ऐसा करने की इजाजत देने के लिए बहुत सारी अजीब चीज़ें मिल रही हैं, लेकिन स्टार्टअप के रूप में, क्रॉस-प्लेटफ़ॉर्म कोड होने से हमें मूल्यवान लचीलापन मिलता है। हम जितना संभव हो सके सीपीएएन से पर्ल के कोर मॉड्यूल और टूल्स, और शुद्ध पर्ल मॉड्यूल का उपयोग करने का प्रयास करते हैं।
- एकल पर्ल इंस्टॉल: हाँ। हम पर्ल को कहीं भी रखते हैं, और किसी भी सेटिंग के तहत स्थापित कर सकते हैं, जब तक कि पर्ल के सभी मॉड्यूल टूल काम कर सकें -
CPAN
, EU::MM
और अन्य सभी प्रणालियों में अच्छी तरह से काम करने में बहुत सारे प्रयास किए गए हैं, और यह एक शर्म की बात है इसे बर्बाद करने के लिए।
- आसान शुरुआत: वास्तव में नहीं। इस प्रणाली को विकसित किया गया था (यानी: समझदारी से डिजाइन नहीं किया गया था) सभी स्रोत फ़ाइलों के एक फ़ोल्डर से और एक मॉड्यूल की सूची के साथ एक पाठ फ़ाइल जिसे स्थापित करने की आवश्यकता है। जबकि स्थापित मॉड्यूल के लिए औपचारिक परीक्षण एक बड़ा सुधार है, यह अभी भी इसे स्थापित करने के लिए एक दिन की तरह कुछ लेता है, मुख्य रूप से हमारे पूर्ववर्ती मॉड्यूल स्थापित करने में खर्च करता है (उन सभी को विंडोज़ पर स्थापित करना आसान नहीं है)। मैं the Perl Win32 community का उपयोग करने की उम्मीद कर रहा हूं ताकि समस्याग्रस्त सीपीएएन मॉड्यूल के साथ समस्याएं आ सकें।
मन आप, यह एक वास्तव में सरल वेबसाइट, कोई XS, जटिल वेब रूपरेखा, या किसी भी तरह के है। हमने इस सेटअप को केवल दो संस्करणों के माध्यम से ही समर्थन दिया है, इसलिए हमारे पास पर्याप्त अनुभव नहीं है कि यह कैसे काम करेगा क्योंकि कोड अधिक जटिल हो गया है और हमारे परिनियोजन प्लेटफॉर्म अधिक विविध हो गए हैं।मैं वास्तव में हमारे सिस्टम पर किसी भी सुझाव या टिप्पणियों की सराहना करता हूं।
महान प्रतिक्रिया, धन्यवाद। एक प्रणाली जो मेरे लिए काम करेगी वह चीजों को साइट पर स्थापित नहीं करनी चाहिए, और एक सिस्टम पर्ल के साथ सह-अस्तित्व में सक्षम होना चाहिए। ActivePerl के पुराने संस्करणों के साथ मेरा काम यह एक पूर्ण आवश्यकता बनाता है। जहां संभव हो, मैं सहमत हूं कि एक अलग perl का उपयोग करना सबसे अच्छा है। – daotoad