为什么我的服务器不工作?访问IP地址时,我不断收到ERR_CONNECTION_TIMED_OUT吗?

时间:2019-04-08 12:41:05

标签: node.js angularjs express ssh ubuntu-14.04

在这里请原谅我。我已经在Ubuntu 14.04上通过AngularJS和NodeJS设置了一个简单的网站应用程序。启动服务器后,该IP地址无法加载并引发连接失败错误。

  • 我已经能够成功连接到AWS上的Ubuntu服务器

  • 成功安装了npm,node,并提取了git repo

  • 尝试通过在API文件夹中输入“ sudo nodejs server.js”来启动服务器

  • 服务器启动,但是IP地址未加载项目。.在控制台中没有错误。.

这些是我从终端登录到SSH服务器后从头到尾的步骤:

ubuntu@ip-172-31-25-241:~$ sudo mkdir src
ubuntu@ip-172-31-25-241:~$ cd src
ubuntu@ip-172-31-25-241:~/src$ sudo git init (after installing git)
ubuntu@ip-172-31-25-241:~/src$ sudo git pull origin master (pulled repo)
ubuntu@ip-172-31-25-241:~/src$ sudo apt-get install npm
ubuntu@ip-172-31-25-241:~/src$ sudo apt-get install nodejs
ubuntu@ip-172-31-25-241:~/src$ cd API
ubuntu@ip-172-31-25-241:~/src/API$ ls
server.js
ubuntu@ip-172-31-25-241:~/src/API$ sudo nodejs server.js
Server Started on http://localhost:8080
Press CTRL + C to stop server

这是@JoKeRxbLaCk要求的来自server.js文件的代码:

// initialize Express
var express = require('express');
// run Express
var app = express();

app.use(express.static(__dirname + './../APP'));

app.get('/', function(req, res) {
    res.send('Express is running!');
});


app.listen(80, function() {
    console.log('Server Started on http://localhost:8080');
    console.log('Press CTRL + C to stop server');
});

当我尝试使用命令“ nodejs server.js”而不是“ sudo nodejs server.js”时,出现此错误:

ubuntu@ip-172-31-25-241:~/src/API$ nodejs server.js

events.js:72
        throw er; // Unhandled 'error' event
              ^
Error: listen EACCES
    at errnoException (net.js:901:11)
    at Server._listen2 (net.js:1020:19)
    at listen (net.js:1061:10)
    at Server.listen (net.js:1135:5)
    at EventEmitter.listen (/home/ubuntu/src/node_modules/express/lib/application.js:617:24)
    at Object.<anonymous> (/home/ubuntu/src/API/server.js:15:5)
    at Module._compile (module.js:456:26)
    at Object.Module._extensions..js (module.js:474:10)
    at Module.load (module.js:356:32)
    at Function.Module._load (module.js:312:12)

我希望服务器不会引发错误,并且我的网站可以加载:(请帮忙!我知道我错过了一步,但不知道在哪里。

2 个答案:

答案 0 :(得分:0)

您正在尝试在端口80上运行应用程序。在Linux上,端口<1024是特权端口,并且需要提升的特权才能运行。

由于您使用提升的特权运行,因此您的应用程序将以sudo身份运行。没有sudo,您无权使用端口80。

因此,您需要确保运行您的应用程序的用户具有正确的特权,或者使用在端口80上运行并通过非特权端口(例如8080)转发到您的应用程序的Apache或nginx之类的应用程序来管理您的应用程序

答案 1 :(得分:-1)

在AWS上,您必须手动打开要使用的任何端口。
这是该Open Port on AWS Ec2

的指南