2013-02-20 7 views
14

शीर्षक के अनुसार, मैं अमेज़ॅन न्यू ओप्सवर्क्स प्रबंधन प्रणाली के साथ ऐप्स को तैनात करने के लिए खेल रहा हूं, हालांकि मैं यह समझने में सक्षम नहीं हूं कि उदाहरण के लिए नोड सर्वर को कैसे शुरू करना है। बंदरगाहों से एप्लिकेशन परतों तक पहुंच भी है, मुझे लगता है कि मुझे पोर्ट 80 पर सुनना होगा, हालांकि मुझे लगता है कि समस्या यह है कि सही फ़ाइल शुरू नहीं हो रही है।क्या कोई अमेज़ॅन ओप्सवर्क्स के साथ नोड (एक्सप्रेस) ऐप को तैनात करने में सफल रहा है?

हेरोकू पर एक प्रसंस्करण के समान, क्या एक विशेष स्टार्ट-स्क्रिप्ट प्रकार फ़ाइल है जिसे ओप्सवर्क्स के लिए इसे ठीक से शुरू करने की आवश्यकता है?

ध्यान दें कि मुझे अभी तक शेफ के साथ अनुभव नहीं है, इसलिए मैं इसे डिफ़ॉल्ट विकल्पों के साथ काम करने की उम्मीद कर रहा हूं, यानी इसे करने के लिए कस्टम शेफ रेसिपी लिखना नहीं।

उत्तर

27

इस पर मैंने जो समय बिताया वह शर्मनाक है, लेकिन मैं अन्य लोगों को अपने जीवन के घंटों को बचाने की उम्मीद में साझा करूंगा जो अन्यथा अमेज़ॅन द्वारा चुराया जाएगा।

  • अपने प्रश्न का उत्तर देने के लिए, हाँ, मुझे अपना नोड/एक्सप्रेस एप्लिकेशन चल रहा था।
  • यदि आप अपने पोर्ट नंबर को चुनने के किसी भी प्रकार की process.env विधि का उपयोग कर रहे थे, तो अपने सुनने वाले पोर्ट को 80 (या 443 उपयुक्त होने पर) बदलें।
  • सबसे महत्वपूर्ण बात यह है कि अमेज़ॅन परवाह नहीं है कि आपकी main फ़ाइल क्या है। इसे server.js का नाम बदलें और इसे अपने एप्लिकेशन की मूल निर्देशिका में रखें। यही वह फ़ाइल है जो monit चलाने की कोशिश करता है।

उम्मीद है कि मदद करता है। यदि ऐसा नहीं होता है, या यदि यह सब स्पष्ट है, तो मैं अपनी उदासीनता और नींद की कमी के लिए क्षमा चाहता हूं। :)

+0

हाहा या मैंने इसे लंबे समय तक भी बिताया। और हाँ फ़ाइल का नाम वह चीज़ थी जिसे मैंने सोचा था। मेरा app.js था (मूल एक्सप्रेस कमांड क्या उत्पन्न करता है) हालांकि मैं यह नहीं समझ सका कि उसे क्या होना चाहिए था। –

+3

इसके अलावा: यदि आप अपने नोड ऐप को हैप्रोक्सी लेयर के पीछे चलाते हैं, तो सुनिश्चित करें कि स्वास्थ्य जांच (डिफ़ॉल्ट रूप से इसका एक HTTP विकल्प अनुरोध) एक्सप्रेस द्वारा संभाला जा सकता है। मुझे इसे काम करने के लिए एक हेड अनुरोध विधि पर स्विच करना पड़ा ... – fbrandel

0

मैंने इसके लिए थोड़ा सा खेला और उम्मीद है कि सफलता का मेरा मार्ग किसी की मदद करेगा। Node.js को आमतौर पर पोर्ट 80 पर चलाने के लिए ऊंचे विशेषाधिकारों की आवश्यकता होती है, इसलिए मुझे पता चला कि नमूना ऐप app.js नामकरण ठीक था, आपको डिफ़ॉल्ट ओप्सवर्क्स की लाइन 2 को संशोधित करने की आवश्यकता है Node.js sudo का उपयोग करने के लिए शेफ रेसिपी तैनात करें:

