废话不多说,直接说用法,用pm2一般有两种场景:前后端分离项目和ssr服务端渲染项目。
一、思路
1.前后端分离项目
部署前后端分离项目,前端使用nginx部署,后端使用pm2。需要在linux中下载nodejs,然后正常下载pm2并运行即可。
2.ssr项目
以nust为例:
https://nuxt.com.cn/docs/getting-started/deployment
二、教程
# 启动项目
pm2 start 项目入口文件路径
# 重载/重启项目
pm2 restart/reload 项目id/all
# 停止/删除进程
pm2 stop/delete 项目id/all
# 查看/监视
pm2 list // 所有
pm2 show/info 项目id // 查看进程的详细信息
pm2 monit // 监视每个node进程的CPU和内存的使用情况
# 日志操作
pm2 logs // 显示所有进程的日志
pm2 logs 项目id // 显示某个进程的日志
pm2 flush // 清空所有日志文件
pm2 reloadLogs // 重载所有日志
pm2 startup // 产生 init 脚本,保持进程活着
# 杀进程
pm2 kill
三、配置文件启动
可以使用配置文件启动其他语言类型的项目:
pm2 start app.json
{
"apps": [
{
"name": "serverName", // 名称
"script": "./index.js", // 入口文件
"env": { // 环境
"NODE_ENV": "development"
},
"env_production": {
"NODE_ENV": "production"
},
"instances": 4, // 启用多少个实例
"exec_mode": "cluster", // 应用程序启动模式,这里设置的是cluster_mode(集群),默认是fork
"max_restarts" : 3, // 设置应用程序异常退出重启的次数,默认15次(从0开始计数)
"restart_delay" : 5000, // 异常重启情况下,延时重启时间
"log_date_format" : "YYYY-MM-DD HH:mm Z",
"combine_logs" : true,
"log_file": "<yourpath>/combined.outerr.log", // 日志目录
"out_file": "<yourpath>/out.log",
"error_file": "<yourpath>/err.log",
}
]
}