【问题标题】:How to deploy node/ express application into AWS如何将 node/express 应用程序部署到 AWS
【发布时间】:2019-07-22 11:23:17
【问题描述】:

我正在尝试将我的 express/node 应用程序部署到我的 AWS EC2,尽管我遇到了麻烦。我可以在本地运行它,但是当我 ssh 到 EC2 机器上并运行以下命令时,我看不到它。该应用程序为 UI 提供了一层 REST api。 UI(使用 react)目前在 netlify.com 并已成功部署。

采取的措施

  • 将应用程序库克隆到 ec2 机器上
  • 从 ec2 机器上的应用程序根目录运行“npm install”
  • 导航(使用 SSH 终端)到应用程序的根目录并运行以下命令

命令

pm2 start src/index.js  

命令的输出以绿色显示“在线”。 index.js 文件的内容如下 - 非常简单的东西

index.js

const app = require('./app');
const port = 5000;
app.listen(port, () => {
  /* eslint-disable no-console */
  /* eslint-enable no-console */
});

要查看它在 EC2 上是否有效,我在 SSH 会话中尝试以下操作

curl https://localhost:5000 (have also tried http://localhost:5000)

但命令以

响应
curl: (7) Failed to connect to localhost port 5000: Connection refused

问题 - 这是将 express/node 应用程序部署到 AWS 的方式吗?这是我的好时机:-|

【问题讨论】:

标签: express amazon-ec2


【解决方案1】:

您可能需要添加入站规则以允许连接到您的实例 read here 的安全组中端口 5000 的 TCP 流量。如果您想使用 EC2 实例上的任何端口,您必须在安全组中添加入站规则(或出站规则,具体取决于您的用例)。

【讨论】:

  • 如果我试图从另一台机器访问应用程序但这是在同一台机器上,我希望这样做?
  • 默认安全组只有一个入站 SSH 规则添加到您的实例,这意味着您只能使用您的实例进行 SSH 连接。如果您想在 AWS EC2 实例上使用任何其他类型的流量,您必须打开防火墙。例如,您想发送一个使用 TCP 协议的 HTTP 请求,但您的实例没有为 TCP 流量打开防火墙。即使在您的虚拟机内部,该实例也不允许它。即使您为“所有 TCP 流量”添加入站规则而不提及端口,您也可以在任何端口上使用 curl 命令。
猜你喜欢
  • 2017-05-06
  • 2018-07-13
  • 2020-09-02
  • 2016-08-26
  • 1970-01-01
  • 2020-01-09
  • 2016-11-20
  • 2018-01-25
  • 2016-03-18
相关资源
最近更新 更多