2010-07-08 156 views
2

所以我安装的node.js,并和已经运行node sayhello.js这是该代码:node.js的在Amazon EC2上使用Ubuntu 8.04安装在Amazon EC2上

var sys = require('sys'), 
    http = require('http'); 
http.createServer(function (req, res) { 
    setTimeout(function() { 
    res.writeHead(200, {'Content-Type': 'text/html'}); 
    res.write('<br/><strong>&nbsp;&nbsp;&nbsp;&nbsp;Hello World!</strong>'); 
    res.end(); 
    sys.puts(sys.inspect(req, false)); 
    }, 2000); 
}).listen(8000); 
    sys.puts('Server running at http://ec2-174-12-132-193.compute-1.amazonaws.com:8000/'); 

我看到

服务器运行在 http://ec2-174-12-132-193.compute-1.amazonaws.com:8000/

正确显示在控制台中。

tutorial说:转到8000在浏览器中,你应该看到Hello World!

我去http://ec2-174-12-132-193.compute-1.amazonaws.com:8000/(不是真正的地址),但它不加载(只是连接...)。这个例子使用localhost,是做公共领域不正确还是一些这样的?

谢谢。

回答

4

在与EC2实例关联的安全组中,确保您的端口8000对您的IP或公众开放。

6

您需要在安全组中打开端口8000。

如果您已经安装了EC2的命令行工具,尝试运行:

$ ec2-authorize default -p 8000 

这是假设你正在使用的默认安全组。如果不是,则将默认更改为您的安全组的名称。

如果你只是使用Web界面请按照下列步骤操作:

  1. 登录到AWS控制台
  2. 选择亚马逊EC2在菜单顶栏
  3. 点击安全组在左边
  4. 单击您分配给您的EC2实例的安全组(可能只是默认值)
  5. 在底部的窗格中,单击入境标签
  6. 套装端口范围: 8000并保留其他两个输入,因为它们是
  7. 单击添加规则
0

检查以下内容:

  1. 那您允许从所有ips访问安全组中的端口8000
  2. 您修改了正确的安全组(例如quicklaunch-1)和不是说,quicklaunch-2。我已经编辑了错误的次数,而不是我想要承认的次数。
  3. 您已在Linux防火墙上打开端口8000
  4. 您的服务器实际上正在运行(您应该在命令行中看到“在端口8000上侦听”)。

这里是如何建立在Amazon EC2上一个Node.js的web服务器的教程:http://www.lauradhamilton.com/how-to-set-up-a-nodejs-web-server-on-amazon-ec2

这是一个有点比你在做什么(因为它使用IP转发80到更复杂8080),但关于打开Linux防火墙的部分是相同的。