论坛搬迁之五:升级 Discuz! 7.0 至 X3.4(完)

by admin

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

目标:
将备份迁移后的 Discuz! 7.0.0 旧版论坛系统,升级为 X3.4

1. 准备工作

网查有效的升级步骤

  • UCenter 1.5.0 -> UCenter 1.5.2
  • UCenter 1.5.2 -> UCenter 1.6.0
  • Discuz! 7.0 -> Discuz! X2.0
  • Discuz! X2.0 -> Discuz! X3.2
  • Discuz! X3.2 -> Discuz! X3.4

注意事项

  • 每一步升级都要备份数据库和附件等文件,如有必要可备份整站
  • 如提示升级锁定,删除 ./data/upgrade.lock 文件
  • 升级后测试网站功能正常后,删除安装或升级相关文件以确保网站安全

2. UCenter 升级至 1.5.2

下载并解压 UCenter_1.5.2_SC_UTF8.zip
将 /upload 中的文件上传服务器,覆盖旧文件即可
( install 和 upgrade 目录无需上传)

3. UCenter 升级至 1.6.0

下载并解压 UCenter_1.6.0_SC_UTF8.zip
将 /upload 中的文件上传服务器,覆盖旧文件
上传 /utilities 中的 upgrade_1.5.2_1.6.0.php 到 UCenter 根目录
在浏览器运行升级程序

http://论坛地址/UCenter文件夹名/upgrade_1.5.2_1.6.0.php

点击“如果您已确认完成上面的步骤,请点这里升级”,升级会自动进行

按照提示,测试短消息功能及数据没有问题之后,删除无用表

补充:升级中如短消息表过大会出现 502 错误,执行以下 SQL 语句即可

alter table uc_pms add index mmd (msgfromid,msgtoid,dateline); (请注意表前缀)

升级后删除 upgrade_1.5.2_1.6.0.php,UCenter 后台更新缓存

4. 安装 Discuz! X2.0

下载并解压 Discuz_X2_SC_UTF8.zip
登陆论坛管理后台,“全局“-”站点信息“-”论坛关闭” 关闭站点
留下 UCenter 文件夹(原名 uc_server)
备份并删除(或移走)其他原站文件(为新装 X2.0)
将 /upload 中的文件上传服务器
修改文件权限为可读写

  • /config
  • /data 含子目录

在浏览器运行安装程序

http://论坛地址/install

由于我的旧版论坛修改了 UCenter 文件夹名,所以这里有几种办法通过验证:

  1. 上传 X2 版 /upload 中 UCenter 的文件夹 /uc_server 并修改权限
  2. 将旧版 UCenter 文件夹改回 /uc_server 名称
  3. 直接访问安装的下一页(我选择的非正常方法,略)

选择仅安装 Discuz! X

填入刚升级至 1.6.0 的 UCenter 路径,创始人密码等信息

新建数据库,完成全新安装

测试新装空论坛是否正常运行,删除 /install 文件夹

5. Discuz! 7.0 -> X2.0 数据库转换

由于未升级到 7.2,故不能使用 X2 安装包自带 /utilities/convert 转换
单独下载并解压 7.0 – X2 的转换文件
上传论坛根目录 /convert 中,设置其下文件权限为 777
浏览器访问运行转换程序

http://论坛地址/convert/

填入 7.0 和新装 X2 论坛的数据库信息进行转换

转换工作自动完成

升级完毕, 还要做的几件事:

(1)创始人设置
编辑  X2 新论坛 /config/config_global.php 文件,设定原论坛创始人 UID

$_config[‘admincp’][‘founder’] = ‘1’;

(2)移回附件
原 /attachments 内文件移至新论坛 /data/attachment/forum 中

(3)移回用户头像
原 /uc_server/data/avatar 内文件移至新论坛 /uc_server/data/avatar
(本次项目是独立安装 UCenter,所以不需要这个步骤)

(4)论坛管理后台
登陆新后台 http://论坛地址/admin.php 更新缓存
新系统增加了很多新功能,需要仔细重新设置一次
例如“用户”-“用户组”-“编辑”-“论坛相关”-“附件相关”中,我需将“允许查看图片”打开权限才可正常访问图片附件

(5)UCenter管理后台
进入 “UCenter”-“应用管理” 修改应用,将论坛类型改为 “DiscuzX”
如遇通信失败,记得检查 /config/config_ucenter.php 中的通信密钥、APPID 等是否一致

(6)删除 convert 程序文件夹

(7)自定义模板还原要根据具体情况再处理

(8)测试新论坛功能正常

6. Discuz! 升级至 X3.2

下载并解压 Discuz_X3.2_SC_UTF8.zip
保留

  • /data
  • /config
  • /uc_client
  • /uc_server(本项目中该文件夹已改名)

备份并删除(或移走)其他原站文件
将 /upload 中的文件上传服务器,覆盖旧的文件即可
上传 /utility 目录中的 update.php 到论坛 /install 目录,删除其中 index.php
浏览器访问并执行升级程序

http://论坛地址/install/update.php

转换过程中会建立很多新表
但由于PHP版本变更,TYPE需更改ENGINE才能自动成功执行


为了避免手动执行,无视代码内容直接修改升级文件(例如下图)

另外遇到一处执行错误,原因是数据库字段 COUNT 应小写
前往 phpMyAdmin 找到新建的该表,删除 COUNT 字段后按照提示执行命令即可

CREATE TABLE pre_common_failedip(
ip CHAR(7) NOT NULL DEFAULT ”,
lastupdate INT(10) UNSIGNED NOT NULL DEFAULT ‘0’,
COUNT TINYINT(1) UNSIGNED NOT NULL DEFAULT ‘0’,
PRIMARY KEY(ip, lastupdate),
KEY lastupdate(lastupdate)
) ENGINE = MYISAM

完成后更新缓存,测试功能正常后删除 /install 文件夹

(此处升级后发现会员个人页发帖数显示为0,后台“工具”-“更新统计”按需更新即可)

7. Discuz! 升级至 X3.4

下载并解压 Discuz_X3.4_SC_UTF8 安装包
升级方法和 X3.2 相同
完成升级回到树莓派服务器,将 PHP 版本切回 PHP 7.3

$ sudo a2dismod php5.6
$ sudo a2enmod php7.3
$ sudo service apache2 restart

测试论坛功能正常

至此论坛已完成升级测试,使用最新版系统在更安全的环境下运行(系列完)