Skip to content

Node-PM2

启动容器

sh
pm2 start npm --name <name> -- run start:prod
# pm2 start [nestjs/dist/main.js](部署目录) --name 项目名称
pm2 start main.js --name nestjs-web-api
pm2 start dist/main.js --name nestjs-web-api

PM2 应用场景

sh
# 创建配置文件
pm2 init simple
# 创建快照
pm2 save
# 恢复程序
pm2 resurrect

安装步骤

sh
npm i -g pm2
/media/develop/npm-global/bin/pm2 -> /media/develop/npm-global/lib/node_modules/pm2/bin/pm2
/media/develop/npm-global/bin/pm2-dev -> /media/develop/npm-global/lib/node_modules/pm2/bin/pm2-dev
/media/develop/npm-global/bin/pm2-docker -> /media/develop/npm-global/lib/node_modules/pm2/bin/pm2-docker
/media/develop/npm-global/bin/pm2-runtime -> /media/develop/npm-global/lib/node_modules/pm2/bin/pm2-runtime
# 创建软连接
ln -s /media/develop/npm-global/bin/pm2 /usr/bin/pm2

安装 pm2-logrotate 管理日志

sh
# 安装依赖
pm2 install pm2-logrotate

# 查看配置
pm2 conf

# 设置日志文件最大的大小为10M
pm2 set pm2-logrotate:max_size 20M
# 设置日志保留数量为30个
pm2 set pm2-logrotate:retain 30
pm2 set pm2-logrotate:compress false
# 置日志文件名称格式
pm2 set pm2-logrotate:dateFormat YYYY-MM-DD_HH-mm-ss
# 设置检查日志大小的时间间隔为12个小时(60*60*12)
pm2 set pm2-logrotate:workerInterval 30
# 如果有设置分割时间的话,使用英文双引号
pm2 set pm2-logrotate:rotateInterval 0 0 * * *
pm2 set pm2-logrotate:rotateModule true

命令

sh
npm install pm2 -g     # 命令行安装 pm2
pm2 start app.js -i 4  # 后台运行pm2,启动4个app.js
                       # 也可以把'max' 参数传递给 start
                       # 正确的进程数目依赖于Cpu的核心数目
pm2 start app.js --name my-api # 命名进程
pm2 list               # 显示所有进程状态
pm2 monit              # 监视所有进程
pm2 logs               # 显示所有进程日志
pm2 stop all           # 停止所有进程
pm2 restart all        # 重启所有进程
pm2 reload all         # 0 秒停机重载进程 (用于 NETWORKED 进程)
pm2 stop 0             # 停止指定的进程
pm2 restart 0          # 重启指定的进程
pm2 startup            # 产生 init 脚本 保持进程活着
pm2 web                # 运行健壮的 computer API endpoint (http://localhost:9615)
pm2 delete 0           # 杀死指定的进程
pm2 delete all         # 杀死全部进程