【问题标题】:nodejs default doc on ubuntuubuntu 上的 nodejs 默认文档
【发布时间】:2014-11-01 03:10:14
【问题描述】:

我在这里进入了新的领域。根本不是一个 linux 人,但我从我的托管公司购买了一台专用服务器,运行 apache2 的 Ubuntu 12.0.4。我的域名成功解析到该服务器(基本的 html 'Hello World' 索引页面显示正常)。

我已经安装了 npm、node 和 express,它们(据我所知)工作正常。我已将此应用作为“hello.js”添加到根目录:

  var express = require('express');
  var app = express();

  app.get('/', function(req, res){
    res.write("Hello World");
    res.end();
  });

  app.listen(process.env.PORT, function(){
    console.log("Server Started");
  });

在我输入(术语?)并运行“node hello.js”后,我收到“服务器已启动”消息。但是当我去我的域时没有结果。如果我有一个 index.html 页面,我会得到它的内容。如果我删除它,我会得到一个目录列表。

如何使 hello.js 成为网站的默认文档?或者,更一般地说,如何设置入口点以使用此配置在 lve 服务器上运行节点站点?我可以编写节点,但部署比预期的要困难得多。有人可以帮忙吗?

【问题讨论】:

  • process.env.PORT 是什么?通过console.log(process.env.PORT) 查找。也许你需要app.listen( 80 , function...

标签: node.js installation ubuntu-12.04 web-deployment


【解决方案1】:

您所看到的是攻击 Apache 的结果。不是你的 Node.js 服务器。

尝试像这样从命令行启动您的服务器:

$ PORT=8080 node hello.js

然后将您的浏览器指向:

http://www.youdomain.com:8080/

这将在端口 8080 上启动您的 node.js 进程。app.listen 的第一个参数是 process.env.PORT,这是您使用上述命令在命令行中设置的环境变量。

只要您的服务器和本地计算机之间的防火墙没有阻止端口 8080,这应该可以工作。

如果您希望 Node.js 在标准端口 80 上为整个网站提供动力,那么您需要先禁用 Apache 或将其设置为反向代理。

【讨论】:

  • 当然。我想弄清楚的是如何让节点处理某些文档/站点的请求。我是 linux/apache 的菜鸟,但我知道这不是一件非常困难的事情。节点在站点上运行(当我启动服务器时控制台响应)。我如何获取路由到节点而不是 apache 的请求?
  • 糟糕!我刷新时你的评论只有第一行,对不起!
  • 但是是的,我希望 node 为整个站点提供动力(我首先购买服务器的原因,我基本上想要一个实时沙箱)。你会推荐哪条路线,禁用 apache 或反向代理?
  • 试试这个:sudo service apache2 stop。您的节点进程不会自动从端口 80 启动。您可以在代码中更改它,但同时您可以执行 PORT=80 sudo node hello.jssudo 允许您以 root 用户身份运行命令,在这种情况下需要监听端口 80(或任何低于 1024 的端口)。
  • 其实那个node命令应该先有sudo。所以sudo PORT=80 node hello.js
猜你喜欢
  • 2014-01-06
  • 1970-01-01
  • 2014-02-20
  • 2023-03-03
  • 1970-01-01
  • 2015-10-14
  • 2011-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多