在aws ubuntu服务器

时间:2016-03-20 04:00:30

标签: node.js amazon-web-services express

我正在尝试在运行ubuntu 14.04和apache 2.4.7的aws服务器上运行基本的node.js文件

var http = require('http');

var hostname = '33.33.33.33';
var port = 3000;

var server = http.createServer(function(req, res) {
    console.log(req.headers);

    res.writeHead(200, { 'Content-Type': 'text/html' });
    res.end('<h1>Hello World</h1>');
});

server.listen(port, hostname, function() {
    console.log('Server running at http://${hostname}:${port}/');
});

主机名只是服务器的IP。应该是别的吗?主机名应该是IP还是应该是其他东西?

上面的代码给出了以下错误:

events.js:72
        throw er; // Unhandled 'error' event
              ^
Error: listen EADDRNOTAVAIL
    at errnoException (net.js:901:11)
    at Server._listen2 (net.js:1020:19)
    at listen (net.js:1061:10)
    at net.js:1135:9
    at dns.js:72:18
    at process._tickCallback (node.js:415:13)
    at Function.Module.runMain (module.js:499:11)
    at startup (node.js:119:16)
    at node.js:901:3

******** *********更新

我已使用localhost更新了我的代码。这摆脱了错误,并允许我运行.js文件。但是我无法从服务器访问该文件。我像这样输入IP

**.**.**.**:3000

这将返回消息:

This site can’t be reached

**.**.**.** refused to connect.
ERR_CONNECTION_REFUSED

我也尝试访问文件位于服务器上的位置,但得到的结果相同。

**.**.**.**:3000/nodelearning/c1_node_week1/node-express

我跑完后:

node myNodeApp.js

在终端中,我只需要从网络浏览器访问服务器的IP吗?我是否只需要访问根**.**.**.**:3000,或者是否需要访问节点文件的特定位置**.**.**.**:3000/learningNode/myNodeApp.js

我只需要访问root权限吗?

所以**.**.**.**:3000应该有用吗?

下面是我能够运行的.js文件。但我无法访问。

var express = require('express'),
    http = require('http');

var hostname = 'localhost';
var port = 3000;

var app = express();

app.use(function (req,res, next) {
    console.log(req.headers);

    res.writeHead(200, {'Content-Type': 'text/html' });
    res.end('<html><body><h1>Hello World</h1></body></html>');
});

var server = http.createServer(app);


server.listen(port, hostname, function(){
    console.log('Server running at http:// NVM');
});

干杯

1 个答案:

答案 0 :(得分:3)

问题在于

var hostname = '33.33.33.33';

因为当回收路线时,会为机器分配新的IP地址。所以这会失败。作为listen()中的recomendation skip host参数,或者如果您仍想使用主机名

var hostname = '127.0.0.1';

var hostname = 'localhost';

希望它有所帮助:)