2011-07-12 144 views
3

我已經設置了一個Node.js服務器的測試,但是如何最好地啓動服務器?Node.js,express和集羣

我現在的策略是使用集羣(http://learnboost.github.com/cluster/)。這大多工作真的很好。我在我的app.js文件中的以下設置(與快遞創建):

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當我在本地測試。我用命令

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的建議是好的:永遠幾乎肯定是比屏幕或nohup更強大的解決方案。 – mattbornski

0

你好像還設置

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

這可能不會在Linux服務器上存在。