সিস্টেম পুনঃসূচনাতে স্বয়ংক্রিয়ভাবে চিরতরে (নোড) শুরু করুন


190

আমি আমার নোড সার্ভারটি চালু রাখতে নোডের চিরতরে মডিউলটি ব্যবহার করছি। কোনও সিস্টেম পুনরায় চালু হওয়ার পরে চিরতরে বন্ধ হয়। সিস্টেম পুনরায় চালু হওয়ার সাথে সাথে আমি স্বয়ংক্রিয়ভাবে নোড সার্ভারটি চালু করতে পারি (চিরকালের সাথে)?


1
এই সার্ভারটি কি মেঘের মধ্যে রয়েছে? আপনার কি এটির জন্য কোনও বুট স্ক্রিপ্ট আছে?
জোর্হে আরান্দা

6
চেকআউট পিএম 2 ! এছাড়া সমর্থন প্রারম্ভে স্ক্রিপ্ট প্রজন্ম (systemd, systemv ...) pm2.keymetrics.io/docs/usage/startup
ইউনিটেক

উত্তর:


342

আমি ক্রন্টব ব্যবহার করার পরামর্শ দেব। এটি ব্যবহার করা সহজ।

কিভাবে

  1. সম্পাদনা শুরু করতে নোড প্রক্রিয়াটির জন্য আপনার পছন্দসই রানটাইম ব্যবহারকারীর সাথে "টেস্টুসার" এর পরিবর্তে নিম্নলিখিতটি চালান। আপনি যদি নিজেকে বাদ দিয়ে অন্য কোনও ব্যবহারকারী চয়ন করেন তবে আপনাকে এটি sudo দিয়ে চালাতে হবে।

    $ crontab -u testuser -e
  2. আপনি যদি এর আগে কখনও না করেন তবে এটি আপনাকে জিজ্ঞাসা করবে আপনি কোন সম্পাদকের সাথে সম্পাদনা করতে চান। আমি ভিম পছন্দ করি তবে ব্যবহারের সহজতার জন্য ন্যানোর পরামর্শ দেব।

  3. একবার সম্পাদক এ নিম্নলিখিত লাইন যুক্ত করুন:

    @reboot /usr/local/bin/forever start /your/path/to/your/app.js
  4. ফাইলটি সংরক্ষণ করুন। আপনার কিছু প্রতিক্রিয়া পাওয়া উচিত যে ক্রোন ইনস্টল করা হয়েছে।

  5. ক্রোন ইনস্টলের আরও নিশ্চিতকরণের জন্য, বর্তমানে ইনস্টল করা ক্রোনগুলি তালিকাভুক্ত করতে নিম্নলিখিতগুলি প্রয়োগ করুন (আবার আপনার টার্গেট ব্যবহারকারীর সাথে "পরীক্ষক" প্রতিস্থাপন করুন):

    $ crontab -u testuser -l 

মনে রাখবেন যে আমার মতে, ক্রোনে বাইনারিগুলি কার্যকর করার সময় আপনার সর্বদা পুরো পথ ব্যবহার করা উচিত। এছাড়াও, যদি আপনার চিরকালের স্ক্রিপ্টের পথটি সঠিক না হয় which foreverতবে পুরো পথটি পেতে দৌড়ুন।

সেই foreverকলগুলি দেওয়া node, আপনি এতে সম্পূর্ণ পথ সরবরাহ করতে চাইতে পারেন node:

@reboot /usr/local/bin/forever start -c /usr/local/bin/node /your/path/to/your/app.js

আরও পড়া


2
এই পদ্ধতিরটি ভাল তবে কেবল সেই ক্ষেত্রে যখন সিস্টেমটি পুনরায় চালু হয়। যদি সার্ভারটি বন্ধ হয়ে যায় এবং তারপরে চালিত হয় - এই ক্রোন জবটি কার্যকর হবে না।
প্রত্যক্ষদর্শী

6
এটা চিন্তা করছো কেন? en.wikipedia.org/wiki/Cron#Predefined_scheduling_definitions যা ব্যাখ্যা @rebootশুরু deamon ক্রন উপর ক্রন রান করুন। যোগ করার জন্য আমি কখনই এমন পরিস্থিতিটি দেখতে পাইনি যা পরামর্শ দেয় যে আমার ক্রোনগুলি সেট করা আছে যা @rebootসিস্টেম বুটে চালিত হয় না। আপনি যেভাবে এটি বন্ধ করবেন এটি এর জন্য অপ্রাসঙ্গিক।
জুলিয়ান ল্যানিগান

