You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何使用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

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.09.29 21:24:05