如何使用PM2和yarn在MERN技术栈下安全实现服务卸载与重新部署
MERN 栈 Ubuntu 服务器安全卸载与重新部署操作手册
一、运行状态前置检查
先确认当前服务的运行状态,避免操作遗漏:
- 查看PM2托管的进程列表:
pm2 list,记录目标服务的名称或进程ID - 查看服务占用的端口是否被占用:
lsof -i :<你的服务端口号>
二、安全卸载/清理旧服务流程
- 停止运行中的目标服务进程:
pm2 stop <服务名/进程ID>,单服务场景可直接执行pm2 stop all - 删除PM2中的服务托管记录,避免后续启动冲突:
pm2 delete <服务名/进程ID>,单服务场景可直接执行pm2 delete all - 进入项目根目录,删除旧的构建产物,避免旧代码残留:
rm -rf dist/ - 可选完全清理操作:如果需要彻底卸载服务,可直接删除整个项目目录,同时取消PM2开机自启配置:
pm2 startup unload
三、无错误重新部署流程
官方给出的步骤存在重复启动的问题(yarn start:prod和pm2 start二选一即可,重复启动会导致端口占用),正确部署步骤如下:
- 将修改后的代码更新到服务器项目目录中
- 安装项目依赖,建议跳过开发依赖减少冲突概率:
yarn install --production - 执行生产环境构建:
yarn build,必须确认该步骤控制台无报错再进行后续操作,代码语法错误、依赖缺失都会导致构建失败 - 使用PM2启动服务并自定义服务名方便管理:
pm2 start dist/main.js --name "自定义服务名" - 验证服务启动状态:执行
pm2 list确认服务状态为online,再执行curl localhost:<服务端口号>确认可以正常返回响应内容 - 保存PM2配置,保证服务器重启后服务自动拉起:
pm2 save && pm2 startup
四、502网关错误排查方向
502错误几乎都是反向代理(通常为Nginx)无法正常连接后端服务导致,可按以下顺序排查:
- 查看PM2服务日志确认服务是否正常运行:
pm2 logs <服务名>,常见报错原因包括端口被占用、数据库连接配置错误、构建产物缺失 - 确认服务监听的端口与Nginx反向代理配置中指向的端口完全一致
- 重启Nginx服务确认配置生效:
systemctl restart nginx
内容的提问来源于stack exchange,提问作者Prince of Cinders
相关产品推荐
相关产品推荐

