ec2实例url显示文件而不是运行App

问题描述 投票:1回答:1

我在ec2实例中部署了react + node app并安装了pm2以在后台运行app。当我运行npm run build和server -s build时。 Ec2实例正在运行,应用程序可以完全访问,但我安装了pm2并使用pm2启动服务运行应用程序该应用程序运行成功enter image description here

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

enter image description here

一切都在昨天工作但突然间显示出来了吗?请检查并给我您宝贵的反馈

amazon-web-services amazon-ec2 pm2
1个回答
2
投票

有很多方法可以建立和服务。

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)。

现在,您只需转到项目目录,然后启动您的app:pm2 start server.js --name <NAME OF THE AP>

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


方式2

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

现在创建一个start.sh文件,其中server.js位于。

start.是

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

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

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

© www.soinside.com 2019 - 2024. All rights reserved.