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