【问题标题】:ec2 instance url is showing files instead of running Appec2 实例 url 显示文件而不是运行 App
【发布时间】:2019-09-16 08:02:46
【问题描述】:

我在 ec2 实例中部署了 react + node 应用程序并安装了 pm2 以在后台运行该应用程序。 当我运行 npm run buildserver -s build。 Ec2 实例正在运行并且应用程序可以完美访问,但我安装了 pm2 并使用 pm2 start serve 运行了应用程序 该应用程序已成功运行

但是当我访问 ec2 实例 url 时,我正在获取 ec2 用户的文件结构而不是获取网站

昨天一切正常,但突然变成这样? 请检查并给我您的宝贵意见

【问题讨论】:

  • 我猜,你没有给出服务的路径,这就是为什么它静态地从你的项目目录中提供所有文件。检查我的答案可能是。

标签: amazon-web-services amazon-ec2 pm2


【解决方案1】:

有很多构建和服务的方法。

pm2 serve 提供静态文件服务。 命令是pm2 serve ./build <PORT> 并检查您是否提供了它应该服务的文件夹路径[即此处的./build]。 确保你已经完成了yarn build


方式 1

我猜你是从./build 目录提供的。 它主要包含静态文件,

所以你可以做的是,让我们创建一个简单的快速服务器,它可以提供来自./build的文件

将此文件添加到您的项目目录中:

server.js

const express = require("express");
const path = require("path");
const app = express();

app.use(express.static(path.join(__dirname, "build")));

app.get("/*", function(req, res) {
  res.sendFile(path.join(__dirname, "build", "index.html"));
});
const PORT =process.env.FRONT_PORT || 9000;
app.listen(PORT,()=>{
  console.log('listning at :' + PORT)
});

如您所见,在上面我使用了express.js,您也必须安装它(npm i express -S)。

现在,您只需转到项目目录,然后像这样启动您的应用程序: pm2 start server.js --name <NAME OF THE AP>

确保在开始使用此 abve 命令之前,使用 yarn build 进行构建,这将创建一个构建目录,我们在 server.js 中使用它。


方式 2

按照上述步骤添加server.js。 现在让yarn build 也自动化。

现在在server.js 所在的位置创建一个start.sh 文件。

start.sh

#!/bin/bash
yarn build && node ./server.js

您可以通过pm2 start start.sh --name <APP NAME> 运行它 它将构建并运行 server.js。

*注意:在 cpu 或资源非常低的情况下,如使用 t.micro 或其他东西,这最后一个过程(即使用 yarn 构建)可能是不可能的。

【讨论】:

  • chakraborthy 非常感谢
  • @Sravani 如果它回答了您的问题,您也可以将其标记为正确答案?
  • chakraborthy 完成
猜你喜欢
  • 2016-04-14
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2022-11-24
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多