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