pm2模块编写入门

  • 2019 年 12 月 4 日
  • 筆記

PM2 模块

PM2模块是通过PM2来安装和管理,代码可以托管在NPM中。任何人都可以创建和发布一个PM2模块,可以是日志模块、http代理模块、负载均衡模块、DNS服务器模块或任何类型的实用程序。

管理模块

管理PM2模块是非常简单的:

# Install  $ pm2 install <module-name>    # Update a module  $ pm2 install <module-name>    # Install a module from GitHub (username/repository)  $ pm2 install pm2-hive/pm2-docker    # Force module restart  $ pm2 restart <module-name>    # Get more informations  $ pm2 describe <module-name>    # Install a module in dev mode from local folder  $ pm2 install .    # Generate a module boilerplate  $ pm2 module:generate <module-name>    # Uninstall module  $ pm2 uninstall <module-name>    # Publish new module (Inc Semver + Git push + NPM publish)  $ pm2 publish

创建PM2模块

通过PM2脚手架来引导创建模块

$ pm2 module:generate <module-name>

通过PM2来运行

$ cd <module-name>  $ pm2 install .

当你修改该模块源码时,PM2会自动重启该模块。 显示模块的日志信息:

$ pm2 logs <module-name>

删除已安装的PM2模块

$ pm2 uninstall <module-name>

Package.json 语法糖

关于模块的信息可以添加到package.json文件中。 你可以在config字段中定义你的配置: Example:

{    "name": "pm2-logrotate",    "version": "1.0.0",    "description": "my desc",    "dependencies": {      "pmx": "latest"    },    "config": {       "days_interval" : 7,       "max_size" : 5242880    },    "apps" : [{              // 模块运行配置项      "script"             : "index.js",      "merge_logs"         : true,      "max_memory_restart" : "200M"    }],    "author": "imweb",    "license": "MIT"  }

定义缺省配置,这些值可以通过命令pm2 set <module-name>:<attr> <val>来重写 在模块初始化中使用pmx.initModule(),将会返回config中的缺省配置。

$ pm2 set server-monitoring:days_interval 2

NOTE1:这些配置都会写在~/.pm2/module_conf.json,你可以手动修改他。 NOTE2:可以通过命令pm2 conf [module-name]来打印配置信息。 NOTE3:当你给扩展模块设置一个新的值时,扩展模块会自动重启。 NOTE4:PM2 会对配置值自动转换类型(Boolean, Number, String)

模块入口

var pmx     = require('pmx');  var conf    = pmx.initModule({    // Override PID to be monitored    pid : pmx.resolvePidPaths(['/var/run/redis.pid']),  }, function(err, conf) {    // Now the module is initialized    require('./business_logic.js')(conf);  });

发布模块

$ cd my-module  $ pm2 publish