287

DebianサーバーにNode.jsをインストールしました。このコマンドラインを使用してパテからアプリを起動する方法を理解しています。

node /srv/www/MyUserAccount/server/server.js

アドレス50.51.52.53:8080(IPとポート)でアクセスします。

しかし、パテを閉じるとすぐに、そのアドレスに到達できなくなります50.51.52.53:8080

Node.jsアプリケーションを永続的に実行するにはどうすればよいですか?

ご想像のとおり、私はLinuxとNode.jsの初心者です。

4

19 に答える 19

377

次のようにnpmを使用して永久にインストールできます。

sudo npm install -g forever

そして、次のコマンドでアプリケーションを開始します。

forever server.js

またはサービスとして:

forever start server.js

アプリがクラッシュしたり、何らかの理由で停止したりすると、Foreverはアプリを再起動します。再起動を5に制限するには、次を使用できます。

forever -m5 server.js

実行中のすべてのプロセスを一覧表示するには:

forever list

括弧内の整数に注意し、次のように使用してプロセスを停止します。

forever stop 0

実行中のプロセスを再開すると、次のようになります。

forever restart 0

アプリケーションファイルで作業している場合は、パラメータを使用して、ファイルが変更-wされるたびに自動的に再起動できます。server.js

forever -w server.js
于 2012-10-18T07:46:42.637 に答える
253

他の回答はOPの問題を解決しますが、それらはすべてやり過ぎであり、なぜ彼または彼女がこの問題を経験しているのかを説明していません。

重要なのは、「パテを閉じると、住所に到達できない」という行です。

Puttyのリモートホストにログインすると、SSH linuxプロセスが開始され、そのSSHセッションから入力されたすべてのコマンドがそのプロセスの子として実行されます。

問題は、Puttyを閉じると、SSHセッションを終了し、そのプロセスとアクティブな子プロセスを強制終了することです。パテを閉じると、サーバーをフォアグラウンドで実行したため、誤ってサーバーを強制終了します。この動作を回避するには、コマンドに&を追加して、サーバーをバックグラウンドで実行します。

node /srv/www/MyUserAccount/server/server.js &

ここでの問題は、Linuxの知識の欠如であり、ノードに関する質問ではありません。詳細については、http: //linuxconfig.org/understanding-foreground-and-background-linux-processesをご覧ください。

アップデート:

他の人が述べているように、ノードサーバーはターミナルを出るときにまだ死ぬかもしれません。私が遭遇した一般的な落とし穴は、ノードプロセスがbgで実行されていても、それはstdoutであり、stderrはまだターミナルに向けられているということです。これは、ノードサーバーがconsole.logまたはconsole.errorに書き込むと、パイプの破損エラーを受け取り、クラッシュすることを意味します。これは、プロセスの出力を配管することで回避できます。

node /srv/www/MyUserAccount/server/server.js > stdout.txt 2> stderr.txt &

問題が解決しない場合は、 tmuxnohupなどを調べる必要があります。これらは、すべてのタイプのプロセス(データベース、ロギングサービス、その他の言語)の実行に使用できるため、ノード固有のソリューションよりも堅牢です。

サーバーを終了させる可能性のあるよくある間違いは、実行後、nohup node your_path/server.js &クリックするだけでPuttyターミナルを閉じることです。代わりにコマンドを使用する必要があります。そうexitすれば、ノードサーバーが稼働します。

于 2015-08-15T21:06:08.480 に答える
96

PM2を使用できます。これは、ロードバランサーが組み込まれたNode.jsアプリケーションの本番プロセスマネージャーです。

PM2をインストールします

$ npm install pm2 -g

アプリケーションを起動します

$ pm2 start app.js

Expressを使用している場合は、次のようにアプリを起動できます

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

実行中のすべてのプロセスの一覧表示:

$ pm2 list

すべてのプロセスが一覧表示されます。その後、次のコマンドでアプリのIDまたは名前を使用してサービスを停止/再開できます。

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

ログを表示するには

$ pm2 logs ['all'|app_name|app_id]
于 2016-10-26T06:15:27.460 に答える
44

クラッシュが発生した場合にノードを再起動するForeverなどを探して、これをデーモン化することをお勧めします。

于 2012-10-03T02:52:49.220 に答える
41

ターミナルでノードアプリを常に実行したい場合は、screenを使用してください。

ubuntu / debianにインストールします:

sudo apt-get install screen

使用法:

$ screen
$ node /path/to/app.js

ctrl + aそしてctrl + d却下する

取得するために戻ってきました:

1つの画面:screen -r

複数の画面がある場合は、次のようにすべての画面を一覧表示できます。screen -ls

その後:screen -r pid_number

于 2012-10-03T13:58:17.770 に答える
32

あなたは単にこれを使うことができます

nohup node /srv/www/MyUserAccount/server/server.js &

これにより、アプリケーションが実行され続け、シャットダウンするには、アプリケーションを強制終了する必要があります。

そのためにはhtop、ノードをインストールして検索し、それを強制終了することができます

于 2015-10-27T05:04:08.647 に答える
13

Foreverは、まさにそれを行うための非常に優れたNodeJsモジュールです。

foreverコマンドラインに入力してインストールします

$ npm install forever -g

次に、次のコマンドを使用してnode.jsスクリプトを実行します