+0

नोड को पोर्ट 80 पर एक आरक्षित बंदरगाह के रूप में चलाने के लिए ऊंचा अनुमति की आवश्यकता है, हालांकि ओपीएसवर्क्स उदाहरण के लिए रूट उपयोगकर्ता के रूप में सब कुछ चलाने के लिए प्रतीत होता है। आम तौर पर यह वास्तव में बुरा है, क्योंकि सुरक्षा समस्या तब दुर्भावनापूर्ण कोड को रूट के रूप में निष्पादित कर सकती है (रेल सोचें ...)। हालांकि, ईसी 2 उदाहरण थोड़े ही फैंसी वीएम हैं, जो रूट के रूप में चल रहे हैं, वैसे भी उदाहरण के बाहर कोई प्रभाव नहीं पड़ता है। –

+0

इसके अलावा कैसे sudo के रूप में चल रहा है fileename server.js के बजाय app.js होना चाहिए? –

+0

मेरे अनुभव से ठीक है, ओपीएसवर्क्स के लिए डिफ़ॉल्ट नोड.जेएस परत विशेष रूप से server.js के लिए नहीं दिख रही है, इसलिए यह app.js फ़ाइल नाम के साथ काम कर रही है। और हाँ किसी भी एप्लिकेशन को 1024 से नीचे बंदरगाहों पर चलाने के लिए रूट पहुंच की आवश्यकता है, यही कारण है कि सुडो का उपयोग किए बिना, मैं ऐप को ओप्सवर्क्स रेसिपी के साथ स्वचालित रूप से लॉन्च करने में सक्षम नहीं था। –

1

बस Node.js एप्लिकेशन विन्यस्त करने के लिए एडब्ल्यूएस OpsWorks पेज को कॉपी:

"डिफ़ॉल्ट रूप से हम आपके Node.js ऐप को पोर्ट 80 पर सुनने की उम्मीद करते हैं। इसके अलावा, हम जिस नोड को पास करते हैं उसे" server.js "नाम दिया जाना चाहिए और आपके ऐप की मूल निर्देशिका में स्थित होना चाहिए।"

सम्मान।

+0

taht कैसे करें? –

0

एक हो सकता है विषय बंद सा है, लेकिन मैं इस पर कुछ घंटों खर्च तो मैं लगा इसके लायक साझा करने के लिए:

जब OpsWorks पर एक Hapi.js सर्वर की स्थापना, मैं यह सुनिश्चित करना है कि मैं होस्ट नाम का उपयोग नहीं किया था localhost, लेकिन इसके बजाय इसे 0.0.0.0 पर सेट करें। अन्यथा यह चुपचाप विफल रहता है।

आशा है कि किसी को भी मदद मिलेगी।

4

ज़चबबिट से शानदार जवाब। मैं बस यह जोड़ना चाहता हूं कि ओपीएसवर्क्स अब तैनात आवेदन प्रक्रिया के लिए पर्यावरण चर (यानी process.env.PORT) की सेटिंग का समर्थन करता है।

जब आप अनुप्रयोग (या संपादित) जोड़ें आप आगे जाना है और पोर्ट के एक प्रमुख और आप अपने server.js में निम्नलिखित की तरह कुछ उपयोग कर रहे हैं 80 के एक मूल्य के साथ एक वातावरण चर सेट कर सकते हैं:

वातावरण चर की स्थापना पर
!/usr/bin/env node 
var debug = require('debug')('my-app'); 
var app = require('app'); 

app.set('port', process.env.PORT || 3000); 

var server = app.listen(app.get('port'), function() { 
    debug('Express server listening on port ' + server.address().port); 
}); 

अधिक जानकारी यहां पाया जा सकता है:

http://docs.aws.amazon.com/opsworks/latest/userguide/apps-environment-vars.html

सुनिश्चित करना है कि फ़ाइल नाम server.js था और 80 को वातावरण चर पोर्ट सेटिंग मेरे लिए एक विजेता की तरह काम किया।

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