16
এটি /homeএখনও মাউন্ট করা হয়নি বলে মনে হয়, তাই আপনার কোডটি যদি বাস করে তবে এটি কাজ করবে না /home
chovy

6
আমি দেখতে পেয়েছি যে উপরেরটি আমার পক্ষে ব্যর্থ হয়েছে কারণ ক্রোন চিরতরে চালানোর চেষ্টা করে এমনকি নোডের পথে নেই, এমনকি -c বিকল্পের সাহায্যেও। যাইহোক, দেখা যাচ্ছে যে আপনি সময়সীমার বিবৃতিগুলির উপরে যতক্ষণ না সরাসরি ক্রন্টবায় একটি PATH = বিবৃতি যুক্ত করতে পারেন। একবার পাথ সেট হয়ে গেলে @ রিবুট বিবৃতিটি স্বপ্নের মতো কাজ করেছিল।
ইয়র্কশায়ারকেভ

2
আপনার মন্তব্য @ chovy এর জন্য ধন্যবাদ, এটি খুব সহায়ক ছিল। বাশার্ক থেকে এনভায়রনমেন্ট ভেরিয়েবল ব্যবহার করার জন্য, তার মন্তব্যটি মনে রাখবেন। যেহেতু / বাড়ি মাউন্ট করা হয়নি এটি কাজ করবে না। @reboot varname=value ...
Crontab

123

এটি করার জন্য আপনি চিরকালের জন্য পরিষেবাটি ব্যবহার করতে পারেন।

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

এটি চলতি ডিরেক্টরিতে অ্যাপ্লিকেশনগুলিকে পরিষেবা হিসাবে চিরকালের জন্য সরবরাহ করবে। প্রতিবার সিস্টেম পুনরায় চালু হওয়ার সাথে সাথে পরিষেবাটি স্বয়ংক্রিয়ভাবে পুনঃসূচনা হবে। এছাড়াও বন্ধ হয়ে গেলে এটি একটি দুর্দান্ত স্টপ চেষ্টা করবে। এই স্ক্রিপ্টটি লোগ্রোটেট স্ক্রিপ্টেরও বিধান করে।

গিথুব ইউআরএল: https://github.com/zapty/firever-service

দ্রষ্টব্য: আমি চির-সেবার লেখক।


2
ব্যবহার করুন-"" পোর্ট = 80 এএনভি =
প্রোড এফও

2
কীভাবে চিরকালের জন্য পরিষেবা চালানো যায় তা আমি পাই না। "চিরকালের-পরিষেবা ইনস্টল পরীক্ষায়" সেই "পরীক্ষা" কী? আমার অ্যাপটি চিরতরে শুরু করার জন্য আমার আদেশটি হ'ল: "/ usr / স্থানীয় / বিন / চিরতরে শুরু -c / usr / স্থানীয় / বিন / নোড / হোম / অ্যালেক্স / পাবলিক / নোড_মডিউলস / HTTP- সার্ভার / বিন / HTTP- সার্ভার -s - d মিথ্যা "। আমার কী লিখতে হবে?
অ্যালেক্স

3
পরীক্ষা এখানে পরিষেবা নাম। আপনি যখন সর্বদা-পরিষেবা ইনস্টল পরীক্ষা চালান এটি ডিরেক্টরি হিসাবে অ্যাপ্লিকেশন চালানোর জন্য টেস্ট নামক একটি পরিষেবা তৈরি করে যা একটি পরিষেবা হিসাবে চালিত হবে। আমি গিহাব পৃষ্ঠায় সহায়তা ডকুমেন্টেশন পড়ার পরামর্শ দিচ্ছি, এবং আপনি যদি এটি বুঝতে অক্ষম হন তবে সেখানে একটি সমস্যা যুক্ত করুন।
আরভা

