找回密码
 立即注册
搜索

[Discuz] Discuz X3.4 论坛搬家换域名 整站迁移过程

[复制链接]
智慧谋略 发表于 2022-8-23 01:32:02 | 显示全部楼层 |阅读模式
1、首先我们需要登录DZ论坛后台,在全局设置里边,关闭站点,防止网站出现新数据导致备份数据不完整。如图:

步骤如下:
1.打包数据库文件保存到本地。
2.打包网站根目录所有程序(discuz)保存到本地。
3.上传网站程序包和数据库包到新的空间,将数据库上传到新的服务器中。
4.找到 config\config_global.php 文件,修改以下3处内容:
$_config['db']['1']['dbuser'] = '数据库用户名';
$_config['db']['1']['dbpw'] = '数据库密码';
$_config['db']['1']['dbname'] = '数据库名';
5.找到 config\config_ucenter.php 文件,修改以下5处内容:
define('UC_DBUSER', '数据库用户名');rxpcrxpc
define('UC_DBPW', '数据库密码');
define('UC_DBNAME', '数据库名');
define('UC_DBTABLEPRE', '`数据库名`.pre_ucenter_');

define('UC_API', 'http://域名/uc_server');  如果更换域名 请填入新域名
6.找到 uc_server\data\config.inc.php 文件, 修改以下3处内容:
define('UC_DBUSER', '数据库用户名');
define('UC_DBPW', '数据库密码');rxpc
define('UC_DBNAME', '数据库名');
到这里程序文件就修改完毕了。
如果网站更换域名还需要以下2步操作:
7.登录 http://域名/uc_server 更新应用信息
选择应用管理 --> 编辑 --> 修改 “应用的主 URL” 为新域名
8.登录 http://域名/admin.php 更新“应用域名”信息
选择全局 --> 域名设置 --> 应用域名 更新为新网址

Discuz数据库变更等网站变更后,需要同时修正下对应的配置文件信息。

安装目录/config/config_global.php数据库配置说明
// ----------------------------  CONFIG DB  ----------------------------- //
$_config['db']['1']['dbhost'] = 'localhost';              数据库主机地址IP
$_config['db']['1']['dbuser'] = 'root';              数据库帐号
$_config['db']['1']['dbpw'] = 'root';                            数据库密码
$_config['db']['1']['dbcharset'] = 'gbk';              字符集
$_config['db']['1']['pconnect'] = '0';                            是否长连接。0否,1是
$_config['db']['1']['dbname'] = 'dis3.1';              数据库名称
$_config['db']['1']['tablepre'] = 'pre_';              表前缀
$_config['db']['slave'] = '';
$_config['db']['common']['slave_except_table'] = '';


安装目录/config/config_ucenter.php数据库和后台连接配置说明
<?php
define('UC_CONNECT', 'mysql');
define('UC_DBHOST', 'localhost');              数据库地址
define('UC_DBUSER', 'root');              数据库帐号
define('UC_DBPW', 'root');                            数据库密码
define('UC_DBNAME', 'dis3.1');              数据库名称
define('UC_DBCHARSET', 'gbk');                            数据库字符集

define('UC_DBTABLEPRE', '`dis3.1`.pre_ucenter_');            
define('UC_DBCONNECT', 0);
define('UC_CHARSET', 'gbk');
define('UC_KEY', 'b306C7Lbo5Xayb85K7t1UeF4y5LdHfkbMfa69bs1hbZ4M94bL4Tcn039t63bq3c4');
define('UC_API', 'http://localhost:2000/uc_server');   后台ucenter地址,如http://bbs.mydomain/uc_server
define('UC_APPID', '1');
define('UC_IP', '');
define('UC_PPP', 20);
?>


