これは古い質問ですが、Googleで上位にランクされています。フラグ&
を付けて、またはnohup
フラグを付けてさえも、screenセッション内でnode.jsプロセスを実行することは、単なる回避策であるため、私はほとんど最高の投票された答えを信じることができません。
特にscreen / tmuxソリューション。これは本当にアマチュアソリューションと見なされます。ScreenとTmuxは、プロセスの実行を維持するためのものではなく、ターミナルセッションの多重化のためのものです。サーバーでスクリプトを実行していて、切断する場合は問題ありません。しかし、node.jsサーバーの場合、プロセスをターミナルセッションにアタッチしたくない場合があります。これは壊れやすいです。実行を続けるには、プロセスをデーモン化する必要があります!
それを行うための良いツールがたくさんあります。
PM2:http : //pm2.keymetrics.io/
# basic usage
$ npm install pm2 -g
$ pm2 start server.js
# you can even define how many processes you want in cluster mode:
$ pm2 start server.js -i 4
# you can start various processes, with complex startup settings
# using an ecosystem.json file (with env variables, custom args, etc):
$ pm2 start ecosystem.json
私がPM2を支持する大きな利点の1つは、システムの起動スクリプトを生成して、再起動間でプロセスを維持できることです。
$ pm2 startup [platform]
どこにplatform
することができますubuntu|centos|redhat|gentoo|systemd|darwin|amazon
。
forever.js:https : //github.com/foreverjs/forever
# basic usage
$ npm install forever -g
$ forever start app.js
# you can run from a json configuration as well, for
# more complex environments or multi-apps
$ forever start development.json
初期化スクリプト:
initスクリプトの作成方法については詳しく説明しません。私はこのテーマの専門家ではないため、この回答には長すぎますが、基本的には、OSイベントによってトリガーされる単純なシェルスクリプトです。これについて詳しくは、こちらをご覧ください
Docker:
ちょうどとドッカーコンテナでサーバーを実行する-d
オプションと、出来上がり、あなたはデーモン化のNode.jsサーバーを持っています!
以下は、サンプルのDockerfileです(node.js 公式ガイドから):
FROM node:argon
# Create app directory
RUN mkdir -p /usr/src/app
WORKDIR /usr/src/app
# Install app dependencies
COPY package.json /usr/src/app/
RUN npm install
# Bundle app source
COPY . /usr/src/app
EXPOSE 8080
CMD [ "npm", "start" ]
次に、イメージをビルドしてコンテナを実行します。
$ docker build -t <your username>/node-web-app .
$ docker run -p 49160:8080 -d <your username>/node-web-app
これが誰かがこのページに着陸するのに役立つことを願っています。常に適切なツールを使用してください。それはあなたに多くの頭痛と時間を節約します!
exit
。Puttyウィンドウを閉じると失敗します。