6
@ অ্যালেক্স - আরবের মন্তব্য পরিষ্কার করতে - উদাহরণস্বরূপ forever-service install test, পরিষেবারtest নাম হবে তবে চালানোর জন্য প্রকৃত প্রোগ্রাম / নোড .js ফাইলের নাম নয়। ডিফল্টরূপে, এটা অনুমান প্রোগ্রামের নাম , কিন্তু আপনি দিয়ে এটিকে ওভাররাইড করতে পারেন , ফ্ল্যাগ নিম্নরূপ: । (স্বাক্ষরিত, সুতরাং দয়া করে কোনও app.js--scriptforever-service install test --script main.js
সংশ্লেষের

3
@ ড্যানিসিসনবাউম উত্তর দেওয়ার জন্য ধন্যবাদ। আমি এখন পিএম 2 ব্যবহার করছি যা সুন্দরভাবে কাজ করে। নির্দেশাবলী: ডিজিটালওসন / কম্যুনিটি / টিউটোরিয়ালস_…
অ্যালেক্স

26

এই কেসটি দেবিয়ানদের পক্ষে বৈধ।

নিম্নলিখিতটি যুক্ত করুন /etc/rc.local

/usr/bin/sudo -u {{user}} /usr/local/bin/forever start {{app path}}

  • {{user}} আপনার ব্যবহারকারীর নামটি প্রতিস্থাপন করে।
  • {{app path}}আপনার অ্যাপ্লিকেশন পথ প্রতিস্থাপন করে। উদাহরণ স্বরূপ,/var/www/test/app.js

2
এই পদ্ধতিটি চমত্কার শাটডাউনগুলি মোকাবেলা করে না, যদিও প্রচুর লোকের পক্ষে এটি সম্ভবত কোনও সমস্যা নয়।
ক্রিক

6
বিটিডাব্লু - আমার মনে হয় আপনার সম্পাদনা করা উচিত /etc/rc.local, না/etc/init.d/rc.local
দ্য ক্রিক

@UpTheCreek এর সাথে সম্মত হন যে /etc/rc.local এটি যুক্ত করার জন্য আরও উপযুক্ত জায়গা - দেখুন: দুর্দান্ত ব্যাখ্যা করার জন্য unix.stackexchange.com/a/59945
সুতরাং ওভার এটি

2
এছাড়াও, app.jsআপেক্ষিক ফাইলগুলি সঠিকভাবে লোড হচ্ছে তা নিশ্চিত করতে আপনি 'বর্তমান ওয়ার্কিং ডিরেক্টরি' নির্দিষ্ট করতে চাইতে পারেন - process.chdir('/your/path/to/your/app'); নোড.জেএস রেফ ডক্স এখানে
সুতরাং এটি

1
আপনার নোড.জেএস স্ক্রিপ্টের জন্য যদি পরিবেশের ভেরিয়েবলগুলি সেট করতে হয় (যেমন এক্সপ্রেসের জন্য $ পোর্ট), /etc/rc.localআমার জন্য ট্রিকটি করতে নিম্নলিখিত লাইনটি যুক্ত করুন :( cd /path/to/project && /usr/bin/sudo -u {{user}} env PORT={{port number}} PATH=$PATH:/usr/local/bin sh -c "forever start app.js" )
এসএফসিসি

25
  1. এনপিএম ব্যবহার করে বিশ্বব্যাপী পিএম 2 ইনস্টল করুন

    npm install pm2 -g

  2. আপনার স্ক্রিপ্ট pm2 দিয়ে শুরু করুন

    pm2 start app.js

  3. একটি সক্রিয় সূচনা স্ক্রিপ্ট উত্পন্ন

    pm2 startup

    দ্রষ্টব্য: সিস্টেম পুনরায় বুট করার সময় PM2 প্রারম্ভকালীন PM2 শুরু করার জন্য। পিএম 2 একবার শুরু হয়েছিল, সিস্টেমটি নেমে যাওয়ার আগে এটি পরিচালিত সমস্ত প্রক্রিয়া পুনরায় চালু করে।

আপনি যদি স্বয়ংক্রিয় স্টার্টআপটি অক্ষম করতে চান তবে কেবল pm2 আনস্টার্টআপ ব্যবহার করুন

আপনি যদি চান যে অন্য কোনও ব্যবহারকারীর অধীনে স্টার্টআপ স্ক্রিপ্টটি কার্যকর করা যায়, কেবল -u <username>বিকল্প এবং এটি ব্যবহার করুন--hp <user_home>:


দয়া করে একাধিক প্রশ্নের একই উত্তর পোস্ট করবেন না ।
ফেলিক্সএসএফডি

আমি সত্যিই পছন্দ করি কীভাবে দুপুর ২ টা পরিশ্রুত করা হয়েছে, এবং দুর্দান্ত এক নজরদারি সরঞ্জাম নিয়ে আসে। আশা করি এটি অন্যদের জন্য আরও হাইলাইট হবে। @ আরভি 7 আমি নিশ্চিত যে আপনি এটি দেখেছেন তবে উইন্ডোজ সমাধান রয়েছে: এনপিজেজেএস / প্যাকেজ / পিএম 2- উইন্ডোস সার্ভিস । যদিও নিজে চেষ্টা করে দেখিনি।
জন লি

11

এই উত্তর এবং এই ব্লগ পোস্ট দ্বারা অনুপ্রাণিত একটি বিকল্প crontab পদ্ধতি ।

1. একটি বাশ স্ক্রিপ্ট ফাইল তৈরি করুন (পছন্দসই ব্যবহারকারীকে বব পরিবর্তন করুন)।

vi /home/bob/node_server_init.sh

২. এটি সবে তৈরি করা ফাইলের মধ্যে এটি অনুলিপি করুন এবং আটকান।

#!/bin/sh

export NODE_ENV=production
export PATH=/usr/local/bin:$PATH
forever start /node/server/path/server.js > /dev/null

আপনার কনফিগারেশন অনুসারে উপরের পাথগুলি সম্পাদনা করার বিষয়টি নিশ্চিত করুন!

৩. বাশ স্ক্রিপ্টটি কার্যকর করা যেতে পারে তা নিশ্চিত করুন।

chmod 700 /home/bob/node_server_init.sh

৪. বাশ স্ক্রিপ্টটি পরীক্ষা করুন।

sh /home/bob/node_server_init.sh

5. নোডের জন্য রানটাইম ব্যবহারকারীর সাথে "বব" প্রতিস্থাপন করুন।

crontab -u bob -e

6. অনুলিপি করুন এবং আটকান (পছন্দসই ব্যবহারকারীর কাছে বব পরিবর্তন করুন)।

@reboot /bin/sh /home/bob/node_server_init.sh

ক্রন্টব সংরক্ষণ করুন।

আপনি এটি শেষ পর্যন্ত করেছেন, আপনার পুরস্কারটি একটি রিবুট (পরীক্ষার জন্য) :)


