これは古い質問ですが、Google で上位にランクされています。スクリーンセッション内で node.js プロセスをフラグを使用して、&
またはnohup
フラグを使用して実行することは、すべて回避策であるため、投票数が最も多い回答はほとんど信じられません。
特に 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 イベントによってトリガーされる単純なシェル スクリプトです。詳細については、こちらをご覧ください。
ドッカー:
-d
オプションを指定して Docker コンテナーでサーバーを実行するだけで、ほら、デーモン化された 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
これが誰かがこのページにたどり着くのに役立つことを願っています. 作業には常に適切なツールを使用してください。多くの頭痛と何時間も節約できます。