Discuz迁移教程
一、上传
将主程序和数据库上传至服务器,解压并部署
二、核心配置文件
需要修改以下三个文件:
-
/config/config_global.php:主要修改数据库连接信息。 -
/config/config_ucenter.php:修改数据库连接信息和 UCenter 相关设置。 -
/uc_server/data/config.inc.php:修改 UCenter 自身的数据库连接信息。
每个文件需要修改的具体内容如下:
/config/config_global.php
// 修改数据库信息
$_config['db']['1']['dbhost'] = 'localhost'; // 数据库服务器地址
$_config['db']['1']['dbuser'] = '新数据库用户名';
$_config['db']['1']['dbpw'] = '新数据库密码';
$_config['db']['1']['dbname'] = '新数据库名';
// 修改cookie作用域(如果更换了域名)
$_config['cookie']['cookiedomain'] = '.新域名.com'; // 注意前面有个点[reference:11]
/config/config_ucenter.php
// 1. 修改数据库信息
define('UC_DBHOST', 'localhost');
define('UC_DBUSER', '新数据库用户名');
define('UC_DBPW', '新数据库密码');
define('UC_DBNAME', '新数据库名');
// 【重要】修改表前缀,务必包含新的数据库名
define('UC_DBTABLEPRE', '`新数据库名`.pre_ucenter_');[reference:12][reference:13]
// 2. 修改UCenter访问地址
define('UC_API', 'http://新域名/uc_server');[reference:14]
// 3. 修改通信密钥(与UC_KEY保持一致)
define('UC_KEY', '与你后面在UCenter后台设置的一致');
/uc_server/data/config.inc.php
// 修改数据库信息
define('UC_DBHOST', 'localhost');
define('UC_DBUSER', '新数据库用户名');
define('UC_DBPW', '新数据库密码');
define('UC_DBNAME', '新数据库名');
// 修改通信密钥(与上面UC_KEY保持一致)
define('UC_KEY', '与你前面在config_ucenter.php设置的一致');
三、修改UC
这步操作是为了确保 Discuz! 与 UCenter 能正常通信。
-
目的:
UC_KEY是 Discuz! 和 UCenter 之间传输信息的加密密钥,必须完全一致才能正常通信。复制站点时如果保留原密钥,虽然能通信,但会让新旧两个站点的密钥相同,存在安全隐患。最佳实践是为每个新站点生成一个新密钥。 -
操作:这需要同时修改三个地方,并保持一致。
-
配置文件:修改新站点根目录下
/config/config_ucenter.php文件中的define('UC_KEY', '...')。 -
UCenter 后台:登录新站点的 UCenter 后台(
http://新域名/uc_server),在“应用管理”中编辑 Discuz! 应用,将“通信密钥”修改为和配置文件中一致的值。 -
Discuz! 后台:登录新站点的 Discuz! 后台(
http://新域名/admin.php),在“站长”->“UCenter 设置”中,将“通信密钥”也修改为同一个值。
-
-
验证:修改完成后,在 UCenter 后台的应用管理中,如果显示“通信成功”,就代表设置正确了。
四、 数据库内部修改
修改完配置文件,网站可以运行了,但数据库里可能还记录着旧域名,导致页面跳转异常
-
替换旧域名(可选但推荐):如果帖子内容、用户头像等字段里还硬编码了旧域名,可以通过SQL命令批量替换。操作前务必备份数据库!
-- 示例:替换帖子内容中的旧域名
UPDATE pre_forum_post SET message = REPLACE(message, '旧域名.com', '新域名.com');
-- 示例:替换用户头像路径中的旧域名
UPDATE pre_common_member SET avatar = REPLACE(avatar, '旧域名.com', '新域名.com');
后台设置 (必须操作)
登录新站后台 (http://新域名/admin.php),在“全局”->“域名设置”->“应用域名”中,将默认域名修改为新域名。
4. 服务器环境与伪静态 (按需调整)
-
伪静态规则:如果“胚子站”开启了伪静态,新服务器也需要配置相同的伪静态规则。
-
目录权限:确保
/data、/config等目录拥有正确的读写权限(通常为www755,root755部分无法使用)。
五.“重置”网站ID
如果更换应用中心id请按好这个来
“重置”网站ID:修改 siteuniqueid
- 清空站点唯一ID (
siteuniqueid):在数据库pre_common_setting表中,将skey为siteuniqueid的svalue值清空。这样新站就能在应用中心重新注册,获得全新身份。
通过修改数据库的 siteuniqueid 来让应用中心重新生成一个全新的网站ID。但这同样会彻底抛弃旧的身份和所有授权,仅适用于你想完全重置应用中心(比如网站因盗版被官方屏蔽)的情况。
操作步骤如下:
-
通过 phpMyAdmin 等工具进入数据库。
-
找到pre_common_setting表(注意表前缀)。
-
搜索skey为siteuniqueid的记录。
-
编辑该记录的svalue字段,将其清空或改为一个随机值。(清空后不会自动生成)
-
保存后,在论坛后台“工具”里“更新缓存”。(不更新的话不会生效)
-
重新进入应用中心,系统就会自动为你生成一个全新的网站ID。
考虑使用SQL语句:如果手动编辑无效,可以尝试在后台“站长”->“数据库”->“升级”中,或通过phpMyAdmin的SQL执行栏,直接执行以下SQL语句(请将表前缀pre_替换为你自己的):
UPDATE `pre_common_setting` SET `svalue` = '' WHERE `skey` = 'siteuniqueid';
再次提醒:重置网站ID意味着会丢失所有已购买应用的授权,请务必确认这是你需要的操作。
补充:清空skey的数值后不会自动生成,建议修改只要修改一个字符然后去后台更新缓存即可成功。
如果你对Discuz后台比较熟悉,这个方法最快,不用在phpMyAdmin里翻找。
操作步骤:
1.进入Discuz后台,在“站长” -> “数据库” -> “升级”页面。
2.在“SQL语句”框中输入以下命令(注意将表前缀pre_换成你自己的):
UPDATE `pre_common_setting` SET `svalue` = '' WHERE `skey` = 'siteuniqueid';
3.点击“提交”执行。
4.去“工具” -> “更新缓存”。
优点:无需额外工具和文件,直接在后台操作,非常快捷。
缺点:需要手动输入SQL语句,输错可能有风险;且部分虚拟主机可能屏蔽了后台执行SQL的功能。
| phpMyAdmin | 找到数据表并修改 | 通用性强,不受主机限制 | 步骤相对繁琐,需要在一堆数据中查找 |
| 后台执行SQL | 输入一行SQL代码 | 最快捷,无需额外工具 | 需要输入代码,部分主机可能不支持 |
六、为了让你更清晰地把握重点,这里再梳理一下
1.普通迁移完全不需要修改任何文件,原封不动的上传解压,网站和数据库全部原本不动、不改任何名称
2.如果觉得秘钥或者数据库有泄露不安全,可以按照上面除第五步外操作。
3、如果是胚子程序,也就是你不想每次都搭建dz站点,想把以前的空站程序直接拿来当新站用,需要把以上步骤全部操作一遍,包括第五步。