使用 pm2 在服务器上反应构建 运行

React build run on server using pm2

我已经使用

编译了我的 React 应用程序
react-scripts build

并且在App的根目录下生成了一个build\文件夹。 我正在 运行 使用

创建 build\ 文件夹
sudo serve -T -p 443 build/

这 运行 我的 React 应用程序在 HTTPS 上成功,因为我通过了 -T。但是我需要 运行 我的应用程序永远使用任何可用的模块。我正在研究节点模块 forever & pm2。 我正在尝试以下列方式使用 pm2:

sudo pm2 serve -T -p 443 build/

它抛出:

error: unknown option `-T'

当我使用时:

sudo pm2 serve -p 443 build/

它可以在控制台上运行,但我无法从 URL

访问我的应用程序
[ec2-user@ip-10-XXX-XX-XXX UI]$ sudo pm2 serve -p 443 build/
[PM2] Spawning PM2 daemon with pm2_home=/root/.pm2
[PM2] PM2 Successfully daemonized
[PM2] Starting /usr/local/lib/node_modules/pm2/lib/API/Serve.js in fork_mode (1 instance)
[PM2] Done.
[PM2] Serving /var/www/html/UI/build on port 8080
┌─────────────────────────┬────┬──────┬───────┬────────┬─────────┬────────┬─────┬───────────┬──────┬──────────┐
│ App name                │ id │ mode │ pid   │ status │ restart │ uptime │ cpu │ mem       │ user │ watching │
├─────────────────────────┼────┼──────┼───────┼────────┼─────────┼────────┼─────┼───────────┼──────┼──────────┤
│ static-page-server-8080 │ 0  │ fork │ 26609 │ online │ 0       │ 0s     │ 2%  │ 21.7 MB   │ root │ disabled │
└─────────────────────────┴────┴──────┴───────┴────────┴─────────┴────────┴─────┴───────────┴──────┴──────────┘
 Use `pm2 show <id|name>` to get more details about an app

有人可以帮我解决这个问题吗? 或者,如果有任何其他方法可以 运行 您的 React 应用程序永远投入生产。

您需要对 运行 任意二进制文件使用 pm2 JSON 配置:

app.config.json

{
  apps : [
    {
      name      : "your-app",
      script    : "npx",
      interpreter: "none",
      args: "serve -p 8443 -T"
    }
  ]
}

开始:

pm2 start app.config.json

interpreter: "none" 告诉 pm2 在执行时不要将脚本视为 JavaScript 文件,而是将其视为普通二进制文件。

如果您在与应用程序配置相同的目录中有一个 serve 二进制文件,您可以直接执行 serve 而不是 npx.

@bgran 提供了一个很好的解决方案。作为替代方案,我敢于建议您可以将此 deploy 添加到 package.json

中的脚本中
"deploy": "pm2 start ./server.sh --name yourAppName",

然后在与package.json相同的目录下,创建一个可执行文件server.sh:

echo "Serving yourAppName!"
serve -s build

不要忘记通过 运行 将 server.sh 设为可执行文件:

chmod +x server.sh

现在是派对时间!通过 运行

部署您的应用
npm run deploy

完成!

创建run.sh文件

在run.sh 文件

中输入以下命令

serve -s build

并保存。

然后运行这个命令。

sudo pm2 start run.sh --name app-name

使用下面的命令对我有用

首先构建您的 React 应用程序,然后在您的应用程序文件夹中点击此命令。

pm2 serve build/ 3000 --name "react-build" --spa

如果您愿意 运行 使用 pm2 进行 React 项目,请尝试 运行 下面的命令

pm2 start --name <app name<app name>> npm -- start