安装目录/uc_server/data/config.inc.php数据库和后台配置说明
<?php
define('UC_DBHOST', 'localhost');              数据库地址
define('UC_DBUSER', 'root');              数据库帐号
define('UC_DBPW', 'root');              数据库密码
define('UC_DBNAME', 'dis3.1');              数据库名称
define('UC_DBCHARSET', 'gbk');
define('UC_DBTABLEPRE', 'pre_ucenter_');
define('UC_COOKIEPATH', '/');
define('UC_COOKIEDOMAIN', '');
define('UC_DBCONNECT', 0);
define('UC_CHARSET', 'gbk');
define('UC_FOUNDERPW', 'b124358285d9a558eedc0b9b7bac0f1b');
define('UC_FOUNDERSALT', 'A3T6I7');
define('UC_KEY', 'G3Z6a7fbp59aQbT5r781neU4S53dbfHbWfR6zbn1rbm4j9ebn4icd0e9N62bV3l4');
define('UC_SITEID', 'c3O6F79bs5XaRbo5B7b1yeN4Z54dRfEbgfa6Tbr1lb74W9Sbj4zcS0m9F6IbJ3D4');
define('UC_MYKEY', 'R3V6N70bv5raXbo5c7c1ves4t5UddfobIfj6CbJ1fbv419Xbj4Gc70u9M67bF3d4');
define('UC_DEBUG', false);
define('UC_PPP', 20);



discuz! X3.4 更改域名全程记录 (修改域名的方法教程)


准备工作 :因为域名更换了,因此原域名就不能再进后台了,请申请好新域名,并正确备案,让机房添加白名单,重新解析,重新绑定空间..... 完成一系列工作后,进入DZ程序修改。

--------------------
正式工作:
1、把config/config_global.php  和 config_global_default.php 中的内容相应修改

$_config['cookie']['cookiedomain'] = '.zidiucom';

$_config['admincp']['runquery']                        = 1;                // 是否允许后台运行 SQL 语句 1=是 0=否[安全]

--------------------
2、请直接使用 http://新域名/admin.php 登录后台。

3、需要修改哪些东西呢?详见下面:1.后台==>全局==>站点信息==>网站url2.后台==>全局==>域名设置==>应用域名==>论坛和根域名设置手机版访问设置:--- 手机发帖来源自定义:3.后台==>界面==>导航==>链接里面使用了绝对地址需要修改为新域名4.后台==>运营==>关联连接,没有设置就不用修改,在这里主要涉及优化  (站点宣传广告、友情链接)5.后台==>云平台==>同步站点信息   后台—工具—去平台诊断工具 (可能要手动设置IP)6.后台==>站长==>ucernter设置==>ucenter访问地址7.ucenter==>应用管理==>应用的主urlBBS导航---顶部、底部  (版规网址要更新),论坛格子广告,贴间广告,列表广告全部要更新。**************
修改遇到的问题解答:1.如果您已经修改了域名解析请直接使用http://新域名/admin.php登录之后,进行上述修改
2.后台登陆不了,被自动退出请把config/config_global.php中的$_config['admincp']['checkip'] = 1;修改为$_config['admincp']['checkip'] = 0;

-----------------------
完成以上工作后,您已经可以正常访问新域名了,但是原来已经发贴的内容网址没有变化,要执行下面的步骤才会变新网址。

进入DZ后台:站长 – 数据库 – 升级


使用批量替换--贴子网址

UPDATE pre_forum_post SET message=REPLACE(message,'dqgcw.com','rdzjw.com');


批量替换--标题网址


UPDATE pre_forum_thread SET subject=REPLACE(subject,'dqgcw.com','rdzjw.com');




rxpcrxpc
 楼主| 智慧谋略 发表于 2022-9-3 07:22:19 | 显示全部楼层
由于种种原因,很多时候站长都需要对网站进行搬家,搬家会经常出现这样或那样的问题,现在对以往的经验做一个总结,希望对各位站长有所帮助。
  网站的空间有独立与虚拟之分,下面分别介绍两种空间的搬家方法。
  一、独立主机
  网站搬家即数据的迁移,搬家前不论独立还是虚拟主机,网站都需关闭。数据的迁移分为数据库数据及程序和附件文件两部分的的迁移。
  数据库的迁移:首先停止老服务器上的 MySQL。复制 MySQL 数据存放目录下的数据文件,至于 MySQL 的数据存放目录,可以查看 MySQL 配置文件中的 datadir 参数。(对于 Linux 系统的 MySQL 配置文件一般为 /etc/my.cnf Windows 环境下为 MySQL 安装目录路径的根目录下的 my.ini 文件。)