এই পদ্ধতিটি আমার পক্ষে সবচেয়ে ভাল কাজ করেছে। আমি সার্ভার.জেএস ফাইলের জন্য একটি পুরো পথ রাখলে চিরতরে বাইরে চলে যায়। যদি আমি এটি একই ডিরেক্টরিতে চালিত করি তবে ফরওয়ারি ঠিকঠাক কাজ করবে। এটি ব্যর্থ হওয়ার কারণটি হ'ল সার্ভার.জেএস ফাইলটি অন্য ফাইলগুলি অন্তর্ভুক্ত করেছে, তবে পথগুলি গণ্ডগোল হয়েছে। এই পদ্ধতিটি ব্যবহার করে, আমি আমার .sh স্ক্রিপ্টে ডিরেক্টরিটিতে সিডি করতে পারি, তারপরে সেখানে সম্পর্কিত সমস্ত কিছু চালাতে পারি।
দাড়িবিজেক

9

সংযুক্ত প্রশ্ন থেকে উত্তর অনুলিপি করা হয়েছে ।

আপনি পিএম 2 ব্যবহার করতে পারেন , এটি বিল্ট ইন লোড ব্যালেন্সার সহ নোড.জেএস অ্যাপ্লিকেশনগুলির জন্য একটি উত্পাদন প্রক্রিয়া পরিচালক।

পিএম 2 ইনস্টল করুন

$ npm install pm2 -g

একটি অ্যাপ্লিকেশন শুরু করুন

$ pm2 start app.js

আপনি যদি এক্সপ্রেস ব্যবহার করেন তবে আপনি নিজের অ্যাপ্লিকেশনটি শুরু করতে পারেন

pm2 start ./bin/www --name="app"

সমস্ত চলমান প্রক্রিয়া তালিকাভুক্ত:

$ pm2 list

এটি সমস্ত প্রক্রিয়া তালিকাবদ্ধ করবে। তারপরে আপনি নিম্নলিখিত আদেশটি দিয়ে অ্যাপ্লিকেশনটির আইডি বা নাম ব্যবহার করে আপনার পরিষেবা বন্ধ / পুনঃসূচনা করতে পারেন।

$ pm2 stop all                  
$ pm2 stop 0                    
$ pm2 restart all               

লগ প্রদর্শন করতে

$ pm2 logs ['all'|app_name|app_id]

