2013-07-07 69 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可以使用任何开放端口。您需要的是您的应用的端口转发。 :)