【问题标题】:Running nodejs, expressjs, socket.io application on a real server not working在真实服务器上运行 nodejs、expressjs、socket.io 应用程序不起作用
【发布时间】:2015-03-14 13:30:15
【问题描述】:

我能够在我的本地机器上成功运行 nodejs、expressjs、socket.io 和 mongodb 应用程序http://localhost:3000

现在,我已经在支持 nodejs 的真实服务器上上传了应用程序,但是如何使用端口 3000 运行应用程序?所以www.mywebsite.com/MyApp:3000 不起作用:(我必须在 PORT 中运行吗?

你能帮帮我吗?

这是我的服务器 app.js 代码:

var express = require('express');

var  mongoose = require ('mongoose');

var app = express();
app.use('/', express.static('../app/'));
app.use('/bower_components', express.static('../bower_components/'));

var http = require('http').Server(app);
var io = require('socket.io')(http);

//mongodb databse
mongoose.connect ('mongodb://127.0.0.1/mydb', function (err) {
    if (err) {
        console.log (err);
    } else {
        console.log ("Connected to mongodb");
    }
});


io.sockets.on ('connection', function (socket) {
    console.log("hello world, I'm running fine!")
});

http.listen(3000, function () {
    'use strict';
});

编辑:如果我使用端口 80,我会收到此错误:

 events.js:87
          throw er; // Unhandled 'error' event
                ^
    Error: listen EACCES
        at exports._errnoException (util.js:748:11)
        at Server._listen2 (net.js:1123:19)
        at listen (net.js:1166:10)
        at Server.listen (net.js:1251:5)
      ....etc

【问题讨论】:

  • 很可能,你想要www.mywebsite.com:3000

标签: node.js mongodb socket.io server


【解决方案1】:

要使用现有节点/快速代码在生产环境中运行您的应用,您需要导航到 http://www.mywebsite.com:3000/MyApp(假设您的防火墙允许端口 3000)

您可以通过更改这部分代码将端口更改为您想要的任何内容:

http.listen(3000, function () {
    'use strict';
});

web 的标准端口是 80。所以你可以把它改成

http.listen(80, function () {
    'use strict';
});

然后照常使用您的网址 - http://www.mywebsite.com/MyApp

注意:如果您的服务器上有另一个 Web 服务器已经在使用此端口,那么您将遇到问题,因为它在端口空闲之前不会侦听。您必须先禁用侦听端口 80 的其他 Web 服务器。 非特权用户(非 root)也不能监听低于 1024 端口的套接字。

【讨论】:

  • 谢谢,但是如果我使用端口 80 会出错,请查看我的编辑
  • 另请阅读我关于已使用端口 80 的说明。是否安装了 IIS?
  • 运行netstat -an | findstr :80 看看是否有任何东西在使用这个端口。
  • 在 linux 上运行这个而不是 netstat -an | grep ':80' 尝试使用提升的权限运行你的节点 shell(即 sudo ..)
  • 你试过用 sudo 运行节点吗?非特权用户(非 root)无法在低于 1024 的端口上打开监听套接字
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2016-04-04
  • 2017-11-17
  • 1970-01-01
  • 1970-01-01
  • 2018-02-19
相关资源
最近更新 更多