3

私は と を使用してリアルタイム アプリに取り組んできました。これをNode.jsローカルSocket.ioテスト段階から、一部のユーザーと一緒にテストしたいと考えています。問題は、サーバーへの ssh セッションを閉じると、使用し始めたサーバーも停止することです。node app.js

使用することを考えましnohup,たが、サーバーをダウンさせるセグメンテーション違反やその他のランダムなエラーが発生することがあります。1) サーバーがいつクラッシュしたか (できればその理由も) を知る必要があるため、クラッシュを減らしてサーバーを再起動できるように改善することができます。さらに、サーバーを自分で再起動するために 24 時間年中無休で起きているわけにはいかないので、何らかの機能daemonがあると便利です。

npm 経由で利用できることがわかりましforeverたが、それよりも新しいバージョンの Node と互換性がなく、0.8.x実行中です0.9.1。また、うまく維持されていないようです。

私も過去につまずいたdistributionup、しかしそれらを使用してまともなアプリを構築するためのドキュメントと例が不足しているようです.

cluster次に、モジュールとモジュールを使用したこの回答がありosます。https://stackoverflow.com/a/10997753/1883464

しかし、ノードはクラスターを実験的なものとしてリストしていますhttp://nodejs.org/api/cluster.html

実際の運用環境で Node サーバーを稼働させ続ける (そしてそのコードを更新する) ことについての回答、例、および議論が不足しているため、私は彼らのアプリをデプロイしたいと思った最初の人物であると感じ始めています。 ;) どういうわけか、私が見つけていないこの問題に対するいくつかの一般的な答えがあると確信しています.

4

1 に答える 1

2

OSが提供するinitシステムには、Node.jsモジュールに比べて多くの利点があります。initシステムに接続することが、再起動後にアプリが自動的に起動するようにする唯一の方法です。

私たちはUbuntuとUpstartを使用して多くの成功を収めています。Upstartはクラッシュ時にアプリケーションを再起動し、プロセスを実行する前にユーザーID/グループを設定できます。ルートとして実行しないでください

Upstartファイルの作成は少し面倒です。NodeForemanを使用て、アプリケーションから一連のUpstartファイルを自動的に生成してエクスポートしますProcfile

npm i -g foreman
cd MY_APP
nf export -o /etc/init

これにより、とで開始および/etc/init停止できる一連のアップスタートファイルが配置されます。sudo start foremansudo stop foreman

ここでの解決策はUpstartだけではありません。必要に応じて、上記を他のOSに適合させることができます。Redhatで私は見ることをお勧めしsystemdます。Mac OSXを本番環境に使用することはお勧めしませんが、ピンチで使用できますlaunchd

于 2013-02-08T17:02:51.847 に答える