pm2管理node进程

这两天在做node部署相关的工作,使用ansible和nohup部署node服务。在这个过程中遇到了一个大坑,ansible退出以后,node进程会被killed,按道理

1
nphup node app.js >> /dev/null &

这样是不会有问题,确实,我吧这样的命令直接粘贴到服务器上运行,退出shell登录,一点问题也没有,可偏偏结合了ansible就不好使了,我到现在也没有找到问题所在。不得已,不得不弃坑,转用现在比较流行的pm2来管理node进程。调查发现pm2完全满足我的需求,而且看起来也足够炫酷。这里来记录一下pm2的使用方法吗。

  • 安装pm2

    1
    npm install -g pm2
  • 启动服务

    1
    2
    // -name appname 表示给程序命名为appname,稍后我们就能appname来管理这个进程了
    pm2 start app.js -name appname
  • 启动两个实例(fork方式)

    1
    2
    // -i 表示实例数量, -x 表示fork方式启动,这样就能同事监听某个端口了
    pm2 start app.js -i 2 -x
  • 管理实例

    1
    2
    // 这样就管理所有名字叫做appname的实例了
    pm2 stop appname
  • 删除实例

    1
    2
    // 这样所有名字叫做appname的实例都会被删除并且关闭进程,之后就不能使用appname来启动它了
    pm2 delete appname