এটি কীভাবে সিস্টেম বুটে স্বয়ংক্রিয়ভাবে শুরু করে? আপনি কেবল সিএলআই ম্যানুয়াল টাইপিং অনুলিপি / আটকান
গ্রীন

@ গ্রীন, রান করুন, $pm2 startupএরপরে আপনি দেখতে পাবেন দুপুর ২ টা ম্যানুয়ালি একটি কমান্ড চালাতে বলছে, অনুলিপি করুন এবং এটি চালান। তারপরে, $pm2 saveএখন আপনার অ্যাপ্লিকেশন.জেগুলি সিস্টেম রিবুটগুলি থেকে বেঁচে থাকবে
যজ্ঞেশ

7

তার জন্য আপনাকে /etc/init.d ফোল্ডারে শেল স্ক্রিপ্ট তৈরি করতে হবে। এটি কখনও কখনও জটিল না হয় যদি আপনি এটি কখনও না করেন তবে ওয়েবে init.d স্ক্রিপ্টগুলিতে প্রচুর তথ্য রয়েছে।

চিরকালের সাথে কফি স্ক্রিপ্ট সাইট চালানোর জন্য আমি এখানে একটি স্ক্রিপ্টের নমুনা নিলাম:

#!/bin/bash
#
# initd-example      Node init.d 
#
# chkconfig: 345 
# description: Script to start a coffee script application through forever
# processname: forever/coffeescript/node
# pidfile: /var/run/forever-initd-hectorcorrea.pid 
# logfile: /var/run/forever-initd-hectorcorrea.log
#
# Based on a script posted by https://gist.github.com/jinze at https://gist.github.com/3748766
#


# Source function library.
. /lib/lsb/init-functions


pidFile=/var/run/forever-initd-hectorcorrea.pid 
logFile=/var/run/forever-initd-hectorcorrea.log 

sourceDir=/home/hectorlinux/website
coffeeFile=app.coffee
scriptId=$sourceDir/$coffeeFile


start() {
    echo "Starting $scriptId"

    # This is found in the library referenced at the top of the script
    start_daemon

    # Start our CoffeeScript app through forever
    # Notice that we change the PATH because on reboot
    # the PATH does not include the path to node.
    # Launching forever or coffee with a full path
    # does not work unless we set the PATH.
    cd $sourceDir
    PATH=/usr/local/bin:$PATH
    NODE_ENV=production PORT=80 forever start --pidFile $pidFile -l $logFile -a -d --sourceDir $sourceDir/ -c coffee $coffeeFile

    RETVAL=$?
}

restart() {
    echo -n "Restarting $scriptId"
    /usr/local/bin/forever restart $scriptId
    RETVAL=$?
}

stop() {
    echo -n "Shutting down $scriptId"
    /usr/local/bin/forever stop $scriptId
    RETVAL=$?
}

status() {
    echo -n "Status $scriptId"
    /usr/local/bin/forever list
    RETVAL=$?
}


case "$1" in
    start)
        start
        ;;
    stop)
        stop
        ;;
    status)
        status
        ;;
    restart)
        restart
        ;;
    *)
        echo "Usage:  {start|stop|status|restart}"
        exit 1
        ;;
esac
exit $RETVAL

আমাকে নিশ্চিত করতে হয়েছিল যে ফোল্ডার এবং PATHs স্পষ্টরূপে সেট করা হয়েছে বা রুট ব্যবহারকারীর কাছে উপলভ্য ছিল যেহেতু init.d স্ক্রিপ্টগুলি রুট হিসাবে চালানো হয়।


2
আপনার যদি কোনও নির্ভরতা থাকে যা ডি.ডি. দিয়ে শুরু হয় তবে আপনার কাছে লোডিং অর্ডার সমস্যা থাকতে পারে।
ক্রিক

@ alexandru.topliceanu আমি লিঙ্কটি ঠিক করেছি।
হেক্টর Correa

6

পিএম 2 ব্যবহার করুন

সার্ভার প্রোডাকশন সার্ভার চালানোর জন্য সেরা বিকল্পটি

