PM2 使用技巧之自定义启动参数与配置

前言

对于前端开发人员来说,不少应该都使用过 PM2 进行前端项目的部署。而在使用 PM2 过程中,有些情况我们需要通过自定义启动参数或修改配置来满足项目的需求,本篇文章将详细介绍这部分内容。

自定义启动参数

PM2 是通过启动参数来实现一些定制化的操作,以下是一些常用的参数:

  • -i: 进程数,默认 1 个,可以设置成指定数量的进程。例如 -i 4 表示启动 4 个进程。
  • -n: 应用程序名称,可以通过这个参数给进程命名,方便查看。例如 -n my-app 表示使用 my-app 进程名称。
  • --watch: 监听文件变动并自动重启,非常适合开发环境。例如 --watch ./src 表示监听 ./src 文件夹的变化。
  • --ignore-watch: 排除监听某些文件或文件夹,可以忽略一些不需要监听的文件。例如 --ignore-watch 'node_modules log' 表示忽略 node_modules 和 log 文件夹。
  • --max-memory-restart: 在内存达到一定限制时重启进程。例如 --max-memory-restart 100M 表示当进程内存达到 100MB 时自动重启。
  • --desc: 进程备注说明,可以让多个进程之间更加清晰。例如 --desc "my application" 表示进程备注为“my application”。

除了上述的常用参数外,还有一些高级参数可以实现更多的特殊需求,具体可以查看官方文档

使用自定义启动参数也很简单,只需要在 pm2 start 命令后跟上对应的参数即可。例如:

pm2 start index.js -i 4 -n my-app --watch ./src --ignore-watch 'node_modules log' --max-memory-restart 100M --desc "my application"

修改配置

PM2 启动参数可以满足大多数需求,但如果我们需要修改一些默认配置,可以在 PM2 的配置文件中进行修改。默认情况下,PM2 的配置文件为 ~/.pm2/pm2rc,但如果修改了默认配置保存路径,则需要修改对应的文件路径。以下是一些常用的配置项:

  • exec_mode: 进程执行模式,默认为 "fork"。但如果是 CPU 密集型或多核处理,则可以设置成 "cluster" 模式。
  • instances: 进程数,默认为 1。如果使用 "cluster" 模式,则会生成指定数量的进程。
  • watch: 监听文件变动并自动重启,非常适合开发环境。默认为 false,设置为 true 或路径字符串即可开启。
  • ignore_watch: 排除监听某些文件或文件夹,可以忽略一些不需要监听的文件。默认为空数组,可以指定忽略的文件夹列表。
  • max_memory_restart: 在内存达到一定限制时重启进程。默认为 512MB,可以设置成指定数量的内存。例如 100M 表示 100MB。
  • name: 应用程序名称,默认为 package.json 中的 name 字段。

更多的配置项可以查看官方文档。修改配置项也很简单,只需要在配置文件中添加或修改对应的项即可。例如:

module.exports = {
  apps: [
    {
      name: "my-app",
      script: "./index.js",
      exec_mode: "cluster",
      instances: 4,
      watch: true,
      ignore_watch: ["node_modules", "log"],
      max_memory_restart: "100M"
    }
  ]
};

示例代码

以下代码演示了如何通过 PM2 自定义启动参数和配置文件实现监测应用程序的变化并自动重启。

// index.js
const http = require("http");

http
  .createServer((req, res) => {
    res.writeHead(200);
    res.end("Hello World");
  })
  .listen(process.env.PORT || 3000);
// pm2.config.js
module.exports = {
  apps: [
    {
      name: "my-app",
      script: "./index.js",
      exec_mode: "fork",
      instances: 1,
      watch: true,
      ignore_watch: ["node_modules", "log"],
      max_memory_restart: "100M"
    }
  ]
};
# 启动进程
pm2 start pm2.config.js

# 修改程序
echo "console.log('Updated')" >> index.js

# 查看变化,会自动重启进程
pm2 logs

总结

使用 PM2 自定义启动参数和配置文件是非常方便的,它可以满足大部分项目的需求。在实际应用时,可以根据具体需求来配置参数和文件。同时,在使用过程中也要注意 PM2 版本的兼容性和安全性。

来源:JavaScript中文网 ,转载请注明来源 本文地址:https://www.javascriptcn.com/post/65a74fb3add4f0e0ff051318


纠错反馈