生产中的SailsJS - 错误:听EADDRINUSE

时间:2013-07-07 17:49:04

标签: apache node.js sails.js

我有一台带有CentOS和Apache服务器的VPS服务器。

但我也想运行我的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服务器吗?

2 个答案:

答案 0 :(得分: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

答案 1 :(得分:0)

您不能为不同的应用程序使用相同的端口。 NodeJS可以使用任何开放端口。您需要的是您的应用程序的端口转发。 :)