আপনার অ্যাপ্লিকেশনটি এভাবে চালানোর সুবিধা কী কী?

  • পিএম 2 ক্রাশ হয়ে গেলে আপনার অ্যাপ্লিকেশনটি স্বয়ংক্রিয়ভাবে পুনঃসূচনা করবে।

  • এই ক্ষেত্রে /home/safeuser/.pm2/logs/app-err.log এ একটি ফাইলের মধ্যে - পিএম 2 আপনার অযথিত ব্যতিক্রমগুলির একটি লগ রাখবে।

  • একটি কমান্ডের সাথে, পিএম 2 এটি নিশ্চিত করতে পারে যে সার্ভারটি পুনরায় বুট করার সময় এটি পরিচালনা করে এমন কোনও অ্যাপ্লিকেশন পুনরায় চালু হবে। মূলত, আপনার নোড অ্যাপ্লিকেশনটি পরিষেবা হিসাবে শুরু হবে।

রেফ: https://www.digitalocean.com/commune/tutorials/how-to-use-pm2-to-setup-a-node-js-pr Prod-- পরিবেশ-on-an-ubuntu- vps


5

পরিষেবা হিসাবে চলমান নোড অ্যাপ্লিকেশনগুলি পেতে সর্বদা তৈরি করা হয়নি। সঠিক পদ্ধতিটি হল একটি / etc / inittab এন্ট্রি (পুরানো লিনাক্স সিস্টেম) বা একটি আপস্টার্ট (নতুন লিনাক্স সিস্টেম) তৈরি করা।

এটি কীভাবে আপস্টার্ট হিসাবে সেট আপ করবেন সে সম্পর্কে এখানে কিছু ডকুমেন্টেশন রয়েছে: https://github.com/cvee/node-upstart


সেন্টস্টোসে আপস্টার্ট আমাকে ব্যর্থ করেছিল এবং আমি পড়েছিলাম যে এটি অদৃশ্য হয়ে যাবে। একটি init.d এন্ট্রি তৈরি করা সত্যিই সর্বাধিক ব্যবহারকারীর বান্ধব উপায় নয়, তবে এটি আমার মনে হয় লিনাক্স :)
জোরে

5

crontabCentOS x86 6.5 এ আমার জন্য কাজ করে না। @ রিবুট মনে হচ্ছে কাজ করছে না।

অবশেষে আমি এই সমাধান পেয়েছি:

সম্পাদনা: /etc/rc.local

sudo vi /etc/rc.local

ফাইলের শেষে এই লাইনটি যুক্ত করুন। পরিবর্তনUSER_NAME এবং PATH_TO_PROJECTআপনার নিজের। NODE_ENV=productionমানে অ্যাপ্লিকেশনটি প্রডাকশন মোডে চলে। একাধিক নোড.জেএস অ্যাপ্লিকেশন চালানোর প্রয়োজন হলে আপনি আরও লাইন যুক্ত করতে পারেন।

su - USER_NAME -c "NODE_ENV=production /usr/local/bin/forever start /PATH_TO_PROJECT/app.js"

NODE_ENVআলাদা লাইনে সেট করবেন না , আপনার অ্যাপ্লিকেশনটি এখনও ডেভলপমেন্ট মোডে চলবে, কারণ চিরকালের জন্য তা পায় না NODE_ENV

# WRONG!
su - USER_NAME -c "export NODE_ENV=production"

Vi সংরক্ষণ করুন এবং ছেড়ে দিন (টিপুন ESC : w q return)। আপনি আপনার সার্ভারটি রিবুট করার চেষ্টা করতে পারেন। আপনার সার্ভারটি পুনরায় বুট করার পরে, আপনার নোড.জেএস অ্যাপ্লিকেশনটি স্বয়ংক্রিয়ভাবে চালিত হওয়া উচিত, এমনকি যদি আপনি কোনও অ্যাকাউন্টে দূরবর্তীভাবে এসএসএসের মাধ্যমে লগইন না করেন।

আপনি NODE_ENVআপনার শেল ভাল পরিবেশ সেট করতে চাই । NODE_ENVআপনার অ্যাকাউন্টটি স্বয়ংক্রিয়ভাবে সেট হয়ে যাবেUSER_NAME লগ ইন ।

echo export NODE_ENV=production >> ~/.bash_profile

সুতরাং আপনি পুনরায় /PATH_TO_PROJECT/app.jsসেট NODE_ENVনা করে ssh এর মাধ্যমে চিরকালের জন্য বন্ধ / শুরু করার মতো কমান্ড চালাতে পারেন ।


ডিবিয়ান .6..6 এ একই সমস্যা পেয়েছে। এটা আমার জন্য স্থির। অনেক ধন্যবাদ.
ড্যানিয়েল ভ্রুট

