pm2使用笔记
TIP
在 windows
服务器中,系统使用的是 node
开发环境,使用 pm2
工具进行部署,在此记录相关步骤和命令
1. 配置文件
我的项目工程目录如下:
工程根目录下的 processes.json文件
为部署配置文件,参数如下:
{
"apps" : [{
"name" : "myServer",
"script": "./bin/www",
"cwd": "./",
"watch":[
"bin",
"common",
"models",
"public",
"routes",
"views"
],
"error_file":"./logs/app-err.log",
"out_file":"./logs/app-out.log",
"log_date_format":"YYYY-MM-DD HH:mm Z"
}]
}
参数释义:
- name:服务名称
- script:node启动文件的路径
- cwd:项目所在的目录
- watch:布尔值或文件数组,允许开启监听文件改动重启
- error_file:错误日志存放路径
- out_file:全部日志存放路径
- log_date_format:日志时间格式
2. 项目部署
首次项目部署命令:
pm2 start processes.json
执行完命令后,如果环境没有问题、程序没有报异常,那么项目就正常启动了,查看项目运行状态 ,查看状态命令为:
pm2 ls
or
pm2 list
3. pm2常用命令
查看当前任务列表
pm2 ls
or
pm2 list
启动任务,并自定义任务名称
pm2 start 脚本 --name 自定义任务名称
启用项目,使用npm run
脚本别名的方式,注意:-- run中间有一个空格,不加就凉,并且只能放在最后
pm2 start npm --name 自定义任务名称 – run package.json中的脚本别名
停止任务
pm2 stop id|name
重启任务
pm2 restart id|name
删除任务,注意:如果任务在运行中,会自动停止,all表示删除全部
pm2 delete id|name|all
保存,可以将当前任务列表持久化保存在电脑磁盘中,关机重启后也不会失效(只要执行pm2 update命令即可还原
)
pm2 save
更新,可以将上一次执行 pm2 save
时的状态还原
pm2 update
4. 更新监听开关
项目部署后,后来重启了几次,刚开始watching是enabled,后来布置怎地变成了disabled
使用 pm2 show 1 ,查看程序的详细信息,【watch & reload 】为 x,使用【pm2 start 1 --watch】重新启动该程序,那么watching 正常为 enabled,【watch & reload 】为 ✔ 了.
C:\Users\Administrator>pm2 show 1
Describing process with id 1 - name dspmApiSjzProd
┌───────────────────┬─────────────────────────────────────────────────────────────────── ─────┐
│ status │ online │
│ name │ dspmApiSjzProd │
│ namespace │ default │
│ version │ 0.0.0 │
│ restarts │ 0 │
│ uptime │ 11s │
│ script path │ D:\project\shijiazhuang\model-project\dspmApiSjz_prod\bin\www │
│ script args │ N/A │
│ error log path │ D:\project\shijiazhuang\model-project\dspmApiSjz_prod\logs\app-err.log │
│ out log path │ D:\project\shijiazhuang\model-project\dspmApiSjz_prod\logs\app-out.log │
│ pid path │ C:\Users\Administrator\.pm2\pids\dspmApiSjzProd-1.pid │
│ interpreter │ node │
│ interpreter args │ N/A │
│ script id │ 1 │
│ exec cwd │ D:\project\shijiazhuang\model-project\dspmApiSjz_prod │
│ exec mode │ fork_mode │
│ node.js version │ 14.17.5 │
│ node env │ N/A │
│ watch & reload │ ✔ │
│ unstable restarts │ 0 │
│ created at │ 2023-02-28T06:21:25.747Z │
└───────────────────┴─────────────────────────────────────────────────────────────────── ─────┘
Actions available
┌────────────────────────┐
│ km:heapdump │
│ km:cpu:profiling:start │
│ km:cpu:profiling:stop │
│ km:heap:sampling:start │
│ km:heap:sampling:stop │
└────────────────────────┘
Trigger via: pm2 trigger dspmApiSjzProd <action_name>
Code metrics value
┌────────────────────────┬───────────┐
│ Used Heap Size │ 21.19 MiB │
│ Heap Usage │ 88.78 % │
│ Heap Size │ 23.87 MiB │
│ Event Loop Latency p95 │ 4.04 ms │
│ Event Loop Latency │ 0.99 ms │
│ Active handles │ 6 │
│ Active requests │ 0 │
└────────────────────────┴───────────┘
Divergent env variables from local env
┌─────────────┬────────────┐
│ SESSIONNAME │ RDP-Tcp#62 │
└─────────────┴────────────┘
Add your own code metrics: http://bit.ly/code-metrics
Use `pm2 logs dspmApiSjzProd [--lines 1000]` to display logs
Use `pm2 env 1` to display environment variables
Use `pm2 monit` to monitor CPU and Memory usage dspmApiSjzProd