我已经在ec2实例中部署了react + node应用程序,并安装了pm2在后台运行该应用程序。 当我运行 npm运行build 和 server -s build 时。 ec2实例正在运行并且可以完美访问应用程序,但是我安装了pm2并使用 pm2 start serve 来运行该应用程序 该应用程序成功运行
但是当我访问ec2实例URL时,我正在获取ec2用户的文件结构,而不是获取网站
昨天一切工作正常,但突然如此显示? 请检查并给我您宝贵的反馈意见
答案 0 :(得分: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
)。
现在,您只需转到项目目录,然后像这样启动您的应用程序:
pm2 start server.js --name <NAME OF THE AP>
请确保在开始该Abve命令之前,使用yarn build
进行构建,它将创建一个构建目录,并且我们正在server.js
内使用它。
方法2
按照上述步骤操作,并同时添加server.js
。
现在也可以使yarn build
自动化。
现在在start.sh
所在的位置创建一个server.js
文件。
start.sh
#!/bin/bash
yarn build && node ./server.js
您可以通过pm2 start start.sh --name <APP NAME>
运行它
它将构建并运行server.js。
*注意::最后一个过程,即在cpu或资源非常低的情况下(例如,如果您使用t.micro
之类的东西,可能无法进行纱线成型。< / p>