$ forever start /path/to/script.js

準備できた。さらに、実行することができます

$ forever list

実行中のすべてのスクリプトを表示します。次のように入力すると、特定のスクリプトを終了できます

$ forever stop [pid]

ここで、はコマンド[pid]から取得するスクリプトのプロセスIDです。listすべてのスクリプトを停止するには、次のように入力します

$ forever stopall
于 2018-03-09T15:30:31.480 に答える
13

インストール

$ [sudo] npm install forever -g

スクリプトを継続的に実行するために永遠に使用できます

forever start server.js

forever list

停止サービス用

forever stop server.js
于 2018-03-16T12:06:07.920 に答える
12

開発中は、nodemonを使用することをお勧めします。ファイルが変更されるたびにサーバーが再起動します。他の人が指摘しているように、Foreverはオプションですが、本番環境では、使用しているプラ​​ットフォームによって異なります。通常、サービスを維持するためにオペレーティングシステムが推奨する方法を使用することをお勧めします(例: http: //www.freedesktop.org/wiki/Software/systemd/)。

于 2012-10-18T08:30:33.963 に答える
10

AWSUbuntovmでチェックインしたnohupworkingは正しいに従ってくださいsyntax

ubuntu@ip-172-00-00-00:~/ms$ nohup node server.js &

次にEnterキーを押すと、この行が表示されます

ubuntu@ip-172-00-00-00:~/ms$ nohup: ignoring input and appending output to ‘nohup.out’

次にこれを入力します

rm nohup.out

ここに画像の説明を入力してください

于 2016-10-31T10:40:55.693 に答える
9

これが私が個人的なプロジェクトに使用している新興ソリューションです

に配置/etc/init/node_app_daemon.conf

description "Node.js Daemon"
author      "Adam Eberlin"

stop on shutdown

respawn
respawn limit 3 15

script
  export APP_HOME="/srv/www/MyUserAccount/server"
  cd $APP_HOME
  exec sudo -u user /usr/bin/node server.js
end script

これは、アプリケーションがクラッシュした場合のアプリケーションの再生成も処理します。15秒以内に3回以上クラッシュした場合、アプリケーションのリスポーンの試行を断念します。

于 2012-10-03T03:00:11.580 に答える
9

私は永遠にその仕事を完全にうまくやることを見つけました。

すでにnpmがインストールされていると仮定して、インストールされていない場合は、

sudo apt-get install npm

その後、永久にインストールします

npm install forever --global

これで、このように実行できます

forever start app.js

https://codingweb.io/run-nodejs-application-background/

于 2017-03-17T12:29:53.480 に答える
8

最初にpm2をグローバルにインストールします

npm install -g pm2

その後、開始します

pm2 start bin/www 
于 2018-10-17T08:19:39.233 に答える
7

もう1つの方法は、アプリのシステムユニットを作成することです。次のように、「/ etc / systemd/system」フォルダに「XXX.service」ファイルを作成します。

[Unit]
Description=swagger
After=network.target

[Service]
ExecStart=/usr/bin/http-server /home/swagger/swagger-editor &
WorkingDirectory=/home/swagger
Restart=always
RestartSec=30

[Install]
WantedBy=multi-user.target

利点は、アプリがサービスとして実行され、クラッシュした場合に自動的に再起動することです。

sytemctlを使用して管理することもできます。

systemctl start XXXサービスを開始し、systemctl stop XXX停止しsystemctl enable XXX、システムの起動時にアプリを自動的に起動します。

于 2017-09-12T23:24:36.933 に答える
5

これがお役に立てば幸いです。

コマンドラインで、永久にインストールします。

npm install forever -g

サンプルファイルを作成します。

sudo nano server.js 

ファイルを編集して、ブラウザで直接結果を取得できます。
filezillaまたは任意のエディターを使用してファイルを編集できます。次のコマンドを実行して、ファイルを実行します。

forever start --minUptime 1 --spinSleepTime 1000 -w server.js

ここに画像の説明を入力してください

于 2018-05-29T13:18:10.250 に答える
5

他のパッケージをインストールする必要はありません。

このコマンドを実行します

node server.js > stdout.txt 2> stderr.txt &

server.jsはサーバーファイルであるか、api.jsにすることができます

その後、「終了」を押してターミナルを閉じます

exit
于 2018-11-26T09:40:05.620 に答える
4

pm2アプリケーションを永久に実行するようにしてください。

npm install -g pm2

その後、

pm2 start server.js

アプリを一覧表示して停止するには、コマンドを使用します

pm2 list

pm2 stop 0

于 2020-09-01T04:32:12.530 に答える
2

Node.jsアプリケーションのプロセスマネージャーであるPM2を使用することをお勧めします。PM2は、アプリケーションを管理およびデーモン化する(サービスとして実行する)ための簡単な方法を提供します。

このリンクを参照してください-https://www.digitalocean.com/community/tutorials/how-to-set-up-a-node-js-application-for-production-on-centos-7

于 2017-08-01T14:06:40.037 に答える
2

永遠にパッケージは私のために働きました、ただ一つのこと、それは深く等しいことに依存します、それであなたがそれをインストールすることに問題があったならば:

npm -g install forever

試す:

npm -g install forever deep-equal@1.1.1

代わりは。

于 2020-04-04T06:09:59.790 に答える