问题描述:公司需要迁移禅道到另外一台服务器,没迁移过,去官网看了之后成功迁移,其中遇到了很多坑,希望对你们有所帮助。
禅道版本
迁移的版本一致,我的版本是18.3,18.3下载页面
其他版本下载
先进入检索页面,点击进入
搜索版本,如我的是开源18.3
在新服务器中安装禅道
我下的是linux一键安装包,将压缩包
解压
tar -xzvf ZenTaoPMS.18.3.zbox_64.tar.gz
备份旧服务器文件
先停止禅道服务
/opt/zbox/zbox stop
主要备份数据库和附件
数据库备份
将/opt/zbox/data/mysql/下的zentao文件夹下载下来(可以打为压缩包下载)
附件下载
将/opt/zbox/app/zentao/www/data/upload下的1文件夹下载下来(可以打为压缩包下载)
还原新服务器
先停止新服务器禅道
/opt/zbox/zbox stop
1、先删除新服务器上的/opt/zbox/data/mysql/zentao文件夹之后上传从旧服务器下载的zentao文件夹到/opt/zbox/data/mysql/目录下
2、删除新服务器/opt/zbox/app/zentao/www/data/upload下的1文件夹(如果有),将下载的1文件夹上传到/opt/zbox/app/zentao/www/data/upload目录
注意:上传的两个文件夹注意权限,需要与服务器文件夹权限一致
3、重启服务器
禅道中内置了apache web服务器和mysql,这两个的端口可以自己设置
设置web端口为40023 mysql为3307
/opt/zbox/zbox -ap 40023 -mp 3307
启动
/opt/zbox/zbox start
到这里其实就可以根据ip+配置web端口访问了,如我这里设置的端口为40023
问题
我在迁移过程中遇到了一个问题,我根据上述方法还原之后能成功进入禅道,数据也正确,但是有个“执行”页面出不来,我以为是我操作的问题,试了几次都这样,如下图。
我没搜到有相同情况的,最后原因是因为数据库有个表错误了,但是不知道原因,如果你们有任何问题可以官网问问工作人员,当然也可以自己排查一下,可以开启debug模式。
如何开启调试
zentao(pro/biz/pms)/config/my.php(db.php) 中debug的值改成true
版本不一致位置不一致,我的linux一键安装版在/opt/zbox/app/zentao/config下的my.php
sudo vim /opt/zbox/app/zentao/config/my.php
改为true之后停止再启动禅道,有时候就能看到报错了。
/opt/zbox/zbox stop
/opt/zbox/zbox start
解决
我在工作人员的帮助下开启了调试模式,重启之后再点击“执行”页面看到了错误,报错如下。
17:39:23 ERROR: SQLSTATE[HY000]: General error: 1877 Table zentao/zt_taskteam is corrupted. Please drop the table and recreate. <p>The sql is: SELECT DISTINCT t1.*, t2.id AS storyID, t2.title AS storyTitle, t2.product, t2.branch, t2.version AS latestStoryVersion, t2.status AS storyStatus, t3.realname AS assignedToRealName, IF(t1.`pri` = 0, 256, t1.`pri`) as priOrder FROM `zt_task` AS t1 LEFT JOIN `zt_story` AS t2 ON t1.story = t2.id LEFT JOIN `zt_user` AS t3 ON t1.assignedTo = t3.account LEFT JOIN `zt_taskteam` AS t4 ON t4.task = t1.id LEFT JOIN `zt_module` AS t5 ON t1.module = t5.id wHeRe t1.execution = '14' AND t1.deleted = '0' oRdEr bY `status` asc,`id` desc</p> in lib/base/dao/dao.class.php on line 1412, last called by lib/base/dao/dao.class.php on line 700 through function sqlError.
in /opt/zbox/app/zentao/framework/base/router.class.php on line 2797 when visiting execution-task
得知是表错误,就只能先看看就服务器该表是否有数据,表结构以及建表语句。
这儿说一下如何登录禅道的mysql数据库
切换到/opt/zbox/run/mysql文件夹下并登录mysql,账号root密码123456,使用zentao数据库
cd /opt/zbox/run/mysql
./mysql -u root -p
use zentao
查询报错的表还是报错说明表有问题
同样方式查看原服务器的该表
没报错并且没数据,那就想当我把新服务器上的zt_taskteam并重新添加就行了。
在旧服务器上查出建表语句并删除新服务器上该表重建就行
新加之后成功显示
群里工作人员说还可以试试自修复