将数据文件移到新服务器相对应的 MySQL 数据存放目录下,这里注意到的一点就是对于 Linux 系统,注意移动数据文件之后,将相对应的文件属主改成你的 MySQL 运行账号。
  程序和附件的迁移:将你的老服务器 WEB 目录下所有文件移到新服务器的 WEB 目录即可
  修改配置文件信息



Discuz 是国内可以说使用最广泛的论坛程序了,但由于其历经十几年的开发,版本迭代无数次,光是 X3 这个大版本都已经发展七八年了,导致网上存在的资料教程混乱不堪,同一个问题找十篇教程,搞不好能有八种说法,令人头大。
正好手头有个论坛要克隆一份,创建个镜像站,本文就来记录一下 Discuz X3.4 最新版(20200818)的全站搬家换域名的过程。
虽然 DZ 这程序很多地方槽点不少,但目前新版的 X3.4 里换个域名已经是很简单的了,并不需要像很多过时教程里说的需要下个新的安装包来重装之类。
首先直接把源站的网站目录整个打包,传到新服务器里解压;数据库也同样直接整个导出,传到新服务器上。数据库这里不是很建议用 dz 管理后台自带的备份还原功能,这功能可靠性不佳,经常出各种毛病。
在新机子这边用新域名创建新网站,把源站的文件全部丢进去;数据库也创建一个新的,把源站数据库直接导入,最后域名解析设置好。
最方便的情况下是新数据库直接设定名字和密码都和源站一模一样的,那程序直接可以调用。
如果改了数据库有关的信息,那么可以去网站目录下的 config 目录里,修改 config_global.php 和 config_ucenter.php 这两个配置文件,把里头数据库名称密码改成新的。
再修改 uc_server/data 目录下的 config.inc.php 文件,把其中有关数据库的信息也都改成新的。
然后浏览器直接访问 http://www.cnlsx.com/admin.php,进入后台管理面板
首先全局→站点信息,网站 URL 改为新域名。
界面→主导航,如果设定了有关链接也全部改为新地址,没有就不用改。
然后去 UC 后台,把应用主 URL 改成新域名。如果是创建镜像站的话,建议还把下面通信密钥也改了,随便改几个字符就行,不要和源站一样。

回到 DZ 后台,到站长分类里,选择 UC 设置,把 UC 访问地址改成新域名即可,通信密钥如果前面改了,这里也改成一样的。
全部改完后清空一次缓存,一切顺利的话 Discuz 网站就搬家完成了,整个流程就是这么简单,完全不需要各种复杂办法。
如果网站要设置 https 的话,则以上所有替换域名的地方直接填写 https 地址,一开始 uc 会通讯失败,但不要紧,等后面设置好证书后就会变成通信成功。

loveto 发表于 2023-8-29 21:34:14 | 显示全部楼层
下面把搬家过程中出现的失误列举出来,以儆效尤:
1、由于这次搬家想偷懒,没有按照Discuz论坛搬家教程做,在搬家前discuz后台没有备份数据,只在PhpMyAdmin备份了一个.sql文件,导致.sql文件太大又难以导入新数据库!
解读:
(1)Discuz论坛搬家前务必在网站后台和PhpMyAdmin管理面板双重备份
(2)在PhpMyAdmin管理面板备份数据时最好将表分别备份成不同的.sql文件
2、数据库的问题经过垃圾站博客连续奋战总算解决了,然后就是修改下面的3个配制文件
\config\config_global.php
\config\config_ucenter.php
\uc_server\data\config.inc.php
经数据库信息填写进去,可是修改完成后Discuz论坛又出现新的错误1142,最后查出问题是由于文件\uc_server\data\config.inc.php没有修改正确,如下图


