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