2011-07-12 14 views
3

Node.jsサーバーのテストをセットアップしましたが、サーバーはどのように起動されましたか?Node.js、express and cluster

ここでの私の戦略は、cluster(http://learnboost.github.com/cluster/)を使用することです。これは、ほとんどが本当にうまく動作します。私はローカルでテストするとき

cluster(app) 
.use(cluster.reload()) 
.use(cluster.reload('views', {extensions: ['.js', '.ejs']})) 
.use(cluster.logger('logs')) 
.use(cluster.stats()) 
.use(cluster.repl('/Users/testuser/work/1test/test.sock')) 
.use(cluster.debug()) 
.use(cluster.pidfiles()) 
.use(cluster.cli()) 
.listen(3000); 

それは私のMac上で動作します。私は(Expressで作成した)私のapp.jsファイルに次のセットアップを持っています。私は

nohup node app.js & 

コマンドでそれを起動しかし、私は、Linux上で実行すると、マスターが死ん端末から切り離したときに - 作業スレッドがまだ働いています。 Macでは、端末を閉じても実行されます。

私はそれがユーザーを変更する必要があるかもしれないということ、これは明らかにしてクラスタ内で行うことができますお読みください。 .SET(「ユーザー」、「ランボー」)

誰がための「ベストプラクティス」を持っていますnode.jsを「デーモン」として起動し、ターミナルを取り外すことができますか?

私は起動時にログインする必要があるユーザーを変更しますか?

プロセスを強制終了せずに端末から切り離すために画面などのプログラムを使用する必要がありますか?

答えて

4

永遠に試してください。

npm install -g forever 

https://github.com/indexzero/forever

+0

返信いただきありがとうございます。私は誤ってノード0.5.xにアップグレードしたことを知りました。さらに、私はmysqlに接続できませんでした。これにより、マスタースレッドが終了したタイムアウトが発生しました。エラーはログに書き込まれませんでした。一度私は0.4.9にダウングレードしてMySqlへのアクセスをテストしたので、私は127.0.0.1に接続できたと確信していました。ターミナルからも取り外すことができます。 – Baxter

+0

他の問題があるかのように聞こえますが、@ idefineの提案は良いです:永遠にスクリーンやノーアップよりも確かに堅牢なソリューションです。 – mattbornski

0

あなたもおそらくあなたのLinuxサーバ上に存在しない

.use(cluster.repl('/Users/testuser/work/1test/test.sock'))

を設定しているように見えます。