node.js上的npm实例:pm2的简单使用

2017-12-08  本文已影响0人  Pale_Eyes

npm的pm2网址:https://www.npmjs.com/package/pm2

说明:

npm上的这个pm2[P(rocess) M(anager) 2 ]是在解决自己一个node项目时,找到的一个解决方案。具体pm2肯定有更多的功能,我在此处也就仅仅是将我用到的地方拿出来总结一下。

准备:

使用:

npm安装pm2

$ npm install pm2 -g
pm2

使用pm2来启动一个应用

$ pm2 start app.js

结合实际项目的使用,pm2.node.web.test.config.js是作为一个配置,让pm2去加载,然后去做管理启动。
pm2.node.web.test.config.js:

module.exports = {
    apps: [
        {//这个是我这个项目的启动脚本 启动一
            name: 'web-runner',
            script: './www',
            watch: true,//设置被监听
            env: {
                PORT: 3008//端口
            },
        },
        {//启动二
            name: 'web-runner',
            script: './www',
            watch: true,
            env: {
                PORT: 3009
            },
        },
        {//附带去启动一个java的jar,也是一个服务,通过启动一个shell脚本去启动对应的jar
            name: 'uniubi-user-login',
            script: './user.sh',
            watch: false
        },
        { //这个也是一个java项目,是微服务的一个服务组件之一,用来做Eureka注册用的,
          //对应启动一,这样使得不同的语言的项目都可以在Eureka中统一被发现与注册。
            name: 'uniubi-sidecar-node-web',
            script: './sidecar.sh',
            watch: false,
            env: {
                applicationName: 'uniubi-sidecar-node-web',
                sidecarDelegateIp: '192.168.20.171',
                sidecarPort: '9008',
                sidecarDelegatePort: '3008',
            }
        },
        {
            name: 'uniubi-sidecar-node-web',
            script: './sidecar.sh',
            watch: false,
            env: {
                applicationName: 'uniubi-sidecar-node-web',
                sidecarDelegateIp: '192.168.20.171',
                sidecarPort: '9009',
                sidecarDelegatePort: '3009',
            }
        }
    ],
};

关于配置的解释补充:
刚刚配置文件中所提及的java项目的sidecar其实什么业务都没有,只是单纯的做一件事,从系统中获取环境env

  private static Map<String, String> sysEnv = System.getenv();

然后再获取,然后再做自己的向Eureka注册的事。

  String applicationName = sysEnv.get("applicationName");
  int sidecarPort = Integer.valueOf(sysEnv.get("sidecarPort"));
  String sidecarDelegateIp = sysEnv.get("sidecarDelegateIp");
  int sidecarDelegatePort = Integer.valueOf(sysEnv.get("sidecarDelegatePort"));
  ...

在pm2 start pm2.node.web.test.config.js执行了这句话后,一下子就起了n多个项目,而且可以是不同的项目。当然在实际的生产中呢,我们会根据实际的情况去编写这个配置的js,设置根据不同的环境去写不同的js在不同的环境下执行。


在使用了pm2去启动了这些项目后,我们可以去监控我们想要监控的项目。比如,js项目不同于java项目,可能会出现一些没有考虑到的异常导致项目挂了。pm2可以自动重启,并且记录详情。
下面看一下我们实际的运行情况吧。上图我就是跑了另一个js配置文件。
我用到的其他pm2的指令(以后再补充):

  pm2 list //show pm2下管理的app  
  pm2 restart *.js //重新启动
  pm2 show <id|name> //查看某个app的详情
  pm2 delete * //删除
  pm2 stop * //停止
上一篇 下一篇

猜你喜欢

热点阅读