手动部署Rocket.Chat实例更新经验咨询:除重部署外的操作
手动部署Rocket.Chat升级实操经验
作为手动部署并维护Rocket.Chat快3年的老从业者,我来分享下除了拉取最新代码之外的关键实操步骤:
升级前必做准备
- 核心数据全量备份:
- 先备份MongoDB数据库,执行命令
mongodump --db rocketchat --out /path/to/your/backup/dir,这一步绝对不能省,万一升级出问题能快速回滚 - 备份Rocket.Chat的配置文件(比如
settings.json或自定义的环境变量配置文件),还有用户上传的媒体文件目录(默认是uploads文件夹)
- 先备份MongoDB数据库,执行命令
- 依赖版本兼容性检查:
- 用
node -v确认Node.js版本是否符合新版本要求,部分大版本升级会要求Node从14升到16/18,不符合的话推荐用nvm管理升级 - 用
mongod --version检查MongoDB版本,比如最新版通常要求4.4以上,必要时先升级MongoDB
- 用
升级过程中的关键操作
- 彻底停止服务:如果用systemd管理就执行
systemctl stop rocketchat,或者直接pkill node杀死相关进程,确保服务完全停止再操作 - 清理旧文件与缓存:
- 进入项目目录,删除旧依赖文件夹:
rm -rf node_modules - 删除旧构建产物:
rm -rf dist - 清理npm缓存:
npm cache clean --force
- 进入项目目录,删除旧依赖文件夹:
- 安装新版依赖:拉取最新代码后,执行
npm install --production,加--production跳过开发依赖,加快生产环境安装速度 - 重新构建前端:执行
npm run build,这一步会把前端代码打包成生产环境可用的文件,跳过的话启动后前端大概率会出问题 - 执行数据库迁移:启动MongoDB后,进入项目目录执行
node main.js migrate,大版本升级时这一步尤其重要,用来处理数据库结构的变更(比如新增字段、调整集合),跳过会直接导致服务启动失败 - 同步配置项:对比备份的旧配置和新版本的默认配置,检查有没有新增的必填配置,或者被废弃的配置项,比如有些版本会把部分配置从
settings.json迁移到环境变量,需要同步更新
升级后验证环节
- 启动服务并监控日志:用
systemctl start rocketchat启动服务,再用journalctl -u rocketchat -f实时查看日志,重点确认数据库连接、迁移相关的日志没有报错 - 核心功能测试:登录后台测试发送消息、上传文件、创建频道、用户登录登出等基础功能,确保正常可用
- 性能观测:查看服务器CPU、内存占用情况,对比升级前的数据,确认没有异常飙升的情况
额外提醒:如果是跨多个大版本升级(比如从3.x直接升到6.x),不要跳版本,最好按3.x→4.x→5.x→6.x的顺序逐步升级,每个版本都完成上述步骤,避免跨版本迁移出现兼容问题
内容的提问来源于stack exchange,提问作者Enzymes




