2012-12-29 11 views
8

मैं एक ग्राहक के लिए एक साधारण नोड.जेएस आवेदन बना रहा हूं। वेबपैप प्रत्येक सर्वर इंस्टेंस (जो रेडहाट ईएल 6.3), "हाथ में कुंजी" पर तैनात करना आसान होना चाहिए।नोड.जेएस वेबपैप "हाथ में कुंजी" प्रदान करें

नोड.जेएस ऐप को पैकेज करने का सबसे अच्छा तरीका क्या है? मूल रूप से, मैं एक "संस्थापक" या "पैकेज" की जरूरत है:

  • Node.js स्थापित
  • स्थापित करें निर्भरता (npm install)
  • आबाद आवेदन फ़ाइलें (सीएसएस, जे एस, एचटीएमएल, आदि)

उत्तर

8

आपको एक स्वयं निहित पैकेज देना चाहिए। कृपया महान साइट The Twelve-Factor App देखें, विशेष रूप से build, release, run अनुभाग। उस साइट में शामिल अनुभवी संचालन इंजीनियरों से बहुत सख्त ज्ञान प्राप्त हुआ है।

  • यदि आपके ऐप की रेपो में, एक पटकथा लिखने (खोल, नोड, जो कुछ भी) है कि एक वितरण योग्य संग्रह
  • आरपीएम या tar संग्रह उत्पन्न कर सकते हैं 2 आप के लिए सबसे समझदार विकल्प हैं। टैर अधिक पोर्टेबल और सरल है। आरपीएम एक आरपीएम आधारित वितरण के साथ अच्छी तरह से एकीकृत होगा। यदि आपने बहुत सारे सॉफ्टवेयर पैकेजिंग/प्रबंधन कार्य नहीं किए हैं तो मैं टैर से शुरू करने की सलाह दूंगा। आरपीएम टैर से काफी जटिल है।
  • टैर संग्रह को इसके अंदर node.js फ़ाइलों को एम्बेड करना चाहिए। यह आपके ऐप को इंस्टॉल करने में आसान बना देगा और सिस्टम-व्यापी नोड स्थापित करने से बचने के लिए कृत्रिम युग्मन बना देगा। यदि आप आरपीएम रूट पर जाते हैं, तो आप अपनी आरपीएम स्पेक फ़ाइल में निर्भरता के रूप में नोड निर्दिष्ट कर सकते हैं (लेकिन आपको शायद नहीं देखना चाहिए - नीचे देखें)।
  • संग्रह को सभी एनपीएम निर्भरताओं को भी एम्बेड करना चाहिए। पैकेज इंस्टॉल समय पर npm install चलाएं नहीं। विकास के दौरान अपनी निर्भरताओं को प्रबंधित करने के लिए npm shrinkwrap उपकरण का उपयोग करने पर विचार करें, लेकिन तैनाती के समय पर उन्हें पूर्व-बंडल और चलाने के लिए तैयार होना चाहिए।

विशेष रूप से, इन बुरी विचारों को आप से बचना चाहिए रहे हैं:

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

requirejs कि आपका आवेदन आरपीएम आरपीएम में या एक निर्भरता के रूप में Node.js एम्बेड नोड में सूचीबद्ध करना चाहिए करने के लिए के रूप में, यहाँ कुछ बातें बताई गई हैं विचार करने के लिए।

  • एम्बेड अपने आरपीएम
    • एकल .rpm फ़ाइल में Node.js वितरित करने के लिए कसकर नोड संस्करण का उपयोग करता है को नियंत्रित करने के
    • आपके आवेदन की अनुमति देता है। (नीचे देखें)
    • उच्च विश्वसनीयता। तथ्य यह है कि आपका ऐप शायद कम से कम नोड.जेएस के छोटे संस्करण के लिए काफी कसकर जोड़ता है जिसे आप विकसित करते हैं (उदाहरण के लिए 0.8.x) या यहां तक ​​कि एक पैच रिलीज (> = 0.8.12 < 0.9 उदाहरण के लिए)। नोड की अनुमति देना सबसे अच्छा है।जेएस को अपने ऐप को ओएस से डीक्यूपल करने के लिए, लेकिन यह सोचने में मूर्ख मत बनें कि आपका ऐप & समायोजन के परीक्षण के बिना node.js के एक अलग संस्करण पर भरोसेमंद काम करेगा। आमतौर पर इन दिनों ओएस पर केवल 1 ऐप चल रहा है, और ऐप्स के बीच नोड साझा करने की धारणा गलत डिकूप्लिंग और अनुप्रयोगों की परिचालन स्वतंत्रता पर डिस्क स्थान के संरक्षण को गलत तरीके से मानती है।
    • यह अस्पष्ट है कि यमलैंड में वहां कोई आधिकारिक/भरोसेमंद प्री-बिल्ट आरपीएम है जो "बस काम करेगा"।
  • निर्दिष्ट करें अपने पी आर एम की एक निर्भरता के रूप में Node.js
    • ओएस पैकेज प्रबंधन के सामान्य दर्शन का अनुसरण करता है (दोहराव से बचने के, डिस्क स्थान के संरक्षण, आदि)
    • आरपीएम सूची प्रबंधन के आसपास टीएआर परे क्षमता प्रदान करता है , अनइंस्टॉलेशन, अपग्रेड इत्यादि। चूंकि आप इस सवाल से पूछ रहे हैं, इसलिए आप शायद इन्हें ठीक से ठीक करने के लिए तैयार नहीं हैं, इसलिए हो सकता है कि आप टैर से शुरुआत करना चाहें और एक बार जब आप इसकी ठोस समझ लें, तो आरपीएम अपग्रेड स्क्रिप्ट आदि पर विचार करें।
    • "अच्छी फ़ाइल वितरित करने के लिए एकल फ़ाइल" क्विकल कर सकता है आपके एप्लिकेशन, एक डेटाबेस या 3 का उपयोग ईमेल के लिए डेमॉन समर्थन, लॉग एग्रीगेटर्स शुरू होता है y अस्थिर हो जाते हैं, आदि
+0

मुझे लगता है मैं आरपीएम मार्ग जाना होगा के रूप में यह है कि क्या मेरे मुवक्किल चाहता है। तो आरपीएम में आवश्यक नोड.जेएस मॉड्यूल पूर्व-डाउनलोड किए जाएंगे, साथ ही साथ मेरा कोड चलाने के लिए तैयार होगा। क्या आप कह रहे हैं कि आरपीएम में नोड.जेएस भी शामिल नहीं हो सकता है? – Randomblue

+0

मैं आरपीएम में नोड को एम्बेड करने के बारे में बिंदु को स्पष्ट करने के लिए अपना उत्तर अपडेट करूंगा। –

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