一、前言
在Node.js、Koa2、Express等后端项目线上部署中,原生node命令存在致命短板:终端关闭服务就停止、程序崩溃不会自动重启、无法查看运行日志、不支持多进程负载均衡。而PM2是Node生态最主流的进程管理工具,完美解决以上痛点,也是你当前svgtoimage Koa项目线上必备的运维工具。
本文结合你的Koa项目(启动入口:bin/www),整理PM2全场景常用命令,每条命令附带可直接复制代码 、逐行讲解 、适用场景,全文贴合线上服务器真实运维流程,新手也能直接上手,全文约1500字。
二、PM2安装(前置准备)
1. 全局安装
npm install pm2 -g
讲解:PM2必须全局安装,才能在服务器任意目录调用命令,无需在每个项目内重复安装。
2. 版本校验
pm2 -v
讲解:查看当前PM2版本,验证安装是否成功,正常输出版本号即为安装完成。
三、项目启动核心命令(适配你的Koa项目)
你的项目启动文件为 bin/www,下方所有命令均贴合该入口文件实操。
1. 基础启动服务
ini
# 方式1:直接指定启动文件(最常用)
pm2 start bin/www
# 方式2:自定义进程名称(方便后续管理,推荐)
pm2 start bin/www --name=svgtoimage
# 方式3:通过package.json脚本启动(和你项目prd命令一致)
pm2 start npm --name=svgtoimage -- run prd
细致讲解:
pm2 start:核心启动指令,让项目后台运行,关闭服务器终端服务不会中断;--name:给进程设置别名,后续重启、停止直接用别名即可,不用输入长路径,你的项目命名为svgtoimage方便区分;- 区别于原生node启动:node bin/www关闭ssh窗口服务直接挂掉,PM2后台常驻,线上部署必用。
2. 开机自启配置(服务器重启不丢服务)
bash
# 1. 生成开机自启脚本
pm2 startup
# 2. 保存当前所有运行进程
pm2 save
细致讲解:服务器意外断电、重启后,Node服务默认不会自动启动,这两条命令是线上运维刚需。执行完第一条会输出一行命令,直接复制执行即可完成环境配置,第二条保存当前运行的所有进程列表,重启服务器后PM2会自动拉起所有项目。
四、进程状态查看命令(监控服务运行状态)
1. 查看所有进程列表
bash
pm2 list
# 简写命令
pm2 ls
讲解:查看当前服务器所有PM2托管项目,展示进程ID、进程名、运行状态、CPU/内存占用、运行时长。重点看status列:online代表正常运行,errored代表程序报错停止。
2. 实时动态监控面板
pm2 monit
讲解:打开可视化监控面板,实时查看每个进程CPU、内存占用、请求日志,适合排查项目内存泄漏、CPU占用过高问题,按Ctrl+C退出面板。
3. 查看进程详情
sql
pm2 show svgtoimage
讲解:查看单个项目完整配置,包含启动路径、环境变量、重启次数、异常记录,适合排查项目频繁自动重启的问题。
五、进程重启/停止/删除命令(代码更新运维)
项目代码更新、配置修改后,必须重启服务才能生效,禁止直接kill进程。
1. 重启服务(两种模式)
bash
# 软重启:0秒停机,无缝切换,不中断用户请求(线上首选)
pm2 reload svgtoimage
# 硬重启:彻底关闭进程再重启,会短暂断开连接(代码大改使用)
pm2 restart svgtoimage
核心区别讲解:线上生产环境优先用reload,实现热重启,用户无感知;restart会断开当前连接,适合依赖包更新、端口修改等大幅度改动。
2. 停止服务
python
# 停止单个项目
pm2 stop svgtoimage
# 停止所有PM2项目
pm2 stop all
3. 删除进程(彻底移除托管)
perl
# 删除单个进程
pm2 delete svgtoimage
# 删除所有进程
pm2 delete all
讲解:stop只是暂停服务,进程还保留在列表中;delete是彻底从PM2列表清除进程,卸载项目时使用。
六、日志查看命令(排查线上BUG核心)
你的svgtoimage是图片转换接口,线上报错无页面提示,只能通过日志排查问题。
yaml
# 1. 实时查看最新日志(线上实时监控)
pm2 logs svgtoimage
# 2. 查看历史全部日志
pm2 logs svgtoimage --lines 1000
# 3. 清空所有日志文件
pm2 flush
讲解 :pm2 logs是运维最常用命令,Koa接口报错、svg图片转换失败、端口占用错误,全部会打印在日志中;--lines 1000代表查看最近1000行日志;日志文件会持续占用服务器磁盘空间,定期用pm2 flush清空即可。
七、进阶实用命令(性能优化)
1. 多进程启动(利用服务器多核CPU,提升接口并发)
css
# -i max:根据服务器CPU核心数,开启最大进程数
pm2 start bin/www --name=svgtoimage -i max
讲解:Node.js默认单线程,单核CPU无法发挥服务器全部性能,-i max自动适配多核,提升图片转换接口并发能力,高访问量场景必备。
2. 重置重启次数
perl
pm2 reset svgtoimage
讲解:项目异常崩溃后PM2会自动重启,重启次数会累计,该命令可以清空重启计数,方便后续监控真实异常情况。
八、常见故障排查(结合你的Koa项目)
- 服务频繁自动重启:执行pm2 logs查看报错,大概率是端口占用、代码语法错误;
- 服务器重启后服务没启动:重新执行pm2 startup && pm2 save;
- 代码更新页面无变化:必须执行pm2 reload/restart,浏览器缓存+服务缓存双重问题。
九、总结
针对你的Koa2图片转换项目,日常运维只需记住一套极简流程: 项目上线:pm2 start bin/www --name=svgtoimage → pm2 startup && pm2 save 代码更新:pm2 reload svgtoimage 排查报错:pm2 logs svgtoimage 状态查看:pm2 list
PM2作为Node项目线上标配工具,核心价值就是进程守护、自动重启、日志管理、开机自启,搭配Nginx反向代理,即可完成Koa项目完整线上稳定部署,无需担心服务意外宕机问题。