我用 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 是不可能的。
如何将日志数据存储在我想要的确切目录中??
您必须先删除之前的应用程序,然后才能开始新的应用程序
pm2 delete "my-app" --silent || true
--silent 不会抛出错误,如果你确实想抛出错误,不要传递silent 标志。 另外,记得保存pm2列表
pm2 save --force
另外,我正在复制您的生态系统配置文件,希望您不介意:)