2013-07-07 70 views
0

我有一個與CentOS和Apache服務器的VPS服務器。SailsJS在生產 - 錯誤:聽EADDRINUSE

但我想運行我的node.js應用程序。我正在使用sails.js 此sails應用程序試圖偵聽指定主機的端口80。

這裏是錯誤(後帆電梯運行):

debug: Starting server in /var/www/user/data/nodeprojects/projectname... 
info - socket.io started 
debug: Restricting access to host: projectname.com 
warn - error raised: Error: listen EADDRINUSE 
warn: 
warn: Server doesn't seem to be starting. 
warn: Perhaps something else is already running on port 80 with hostname projectname.com? 

問題是什麼?我可以在一臺服務器上使用一個端口(80)運行apache和nodejs服務器嗎?

+1

你已經回答了你的問題。如果apache在端口上運行,那麼nodejs不能在該端口上運行。如何決定他想要到哪個應用程序? – hereandnow78

回答

2

不,你不能。

當服務器進程打開一個TCP端口來回答請求時,它將獨佔使用該端口。所以,你不能在同一個端口上運行SailsJS和Apache服務器。儘管如此,你可以用Apache做很多有趣的事情,例如代理對運行在不同端口上的其他服務器的特定請求。

一個典型的設置將在端口80上有Apache,在端口8000上有SailsJS(或其他一些可用的端口),Apache會將請求轉發到某些URL到SailsJS,然後將回復從SailsJS轉發回瀏覽器。

請參閱configuring Apache on Mountain Lion proxying to Node.jshttp://thatextramile.be/blog/2012/01/hosting-a-node-js-site-through-apache作爲此方法的示例實現。

0

您不能將不同的應用程序使用相同的端口。 NodeJS可以使用任何開放端口。您需要的是您的應用的端口轉發。 :)