转载

pm2模块编写入门

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
原文  http://imweb.io/topic/58972858844f468f092c943b
正文到此结束
Loading...