通过 npm build 和 pm2serve 部署 React 应用程序后如何使用 log-rotate 保存日志数据?

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

我用 cra 用 typescript 制作了 React 应用程序。我尝试通过pm2部署,所以我这样设置shell脚本。

startup.sh

#!/bin/bash
npm install

# Install pm2 globally
npm install -g pm2
pm2 install pm2-logrotate
pm2 set pm2-logrotate:rotateInterval 50 * * * *
pm2 set pm2-logrotate:dateFormate YYYY-MM-DD_HH-mm-ss

# Build the project in production mode
pm2 start ecosystem.config.js --env production

# Save the pm2 process list
pm2 save


# Configure pm2 to start automatically on system boot
pm2 startup

# Generate a startup script for pm2
pm2 save


# Restart the application if it stops for any reason
pm2 resurrect

# Install serve to serve the build
npm install -g serve

# Serve the build on port 3000
pm2 --name "my-app" serve $STH_HOME/build 3000 --spa

所以当我执行startup.sh时,应用程序启动良好。但是,在 Ecosystem.config.js 中,我将数据日志设置到特定目录中。但该应用程序单独运行。

ecosystem.config.js

module.exports = {
  apps: [
    {
      name: "my-app",
      script: "node_modules/react-scripts/scripts/build.js",
      instances: "1",
      watch: false,
      exec_mode: "cluster",
      restart_delay: "5000",
      listen_timeout: 50000,
      kill_timeout: 5000,
      out_file: "/mylogs/my-app/my-app.out",
      error_file: "/mylogs/my-app/my-app.err",
      log_date_format: "YYYY-MM-DD HH:mm Z",
      env_development: {
        NODE_ENV: "development",
      },
      env_production: {
        NODE_ENV: "production",
      },
    },
  ],
};

我预计我的服务器中只会运行一个应用程序(my-app),但是当我通过

pm2 list
检查时,我的服务器中运行着两个不同的 my-app。

我想这就是为什么我的日志数据没有累积在我想要的确切目录中。我知道用 Ecosystem.config.js 设置 pm2 log-rotate 是不可能的。

如何将日志数据存储在我想要的确切目录中??

node.js pm2 logrotate npm-build pm2-logrotate
1个回答
0
投票

您必须先删除之前的应用程序,然后才能开始新的应用程序

    pm2 delete "my-app" --silent || true

--silent 不会抛出错误,如果你确实想抛出错误,不要传递silent 标志。 另外,记得保存pm2列表

    pm2 save --force

另外,我正在复制您的生态系统配置文件,希望您不介意:)

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