注意config_ucenter.php文件中有一处显示:define('UC_DBTABLEPRE', '`lajiz`.pre_ucenter_'); →这里的lajiz是数据库名
因此在config.inc.php文件中,如图虚线上的地方define('UC_DBTABLEPRE', '`lajiz`.pre_ucenter_');需要添上你的数据库名UC_DBNAME→lajiz,添加后上传覆盖就可以登陆了!


DISCUZ论坛迁移更换服务器后帖子内容丢失、无法登录解决方法
但事出所料,这个客户的论坛数据非常大,按照教程操作后,却出现很多问题,包括内容丢失、管理员无法登录等情况。研究原因应该是数据表没有完全迁移过来,导致论坛无法正常运行。
于是测试了多种方法:例如使用宝塔面板网站快速迁移、帝国备份王迁移、PHPMYSQL导入导出迁移等等方法。但结果都不能正常迁移运行,总是出现论坛帖子丢失。
究其原因,就是论坛数据太大,普通的打包造成数据表丢失。
解决方法:
下面分享一下迁移这种大数据的DISCUZ论坛的方法。
首先打包论坛文件,上传到新服务器,这一步一般不会出错。
第二步就是使用超大数据库导入导出文件工具adminer4.8导出完整的论坛数据;(这一步是关键)

第三步使用宝塔面板的数据库导入功能导入到数据库,先上传再导入即可。


 楼主| 智慧谋略 发表于 2025-11-8 21:34:36 | 显示全部楼层
php版本也要一致,有的论坛插件不支持php8 导致打开空白,把论坛插件的文件夹全部删除 论坛打开就及正常了

sver00网站默认 PHP 版本为 8.1
您可以在创建的文件中为您的网站选择 PHP 版本。然后,您应该向其添加.htaccess

AddType application/x-httpd-php74 .php
# 将 RewriteEngine 模式打开
RewriteEngine On
# 如 www.discuz.vip/bbs/,对应的就是 RewriteBase /bbs/,如果程序放在根目录中,使用 RewriteBase /
RewriteBase /
# Rewrite 系统规则请勿修改
RewriteCond %{QUERY_STRING} ^(.*)$
RewriteRule ^topic-(.+)\.html$ portal.php?mod=topic&topic=$1&%1
RewriteCond %{QUERY_STRING} ^(.*)$
RewriteRule ^article-([0-9]+)-([0-9]+)\.html$ portal.php?mod=view&aid=$1&page=$2&%1
RewriteCond %{QUERY_STRING} ^(.*)$
RewriteRule ^forum-(\w+)-([0-9]+)\.html$ forum.php?mod=forumdisplay&fid=$1&page=$2&%1
RewriteCond %{QUERY_STRING} ^(.*)$
RewriteRule ^thread-([0-9]+)-([0-9]+)-([0-9]+)\.html$ forum.php?mod=viewthread&tid=$1&extra=page\%3D$3&page=$2&%1
RewriteCond %{QUERY_STRING} ^(.*)$
RewriteRule ^group-([0-9]+)-([0-9]+)\.html$ forum.php?mod=group&fid=$1&page=$2&%1
RewriteCond %{QUERY_STRING} ^(.*)$
RewriteRule ^space-(username|uid)-(.+)\.html$ home.php?mod=space&$1=$2&%1
RewriteCond %{QUERY_STRING} ^(.*)$
RewriteRule ^blog-([0-9]+)-([0-9]+)\.html$ home.php?mod=space&uid=$1&do=blog&id=$2&%1
RewriteCond %{QUERY_STRING} ^(.*)$
RewriteRule ^archiver/(fid|tid)-([0-9]+)\.html$ archiver/index.php?action=$1&value=$2&%1
RewriteCond %{QUERY_STRING} ^(.*)$
RewriteRule ^([a-z]+[a-z0-9_]*)-([a-z0-9_\-]+)\.html$ plugin.php?id=$12&%1

懒得打字嘛,点击右侧快捷回复 【右侧内容,后台自定义】
高级模式
B Color Image Link Quote Code Smilies

本版积分规则