【问题标题】:SailsJS on production - Error: listen EADDRINUSESailsJS 在生产中 - 错误:听 EADDRINUSE
【发布时间】:2013-07-07 17:49:04
【问题描述】:

我有一个带有 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 服务器吗?

【问题讨论】:

  • 您已经回答了您的问题。如果 apache 在某个端口上运行,则 nodejs 无法在该端口上运行。一个人将如何决定他想要访问哪个应用程序?

标签: apache node.js sails.js


【解决方案1】:

不,你不能。

当服务器进程打开一个 TCP 端口来响应请求时,它会独占使用该端口。所以,你不能在同一个端口上同时运行 SailsJS 和 Apache 服务器。

话虽如此,您可以使用 Apache 做很多有趣的事情,例如将特定请求代理到运行在不同端口上的其他服务器。

典型的设置是 Apache 在端口 80 上,SailsJS 在端口 8000(或其他可用端口)上,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,了解此方法的示例实现。

【讨论】:

    【解决方案2】:

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

    【讨论】:

      猜你喜欢
      • 2017-07-28
      • 1970-01-01
      • 2016-07-12
      • 2016-09-16
      • 2015-10-09
      • 1970-01-01
      • 1970-01-01
      • 2014-01-17
      • 2014-12-11
      相关资源
      最近更新 更多