论坛搬迁之四:迁移 Discuz! 旧版论坛系统

by admin

背景:
填坑远古论坛,打算将旧版系统(Discuz! 7.0.0)迁移至树莓派 ,用于备份和升级测试

目标:
安装 Discuz! 7.0.0 旧版论坛系统,将备份的数据库和文件导入,完成整站迁移,并在过程中实现 GBK -> UTF8 编码转换

1. 选择安装包

Discuz! 7.0.0 有两种安装方式

  1. UCenter 1.5.0 -> Discuz! 7.0.0 使用独立安装包顺序安装
  2. UCenter 1.5.0 + Discuz! 7.0.0 整合包安装

由于整合包安装不能自定 UCenter 路径,因此视迁移目标论坛的情况,我选择了独立安装包的方式

2. 上传网站文件

下载并解压 UCenter_1.5.0_SC_UTF8.zipDiscuz_7.0.0_SC_UTF8.zip

使用 FTP 上传 Discuz! 的 /upload 文件夹至服务器网站对应论坛路径的根目录;上传 UCenter 的 /upload 文件夹至服务器网站对应原站点对应的路径

(例如你的论坛 UCenter 路径可能并不是默认 /uc_server 而是 /usercenter,一定要确保与迁移目标论坛的原路径一致,这也是我这次没有选择整合包的原因)

根据安装说明,将要求的文件夹设置 777 权限

3. 安装 UCenter

在浏览器打开树莓派 ip 下 UCenter 的安装路径,按照提示执行安装程序,按原论坛信息填写数据库信息完成安装

4. 安装 Discuz!

在浏览器打开树莓派 ip 下 Discuz! 的安装路径,按照提示执行安装程序

如遇 “对不起,请将 php.ini 中的 short_open_tag 设置为 On,否则无法继续安装。” 提示,修改正在运行的 php 版本对应路径下的 php.ini 配置文件

$ sudo nano /etc/php5.6/apache2/php.ini
$ sudo service apache2 restart

便可顺利执行

说明中没有提到的配置文件 config.inc.php 和缓存文件夹 /uc_client/data/cache 提示需要修改权限,也修改为 777 即可

填写刚刚安装的 UCenter 路径,按原论坛信息填写数据库、管理员等信息完成安装

FTP 中删除两者的 install 文件夹,修改 config.inc.php 配置文件权限回 644
至此一个全新的空论坛已在正常运行

5. 备份原论坛数据

5.1 备份 Discuz! 数据库(主要为论坛数据)

登陆迁移目标——原论坛的管理后台,在“工具”-“数据库”-“备份”页面下进行论坛数据库备份,为将原论坛 GBK 编码数据正常应用于新装论坛,此处需设置强制字符集为 UTF-8

完成备份后,下载数据库备份文件

5.2 备份 UCenter 数据库(主要为用户数据)

原论坛管理后台,在“UCenter”-“数据备份”-数据备份”页面下,发现 Ucenter 的数据备份功能不能强制字符集

不想自己转换编码,也没有时间搞清楚这个版本 restore.php 能否达成目标

在不受到迁移前后两个服务器限制的情况下,我选择直接用 phpMyAdmin 导出数据,只需在 phpMyAdmin 中选择 UCenter 的数据库,导出时设置字符集为 UTF-8 即可

5.3 备份文件

通过 FTP 下载论坛重要文件

./attachments  所有用户上传附件
./templates  模板相关文件
./UCenter文件夹名/data/avatar  所有用户头像

6. 还原论坛数据

6.1 导入 Discuz! 数据库

将备份文件通过 FTP 上传,一般为 [日期]_xxx-1.sql 格式的一系列文件

登陆新建论坛的管理后台,在“工具”-“数据库”-恢复”页面下填入首个备份文件路径,点击“提交”开始导入数据,系统会提示并逐个导入这一系列备份文件,直到完成所有数据的导入。

6.2 导入 UCenter 数据库

同样使用 phpMyAdmin,选择 UCenter 的数据库,将备份数据库文件导入即可(保险起见,可先把 UCenter 数据库删除重建)
此处可能遇到默认 php 设置导致数据文件导入失败的问题,修改正在运行的 php 版本对应的 php.ini 文件即可,对应此项目:

$ cd /etc/php/5.6/apache2
$ sudo nano php.ini

修改其中的以下默认参数为需要的即可(最好将 upload_max_filesize 设置小于后两者)

upload_max_filesize = 2M
memory_limit = 128M
post_max_size = 8M

重启以使其生效

$ sudo service apache2 restart

6.3 上传备份文件

使用 FTP 将备份的其他文件上传至新建论坛的对应路径
补充:如果涉及网页文件,记得需要转码,可使用 GB2UTF8.exe 等方法

6. 补充设置

本次的数据迁移还是造成了一些信息丢失,进行以下处理:

6.1 解决积分问题
发现个人页面积分不显示,在”工具“-”积分策略向导“中逐个按照原论坛设置”威望“和”金钱“等的名称和开关等即可

6.2 解决无法加载注册页面的问题
发现注册链接指向的文件名不是 register.php,原因是在管理后台”全局“-”注册与访问“-”注册“页面修改了注册文件名,在 FTP 中对照原论坛改名过的注册文件改为同名即可

6.3 解决 Discuz! 与 UCenter 通信失败问题
管理后台”UCenter”-“应用管理”-”应用列表“中可见论坛通信情况显示”失败“,参考此 官方教程,确认了应用 ID 匹配、UCenter 访问地址(不含admin.php)和应用 IP 也正确,将论坛根目录 config.inc.php 配置文件中的”UC_KEY“通信密钥填入”编辑应用”页面,通信成功

7. 测试

浏览器访问论坛,使用默认字符集(UTF-8)网页和帖子内容均可正常显示,无乱码;用户头像、个人资料页显示均正常;UCenter 后台及 phpMyAdmin 中的中文用户名也无乱码;测试注册、发帖、上传附件等均可,一切正常

至此旧版论坛迁移工具已完成

8. 其他

补充一个小坑

在正式迁移之前,我其实使用 GBK 字符集进行了一次迁移测试,以验证树莓派搭建的软硬件环境。以 GBK 备份和导入数据后,出现了乱码的现象,经网友分享得知,PHP 5.4.0 后编码参数的默认值,由之前的 OFF(自适应)变更为了 UTF-8

修改树莓派中服务器的 php.ini 文件

default_charset = Off

重启 Apache2 即解决

这并不影响上面的正式迁移,但感觉有必要记录下来