【问题标题】:Start Node.js server on Digital Ocean在 Digital Ocean 上启动 Node.js 服务器
【发布时间】:2017-09-04 07:30:34
【问题描述】:

我在 Digital Ocean 上创建了一个 Node.js Droplet。

我已通过 FileZilla 连接到服务器并上传了所有 Node.js 文件(index.js、package.json 等)。

我正在尝试使用node index.js 启动服务器。它说

App is running at http://localhost:3000 in development mode
  Press CTRL-C to stop

但是,我无法在 Digital Ocean 提供的公共 IP 地址和localhost:3000 上看到该网站。

如何正确启动 Node.js 服务器?

编辑

我正在用这个设置服务器(index.js的内容):

const express = require('express');

const app = express();

app.set('port', process.env.PORT || 3000);

app.listen(app.get('port'), () => {
  console.log('App is running at http://localhost:%d in %s mode', app.get('port'), app.get('env'));
  console.log('  Press CTRL-C to stop\n');
});

【问题讨论】:

  • 谁知道...这是您的应用程序,您如何指定绑定主机取决于您的代码!只有你能回答这个问题。您想绑定到::0.0.0.0 的某个位置(这是一个伪地址,表示您要分别在IPv6 或IPv4 中侦听所有接口)。您还需要确保没有防火墙阻止 :3000... 但谁知道如何帮助您,因为您甚至没有告诉我们您正在运行什么操作系统。
  • 好的,既然您已经发布了代码……您的应用程序已经在监听所有接口,所以这将归结为防火墙配置。
  • 对不起。我刚刚在 Digital Ocean 上安装了一个带有 Node.js 的 Droplet。 Digital Ocean 的操作系统是 Ubuntu。我自己的操作系统是 OSX。它说我没有在cloud.digitalocean.com/networking/firewalls 上创建任何防火墙。
  • 可能是您的 Ubuntu 系统上的防火墙,而不是 Digital Ocean 云防火墙。

标签: javascript node.js server digital-ocean droplet


【解决方案1】:

首先,您要通过在同一台机器上打开另一个终端并执行 curl 来确保一切正常。

curl http://localhost:3000

在您确认它工作正常后,您必须在机器上打开相应的端口。

让我们通过运行以下命令来查看当前打开了哪些端口。

sudo ufw status verbose

如果未列出端口 3000,让我们使用以下命令添加它。

sudo ufw allow 3000/tcp

再次运行ufw status,验证端口 3000 是否已添加。

sudo ufw status verbose

【讨论】:

猜你喜欢
  • 2017-02-25
  • 2018-09-22
  • 2017-01-11
  • 1970-01-01
  • 1970-01-01
  • 2015-11-14
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多