2013-10-18 24 views
1

我有一臺linux服務器(ubuntu)並安裝了node.js.關閉終端後的網絡服務器

我的腳本:webserver.js:

var http = require('http'); 
http.createServer(function (req, res) { 
    res.writeHead(200, {'Content-Type': 'text/plain'}); 
    res.end('Hello World\n'); 
}).listen(80); 
console.log('Server is running'); 

我連接到服務器用膩子啓動服務器腳本: 節點webserver.js

它的工作原理。但是,如果我關閉終端,則Web服務器將終止。我該如何解決這個問題?

+0

[Node.js作爲後臺服務]的可能重複(http://stackoverflow.com/questions/4018154/node-js-as-a-background-service) – moka

回答

1

最簡單的方法將在後臺使用nohup來啓動它:

nohup your_server & 

這就夠了測試。如果你正在尋找一個穩定的生產解決方案,那麼你將不得不制定腳本。

+1

您是否認爲這是一個? http://blog.nodejitsu。com/keep-a-nodejs-server-up-with-forever - >部分:保持它與Forever – Sebastian

+0

運行是的,這正是我的意思,但博客文章更詳細。 ;)按照它,這是要走的路。 – hek2mgl

0

你也可以使用屏幕。 要安裝它

apt-get update && apt-get install -yf screen 

(我認爲)。

然後,創建使用

screen -S nodeserver 

一個新的屏幕(nodeserver取代withwhatever你想給的網名。不要將此處留空!離開這個空白使得它很難關閉)。

一旦你使用屏幕,它就像它自己的終端一樣。所以,從那裏開始你的 服務器。然後,按

按Ctrl +一個

d

要退出畫面。屏幕將繼續在後臺運行,並且不會斷開連接。這是有利的一面是,你可以在以後重新使用

screen -r nodeserver 

(明白爲什麼我說讓它難忘的畫面?否則,它會被賦予一個隨機數,這是很難使用,但可發現投擲使用screen -list

所以,如果有任何錯誤拋出,或者你記錄了某些東西,所有這些信息仍然可用。請注意,如果您使用ssh,屏幕並不總是很好玩。

如果由於某種原因,屏幕凍結,那麼這是一個問題,但我認爲你可以使用

screen -S nodeserver -X quit 

或類似物(別人的東西修復它,請隨時免費的,如果要改變這種這是錯誤的)。