2012-06-30 7 views
38

क्या यह संक्षिप्त करने के लिए एक संक्षिप्त मार्गदर्शिका है कि इंस्टेंस शुरू होने और चलने पर एप्लिकेशन को कैसे शुरू किया जाए? अगर यह yum के माध्यम से स्थापित सेवाओं में से एक था तो मुझे लगता है कि मैं इसे सेवा में जोड़ने के लिए /sbin/chkconfig का उपयोग कर सकता हूं। (यह सुनिश्चित करने के लिए, क्या यह सही है?)अमेज़ॅन लिनक्स एएमआई में मैं स्वचालित रूप से node.js एप्लिकेशन कैसे शुरू कर सकता हूं?

हालांकि, मैं केवल उस प्रोग्राम को चलाने के लिए चाहता हूं जो yum के माध्यम से स्थापित नहीं किया गया था। Node.js प्रोग्राम चलाने के लिए, जब भी सिस्टम बूट हो जाता है, तो मुझे होम निर्देशिका पर स्क्रिप्ट sudo node app.js चलाने की आवश्यकता होगी।

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

क्या ऐसा करने का कोई शानदार तरीका है?

+0

इस समाधान का प्रयास करें। यह बहुत ही सरल है। http://stackoverflow.com/a/22171598/1028103 –

उत्तर

18

एक तरीका है अपस्टार्ट नौकरी बनाना। इस तरह आपका ऐप लिनक्स लोड के बाद शुरू होगा, अगर यह क्रैश हो जाता है तो स्वचालित रूप से पुन: प्रारंभ हो जाएगा, और आप sudo start yourapp/sudo stop yourapp/sudo restart yourapp द्वारा इसे प्रारंभ/बंद/पुनरारंभ कर सकते हैं।

1) नवोदय उपयोगिता स्थापित करें (पहले से स्थापित किया जा सकता है अगर आप एक मानक अमेज़न लिनक्स एएमआई का उपयोग करें):

sudo yum install upstart 

Ubuntu के लिए:

sudo apt-get install upstart 

ये कदम उठाएँ शुरुआत कर रहे हैं

2) अपने नोड ऐप के लिए अपस्टार्ट स्क्रिप्ट बनाएं:

/etc/init विज्ञापन में d फ़ाइल yourappname.conf कोड की निम्न लाइनों के साथ:

#!upstart 
description "your app name" 

start on started mountall 
stop on shutdown 

# Automatically Respawn: 
respawn 
respawn limit 99 5 

env NODE_ENV=development 

# Warning: this runs node as root user, which is a security risk 
# in many scenarios, but upstart-ing a process as a non-root user 
# is outside the scope of this question 
exec node /path_to_your_app/app.js >> /var/log/yourappname.log 2>&1 

3) sudo start yourappname

+11

जहां तक ​​मुझे पता है, अमेज़ॅन पर चलने वाला लिनक्स रेडहाट व्युत्पन्न है, उबंटू व्युत्पन्न नहीं है, इसलिए मैं नहीं करता लगता है कि अपस्टार्ट उपलब्ध नहीं है। – Unknown

+0

शायद। मैं डेबियन पर अपना नोड.जेएस ऐप चलाता हूं। –

+0

धन्यवाद आदमी - मैं इस पर अपने बालों को खींच रहा हूं। –

6

आपके लिए त्वरित समाधान /etc/rc.local से अपना ऐप शुरू करना होगा; बस वहां अपना आदेश जोड़ें।

लेकिन अगर आप सुरुचिपूर्ण रास्ता तय करना चाहते हैं, तो आप एक आरपीएम फ़ाइल में आपके आवेदन पैकेज होगा, एक स्टार्टअप स्क्रिप्ट /etc/rc.d में चला जाता है, ताकि आप अपने एप्लिकेशन पर chkconfig उपयोग कर सकते हैं, तो आरपीएम स्थापित आपके उदाहरण पर

शायद this या this सहायता। (या सिर्फ "आरपीएम पैकेज बनाने" के लिए Google)

+0

यदि मैं आरपीएम विधि का उपयोग करता हूं, तो क्या मुझे हर बार जब मैं अपना आवेदन संशोधित करता हूं तो मुझे आरपीएम पैकेज का पुनर्निर्माण करना होगा? – user482594

+0

हां, आपके ऐप में बदलाव का मतलब है कि एक नया। आरपीएम बनाना और पुन: नियोजन करना, बिल्कुल यम का उपयोग करके नियमित पैकेज अपडेट करना। – Unknown

+3

कोई RPM फ़ाइल बनाने की आवश्यकता नहीं है - आप RPM बनाने के बिना init स्क्रिप्ट्स और chkconfig का उपयोग कर सकते हैं। – TomG

-11

एडब्ल्यूएस पर forever का उपयोग कर रहा है और यह एक अच्छा काम करता है।

[sudo] npm install forever -g 

का उपयोग कर को जोड़ने के लिए एक आवेदन पत्र

forever start path_to_application 

का उपयोग करें और बंद करने के लिए आवेदन का उपयोग

