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 module:generate <module-name>
通过PM2来运行
$ cd <module-name> $ pm2 install .
当你修改该模块源码时,PM2会自动重启该模块。 显示模块的日志信息:
$ pm2 logs <module-name>
删除已安装的PM2模块
$ pm2 uninstall <module-name>
关于模块的信息可以添加到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