ec2 实例 url 正在显示文件而不是 运行 应用程序

ec2 instance url is showing files instead of running App

我在 ec2 实例中部署了 react + node 应用程序,并在后台将 pm2 安装到 运行 应用程序。 当我 运行 npm 运行 buildserver -s build 时。 Ec2 实例是 运行ning,应用程序可以完美访问,但我安装了 pm2 和 运行 使用 pm2 start serve 的应用程序 该应用 运行nig 成功

但是当我访问 ec2 实例时 url 我得到的是 ec2 用户的文件结构而不是网站

昨天一切正常,但突然出现这样? 请检查并给我您宝贵的反馈

构建和服务的方式有很多种。

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


方式一

我猜你是从 ./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>

确保在开始使用上述命令之前,使用 yarn build 进行构建,这将创建一个构建目录,我们在 server.js.[=29= 中使用它]


方式二

按照上述步骤并添加 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.

*注意: 最后一个过程,即在那些情况下使用 yarn build 可能无法实现,其中 cpu 或资源非常低,比如你正在使用t.micro 什么的。