forever stop path_to_application 

This एक उपयोगी लेख है कि मुझे उसे सेट अप करने के साथ मदद है स्थापित करें।

+0

लेकिन मुझे हर बूट अप पर 'हमेशा के लिए नोड मॉड्यूल' चलाने की आवश्यकता होगी? – user482594

+0

हां। यह उन मामलों में उपयोगी है जहां आप अपना ऐप खोल से चलाते हैं और ऐप को रोक दिए बिना खोल से बाहर निकलना चाहते हैं। यदि ऐप किसी त्रुटि पर समाप्त हो जाता है तो यह ऐप को भी पुनरारंभ करता है। – almypal

+1

नहीं, हर बूट अप पर हमेशा के लिए शुरू नहीं होता है। –

5

के द्वारा अपने ऐप शुरू आप एक स्क्रिप्ट है कि शुरू करने और अपने अनुप्रयोग बंद करो और /etc/init.d में रख सकते हैं बना सकते हैं ; स्क्रिप्ट को chkconfig के सम्मेलनों (नीचे) का पालन करें, और उसके बाद chkconfig का उपयोग करें ताकि इसे अन्य सेवाएं शुरू होने पर शुरू करने के लिए सेट किया जा सके।

उदाहरण के रूप में उपयोग करने के लिए आप /etc/init.d से मौजूदा स्क्रिप्ट चुन सकते हैं;

  • एक निष्पादन स्क्रिप्ट खोल जरूरत (यानी, #/bin/bash!) को दिखाता है
  • प्रपत्र # chkconfig का एक टिप्पणी: जहां अक्सर 345 है, startprio this article आवश्यकताओं, जो मूल रूप से कर रहे हैं का वर्णन करता है इंगित करता है कि सेवाओं के क्रम में कहां से शुरू करना है, और रोकने के लिए सेवाओं के आदेश में स्टॉपप्रियो है। मैं आम तौर पर एक समान सेवा चुनता हूं जो पहले से मौजूद है और इन मानों के लिए एक गाइड के रूप में उपयोग करें (यानी, यदि आपके पास वेब से संबंधित सेवा है, तो समान शुरुआत और रोकथाम प्राथमिकताओं के साथ httpd के समान स्तर पर शुरू करें)।

अपनी स्क्रिप्ट सेट होते ही, आप

chkconfig --add yourscript 
chkconfig yourscript on 

उपयोग कर सकते हैं और तुम जाना अच्छा होना चाहिए। (कुछ distros के लिए आपको स्क्रिप्ट को मैन्युअल रूप से /etc/init.d/rc.d पर सिमलिंक करने की आवश्यकता हो सकती है, लेकिन मेरा मानना ​​है कि जब आप स्क्रिप्ट सक्षम करते हैं तो आपका एडब्ल्यूएस डिस्ट्रो आपके लिए ऐसा करेगा।

8

आप हमेशा के लिए उपयोग कर सकते हैं- एक सेवा के रूप नोड स्क्रिप्ट प्रावधान और स्वचालित रूप से जूते के दौरान शुरू करने के लिए सेवा। आदेशों के बाद आवश्यक कार्रवाई करेंगे,

npm install -g forever-service 
forever-service install test 

हो जाएगा ताकि प्रावधान हमेशा के लिए के माध्यम से एक सेवा के रूप मौजूदा निर्देशिका में app.js। सेवा स्वचालित रूप से हर पुनः आरंभ करेगा टाइम सिस्टम को पुनरारंभ किया जाता है। इसके अलावा जब इसे रोक दिया जाता है तो यह एक शानदार स्टॉप का प्रयास करेगा। यह स्क्रिप्ट logrotate स्क्रिप्ट को भी प्रावधान करती है।

Github यूआरएल: https://github.com/zapty/forever-service

अब तक हमेशा के लिए सेवा का समर्थन करता है अमेज़न लिनक्स, CentOS, अन्य लिनक्स distro के लिए Redhat समर्थन, मैक और विंडोज पर काम चल रहा .. हैं

नोट: मैं हमेशा के लिए के लेखक हूँ सर्विस।

+0

या उदाहरण में कोड लिखने के बिना स्टार्टअप पर इच्छित किसी भी ऐप को लॉन्च करना है .. धन्यवाद! – Shide

+0

यह "हमेशा के लिए सेवा रूट के रूप में चलाना चाहिए" प्राप्त करने में काम नहीं करता है "सुडो हमेशा के लिए सेवा स्थापित परीक्षण" और अमेज़ॅन लिनक्स जवाब देता है "सुडो: हमेशा के लिए सेवा: आदेश नहीं मिला" – jdog

0

आप screen का उपयोग कर सकते हैं।भागो crontab -e और इस पंक्ति जोड़ें:

@reboot screen -d -m bash -c "cd /home/user/yourapp/; node app" 
0

उपयोग लचीला बीनस्टॉक :) ऑटो स्केलिंग, एसएसएल समाप्ति, नीले/हरे तैनाती के लिए समर्थन प्रदान करता है, आदि

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

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