云计算百科
云计算领域专业知识百科平台

禅道一键包:跨服务器迁移 + 迁移至LVM分区 实战运维笔记

前言:本文基于禅道官方一键安装包实战记录,迁移分两步完成:旧服务器 → 新服务器默认目录→ 新服务器默认目录 → LVM独立分区。全程使用Linux标准真实路径,不使用自定义占位符,命令可直接复制执行,内网环境优先保证业务稳定与权限兼容。

环境与路径说明

  • 禅道官方默认安装目录:/opt/zbox
  • 旧服务器源目录:/opt/zbox
  • 新服务器临时目录:/opt/zbox
  • LVM独立分区目标目录:/opt/zbox_lvm
  • 运行环境:内网Linux服务器、禅道一键安装包
  • 权限策略:保留官方默认权限,内网环境稳定优先

一、整体迁移流程

  • 旧服务器:停止服务 → 全量打包备份
  • 备份包传输至新服务器 → 解压至官方默认目录/opt/zbox
  • 新服务器:停止服务 → 全量同步至LVM分区/opt/zbox_lvm
  • 权限对齐配置 → 启动服务 → 问题排查解决
  • 业务功能全量验证

  • 二、阶段一:跨服务器全量迁移

    1. 旧服务器(源端)操作

    # 进入禅道官方默认安装目录
    cd /opt/zbox

    # 停止Apache、MySQL、Redis所有服务
    ./zbox stop

    # 全量打包(保留权限、属主、软链接,无数据丢失)
    tar -zcpvf zentao_full_backup.tar.gz .

    2. 备份包传输至新服务器

    scp zentao_full_backup.tar.gz root@新服务器IP:/opt/

    3. 新服务器(目标端)解压恢复

    # 创建官方默认安装目录
    mkdir -p /opt/zbox

    # 进入目录并解压全量备份包
    cd /opt/zbox
    tar -zxpvf /opt/zentao_full_backup.tar.gz -C ./

    4. 临时启动验证(可选)

    ./zbox start
    ./zbox status

    所有服务显示running,跨服务器基础迁移完成。


    三、阶段二:禅道迁移至LVM独立分区

    1. 迁移前准备(停止服务)

    cd /opt/zbox
    ./zbox stop

    2. 创建LVM分区目标目录

    mkdir -p /opt/zbox_lvm

    3. 全量数据同步(1:1复刻)

    rsync -av /opt/zbox/ /opt/zbox_lvm/

    4. 权限配置(与官方/旧环境完全一致)

    内网环境保留官方777权限,仅优化属主提升安全性,不改动业务权限:

    # 进入LVM分区禅道目录
    cd /opt/zbox_lvm

    # 核心目录权限配置
    chmod 777 tmp/
    chmod 777 app/zentao/www/data/
    chmod 755 data/mysql/

    # 属主属组配置
    chown -R nobody:nobody tmp/
    chown -R nobody:nogroup app/zentao/www/data/
    chown -R nobody:nogroup data/mysql/

    5. 启动LVM分区禅道服务

    cd /opt/zbox_lvm
    ./zbox start
    ./zbox status

    服务全部正常运行,LVM分区迁移完成。


    四、迁移核心问题:用户密码全部失效解决

    问题现象

    迁移后admin及所有用户密码无法登录,数据库直接修改MD5密码不生效。

    问题原因

    禅道密码加密规则:MD5(明文密码 + 配置文件salt),迁移后salt不匹配导致验证失败。

    官方最简解决方案

    # 进入LVM分区禅道对应目录
    cd /opt/zbox_lvm/app/zentao

    # 创建重置标记文件
    touch tmp/reset_admin.txt

    浏览器访问重置地址:

    http://你的禅道访问地址/reset.php

    按页面提示直接重置admin密码,100%生效。


    建议新增章节位置

    在你的博客中,紧跟在「四、迁移核心问题:用户密码全部失效解决」之后,新增一个独立章节:


    五、迁移后XXD服务异常问题及解决

    在这里插入图片描述

    问题现象

    迁移完成并启动禅道服务后,发现服务器CPU负载异常升高,通过top命令观察到xxd进程长期占用100%单核CPU,重启后依赖占用资源不释放。且日志中持续报错:

    [InitHttp] E_BAD_RESPONSE: Unable to perform handshake with backend server

    同时,禅道桌面客户端、实时通知推送等依赖XXD的功能无法正常使用,但Web端核心业务(项目管理、Bug跟踪等)不受影响。

    问题原因

    • 迁移前,禅道Apache服务默认监听8080端口,XXD服务配置中默认对接http://127.0.0.1:8080/zentao/x.php。
    • 迁移后,由于8080端口被GitLab占用,你将禅道Apache端口修改为8085,但未同步更新XXD的后端对接地址。
    • XXD启动后,仍尝试向8080端口发起握手请求,而该端口由GitLab提供服务,返回的响应不符合预期,导致XXD进入无限重试的死循环,从而持续占用CPU资源。

    解决方案

  • 定位XXD配置文件
    进入XXD服务的配置目录:

    cd /opt/zbox/run/xxd/config

    找到主配置文件xxd.conf(.bak为备份文件,.res和.db为资源/数据库文件,无需修改)。

  • 修改后端对接地址
    编辑xxd.conf,找到[backend]段落下的zentao配置项,将端口从8080修改为8085,保持密钥不变:

    # 原配置(错误)
    zentao = http://127.0.0.1:8080/zentao/x.php,b97b8b3e3f5b719e8368e9c4cd82e7f1

    # 修改后(正确)
    zentao = http://127.0.0.1:8085/zentao/x.php,b97b8b3e3f5b719e8368e9c4cd82e7f1

  • 重启XXD服务
    进入禅道安装目录,重启XXD服务:

    cd /opt/zbox
    ./zbox restart xxd

  • 验证修复效果

    • 查看日志,确认握手失败的报错消失:tail -f /opt/zbox/logs/xxd.log
    • 查看CPU占用,确认XXD进程恢复正常(CPU占用降至1%以下):top -p $(pgrep xxd)
    • 如果团队无需使用禅道桌面客户端、实时通知等依赖XXD的功能,也可选择彻底禁用XXD服务。

    六、关键问题说明

    1. 为何保留777权限不修改?

    • 禅道一键安装包官方默认权限就是777
    • 服务器为内网环境,无公网暴露风险
    • 修改为755易导致附件上传、缓存生成、文件写入失败

    2. admin重置后可在UI改其他用户密码吗?

    完全可以
    admin登录 → 后台 → 用户 → 选择用户 → 编辑 → 直接设置新密码,权限完整不受迁移影响。


    七、最终业务验证标准

    ✅ Web页面正常访问
    ✅ 历史数据完整无丢失
    ✅ 任务、需求、附件上传/下载正常
    ✅ admin可正常管理所有用户
    ✅ 服务稳定无报错
    ✅ 数据实际存储在LVM分区/opt/zbox_lvm


    八、迁移总结

  • 禅道一键安装包官方默认路径固定为/opt/zbox,通用且标准;
  • 跨服务器迁移:tar -zcpvf全量打包是最优方案,不丢文件、不丢权限;
  • LVM分区迁移:rsync -av1:1同步,保证数据完全一致;
  • 迁移密码失效:优先使用官方reset.php方案,不推荐直接修改数据库;
  • 内网生产环境:权限保持原厂配置,稳定优先于安全合规的激进调整。
  • 本次迁移无业务中断、数据完整、权限兼容,可作为禅道一键包迁移标准化方案参考。
    在这里插入图片描述

    赞(0)
    未经允许不得转载:网硕互联帮助中心 » 禅道一键包:跨服务器迁移 + 迁移至LVM分区 实战运维笔记
    分享到: 更多 (0)

    评论 抢沙发

    评论前必须登录!