আপনি যদি 'চিরকালের' ব্যবহার করতে না চান সেই ক্ষেত্রে আপনি লাইনটি 'su - USER_NAME -c "NODE_ENV = প্রোডাকশন নোড / PATH_TO_PROJECT / বিন / www" "তে পরিবর্তন করতে পারেন।
ইয়াওবিন

3

আমি একটি স্ক্রিপ্ট লিখেছিলাম যা ঠিক এটি করে:

https://github.com/chovy/node-startup

আমি চিরকালের জন্য চেষ্টা করি নি, তবে আপনি যে আদেশটি চালাচ্ছেন তা আপনি নিজেরাই অনুকূলিত করতে পারেন, সুতরাং এটি সরাসরি হওয়া উচিত:

/etc/init.d/node-app start
/etc/init.d/node-app restart
/etc/init.d/node-app stop

1

আমি উপরের উত্তর প্রচুর চেষ্টা করেছিলাম। তাদের কেউই আমার পক্ষে কাজ করেনি। আমার অ্যাপ্লিকেশনটি /homeব্যবহারকারীর হিসাবে ইনস্টল করা আছে , মূল হিসাবে নয়। সম্ভবত এটির অর্থ হ'ল যখন উপরে বর্ণিত শুরু স্ক্রিপ্টগুলি চালিত হয়, /homeএখনও মাউন্ট করা হয় না, সুতরাং অ্যাপটি শুরু হয় না not

তারপরে আমি ডিজিটাল মহাসাগরের এই নির্দেশাবলী পেয়েছি:

https://www.digitalocean.com/community/tutorials/how-to-use-pm2-to-setup-a-node-js-production-environment-on-an-ubuntu-vps

বর্ণিত হিসাবে পিএম 2 ব্যবহার করা খুব সহজ এবং পুরোপুরি কাজ করে: আমার ভার্চুয়াল সার্ভারগুলিতে দুটি শারীরিক ক্র্যাশ হয়েছিল - ডাউনটাইমটি ছিল মাত্র এক মিনিট।


পিএম 2 এর গিথুবে চিরকালের চেয়ে অনেক বেশি তারকা (2x) রয়েছে এবং এর আরও বৈশিষ্ট্যও রয়েছে। আমার মনে হয় বেশিরভাগ উত্তর এখানে অপ্রচলিত।
inf3rno

1

Rc.local এর সমস্যাটি হ'ল কমান্ডগুলি রুট হিসাবে অ্যাক্সেস করা হয় যা ব্যবহারকারী হিসাবে লগ ইন এবং sudo ব্যবহারের চেয়ে পৃথক।

আমি প্রারম্ভকালীন কমান্ডগুলিতে ইত্যাদি / প্রোফাইল.d করতে চাইলে একটি .sh স্ক্রিপ্ট যুক্ত করে এই সমস্যার সমাধান করেছি। প্রোফাইল.d এ থাকা যে কোনও .sh ফাইল স্বয়ংক্রিয়ভাবে লোড হবে এবং কোনও কমান্ড এমন আচরণ করা হবে যেন আপনি নিয়মিত সুডো ব্যবহার করেছেন।

এটির একমাত্র খারাপ দিকটি নির্দিষ্ট ব্যবহারকারীর জন্য জিনিস শুরু করার জন্য লগিন করতে হবে যা আমার পরিস্থিতিতে সর্বদা ক্ষেত্রে ছিল।


0

সম্পূর্ণ উদাহরণ crontab (/ etc / crontab এ অবস্থিত) ..

#!/bin/bash

# edit this file with .. crontab -u root -e
# view this file with .. crontab -u root -l

# put your path here if it differs
PATH=/root/bin:/root/.local/bin:/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/snap/bin

# * * * * * echo "executes once every minute" > /root/deleteme

@reboot cd /root/bible-api-dbt-server; npm run forever;
@reboot cd /root/database-api-server; npm run forever;
@reboot cd /root/mailer-api-server; npm run forever;

-1

চিরকালের জন্য আপনার নোড শুরু করতে আপনি শেলটিতে নিম্নলিখিত কমান্ডটি ব্যবহার করতে পারেন:

forever app.js //my node script

আপনার মনে রাখতে হবে যে আপনার অ্যাপ্লিকেশনটি যে সার্ভারে চলছে সেটিকে সর্বদা চালু রাখা উচিত।

আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.