zoukankan      html  css  js  c++  java
  • 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
    
  • 相关阅读:
    Android 判断字符串是否为空
    Android 7.0以上版本 系统解决拍照的问题 exposed beyond app through ClipData.Item.getUri()
    laravel中的登录页面逻辑
    linux的典型分支:
    laravel模型表建立外键约束的使用:
    laravel中的plicy授权方法:
    laravel中的storePublicly对上传的文件设置上传途径
    GitHub下的文件放到Linux系统下
    laravel注册行为的方法和逻辑
    laravel的日志服务
  • 原文地址:https://www.cnblogs.com/zzbo/p/6360973.html
Copyright © 2011-2022 走看看