我在ec2实例中部署了react + node app并安装了pm2以在后台运行app。当我运行npm run build和server -s build时。 Ec2实例正在运行,应用程序可以完全访问,但我安装了pm2并使用pm2启动服务运行应用程序该应用程序运行成功
但是当我访问ec2实例url时,我得到了ec2用户的文件结构而不是获取网站
一切都在昨天工作但突然间显示出来了吗?请检查并给我您宝贵的反馈
有很多方法可以建立和服务。
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
或其他东西。