【问题标题】:Why is my server not working? I keep getting ERR_CONNECTION_TIMED_OUT when accessing IP address?为什么我的服务器不工作?访问 IP 地址时不断收到 ERR_CONNECTION_TIMED_OUT?
【发布时间】:2019-04-09 01:29:41
【问题描述】:

请原谅我在这里犯错。我在 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)

我希望服务器不会抛出错误并让我的网站加载:(请帮忙!我知道我错过了一个步骤,但不知道在哪里。

【问题讨论】:

  • 可以分享server.js中的代码吗?让我们尝试在没有sudo 的情况下启动node js 进程,因此:nodejs server.js
  • @JoKeRxbLaCk 添加了代码
  • 您尝试访问的网址是 http://localhost:8080 还是 http://localhost:80 ?因为您设置在 express 中以收听 port 80,所以您是否有从 port 8080 重定向到 port 80nginxapache
  • @JoKeRxbLaCk 我已经尝试访问这两个,但没有看到任何内容,与我正在运行的实例的 IP 地址相同。我基本上已经复制了我其他现有网站的代码,该代码与此代码完美配合。我不知道我错过了哪一步..
  • @shway 试试我在回答中所说的

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


【解决方案1】:

您正在尝试在端口 80 上运行您的应用程序。在 Linux 上,端口

因此,您的应用程序将作为 sudo 运行,因为您正在以提升的权限运行。没有 sudo,你就没有使用 80 端口的权限。

因此,您要么需要确保运行您的应用程序的用户具有正确的权限,要么在您的应用程序前面使用在端口 80 上运行的 Apache 或 nginx 并在非特权端口(例如 8080)上转发到您的应用程序.

【讨论】:

    【解决方案2】:

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2017-06-20
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2014-06-22
      相关资源
      最近更新 更多