Node进程管理pm2

1,419 阅读1分钟

pm2 是基于node的进程管理工具,利于pm2可以很方便的管理启动进程,比如性能监控,自动重启等功能。

安装

$ npm install pm2@latest -g
# or
$ yarn global add pm2

启动一个app

启动的方式极其简单。

$ pm2 start app.js

pm2作为一个进程管理器,自然而然可以启动其他进程的任务了。

$ pm2 start bashscript.sh
$ pm2 start python-app.py --watch
$ pm2 start binary-file -- --port 1520

start 的时候有一些可选参数

# 指定应用名,可以通过id或者应用名的方式操作应用
--name <app_name>

# 当文件改变的时候重启应用
--watch

# 设置内存阈值重载应用
--max-memory-restart <200MB>

# 指定日志文件
--log <log_path>

# 传入额外的参数给脚本
-- arg1 arg2 arg3

# 自动重启间隔
--restart-delay <delay in ms>

# 时间日志前缀
--time

# 不自动重启应用
--no-autorestart


管理进程

$ pm2 restart app_name
$ pm2 reload app_name
$ pm2 stop app_name
$ pm2 delete app_name

app_name 也可以传 id 或者 all执行所有

reload 和 restart 的区别在于

  • reload 实现 0 秒停机重载进程
  • 如果reload 失败,会执行restart

列出当下所有应用

$ pm2 [list|ls|status]

显示实时日志

$ pm2 logs

终端仪表盘

$ pm2 monit

web界面

$ pm2 plus

这个界面有问题启动不起来,网上说可能和node版本有关系。

实战案例

以一个nuxt的ssr项目为例

// 构建项目
$ yarn bulid
// 启动服务
$ pm2 start "yarn start" --name website

image
image

可以看到我们的应用启动起来了。

查看日志

image
image

查看实时监控

通过配置文件启动

$ pm2 ecosystem

我们修改一下配置文件,具体配置参数在这里配置参数

module.exports = {
  apps : [{
    name:"website"
    script: 'yarn start',
    watch: '.',
    out_file: 'log.info'
  }
  ],
};

启动服务

$ pm2 delete website
$ pm2 start ecosystem.config.js 

这里需要删除原有的应用,从新启动一下。 image

总结

通过pm2我们可以更好的对应用进行管理,更直观的看到应用的资源监控,而且还有自动重启,批量启动等功能还有集群的功能因时间有限就不过多介绍了,居家部署必备良品。