Discuz 搬家教程

网站的空间有独立与虚拟之分,下面分别介绍两种空间的搬家方法。

一、独立主机
网站搬家即数据的迁移,搬家前不论独立还是虚拟主机,网站都需关闭。数据的迁移分为数据库数据及程序和附件文件两部分的的迁移。
数据库的迁移:首先停止老服务器上的 MySQL。复制 MySQL 数据存放目录下的数据文件,至于 MySQL 的数据存放目录,可以查看 MySQL 配置文件中的 datadir 参数。(对于 linux 系统的 MySQL 配置文件一般为 /etc/my.cnf ,windows 环境下为 MySQL 安装目录路径的根目录下的 my.ini 文件。)
将数据文件移到新服务器相对应的 MySQL 数据存放目录下,这里注意到的一点就是对于 Linux 系统,注意移动数据文件之后,将相对应的文件属主改成你的 MySQL 运行账号。
程序和附件的迁移:将你的老服务器 WEB 目录下所有文件移到新服务器的 WEB 目录即可。
修改配置文件信息:

1、discuz! X3.4 的配置文件在 config 目录下,即 config.global.php 和config.ucenter.php 两个文件。

2、UCenter 的配置文件在 data 目录下,即 config.inc.php 文件。

配置文件里记录的数据库地址、访问用户名、密码都要根据你的新服务器的相应信息进行修改。同时,如果你的域名发生变化,要修改配置文件中相应的域名信息。

3、由于 UCenter 的后台存放了各个应用的配置信息,所以当你修改完配置文件的信息之后,对应的需要去 UCenter 的应用管理中,把对应的信息(尤其是 IP 和域名)校正为正确的地址。

4、以下两个目录 属性 安全 users给予写入权限
\data
uc_server\data

至此,对于独立主机用户的站点快速搬家流程说明完毕。整个流程比较简单,唯一消耗的主要在于时间,当然这需要根据你的站点和传输速度而定。

二、虚拟主机
虚拟主机的数据库数据一般站长是直接拿不到的,最好是通过网站后台备份数据库数据,然后到新的空间中恢复数据库的备份就可以了,但新空间要全新安装一遍程序。

1、备份:
网站的数据部分,可以在 UCenter 后台直接进行备份,
登录 UCenter 后台→数据备份
在 UCenter 下可以只备份 UCenter 的数据,也可以备份所有应用或者部分应用的数据,这里我们选择备份所有应用的数据。提交后等待备份完成,可以到数据备份记录里查看。这里需要注意的是,在 UCenter 备份的整站数据有两部分,分别存放在 UCenter 和 Discuz! X 里面各一部分:UCenter 是在/uc_server/data/backup_日期_ABCDEf(ABCDEF是备份数据名称范例);Discuz! X 是在网站根目录 /data/backup_日期_ABCDEf(ABCDEF是备份数据名称范例)。很多人的问题就出现在这里,上传数据库备份文件的时候,千万要注意这两个备份文件要放到正确的位置,避免数据不完整丢失,造成会员,帖子等数据出错。
备份程序文件相对于虚拟主机来说,就要特别注意 UCenter 和 Discuz! X 的配置文件和存在 UCenter 中的头像等的备份。
备份 UCenter 的所有程序文件,其中要注意 data 目录以及其下的 config.inc.php 文件一定不能丢失,data 目录下的 backup 目录下存放的是刚才备份的数据,avatar 目录下存放的是所有会员的头像图片,所以这些文件一定不能丢失。
备份论坛的所有程序文件,其中要注意 data/attachment 附件目录以及 config 目录下的 config.global.php和 config.ucenter.php 文件一定不能丢失。如果有模板风格的,也要单独备份后下载,待新空间安装完毕,再重新上传启用;之前网站有通过DIY的页面,这时要导出备份,新空间装完再导入即可。
还有一点很重要:确保搬入服务器和原服务器的数据库版本和编码一致,如果编码一不致可能会出现乱码的情况。

2、安装新程序及附件、头像等的上传
全新安装论坛,安装的时候 Discuz! X 及 UCenter 数据库名以及表名前缀一定要和原来的一致;
程序头、尾(如果有改动)、diy数据都要重新覆盖;下载到本地的附件、头像等数据上传到新空间正确的位置;伪静态规则文件、模板文件及Logo网站标识等重新上传到新空间正确位置。

3、恢复数据库
首先登录到 UCenter 后台,检查各应用是否通信成功,然后用创始人登录:
UCenter 后台→数据备份→数据备份记录→数据恢复→(找到相应的备份,如果备份显示不存在,那就说明备份文件上传的位置错了!)点击“详情”→选择备份的数据→提交。

4、后续操作
由于 UCenter 以及 Discuz! X 的 URL 路径和之前比发生了变化,所以要在 UCenter 后台修改为正确的路径。
UCenter 管理后台→应用管理→编辑
Discuz! X 的 URL 路径。检查应用的 UCenter 配置信息,UCenter 管理后台→应用管理→编辑论坛的应用,找到应用的 UCenter 配置信息,复制其中的全部内容,分别覆盖到论坛的 config 文件最后的关于 UCenter 的配置信息部分。更新 UCenter及论坛的缓存后,网站搬家基本就好了,剩下的伪静态等问题,要确认服务器设置好 rewrite 后,在设置开启。

discuz报错Can not write to cache files, please check directory ./data/ and ./data/sysd

Discuz! X3.4 论坛后台出现如下报错:

Can not write to cache files, please check directory ./data/ and ./data/sysdata/ .

是因为权限没给,服务器上打开文件夹找到data文件夹-->右键-->属性-->安全-->找到 Users这个用户,把下面的写入权限勾上就可以了,uc_server\data也需要这个权限,不然uc_server后台设置里也会出现异常。

Discuz!报错 Error:Unknown column ‘app1’ in ‘where clause’ 的解决办法

UCenter info: MySQL Query Error
SQL:SELECT * FROM [Table]notelist WHERE closed='0' AND app1<'1' AND app1>'-5' LIMIT 1
Error:Unknown column 'app1' in 'where clause'
Errno:1054

Discuz!报错以上代码,并且用谷歌浏览器登录Discuz!论坛,没反应,需要刷新才能登录成功。

网上搜到的方法是notelist缺少了必要的字段引起的。下载UCenter 1.5.0 http://download.comsenz.com/UCenter/1.5.0/UCenter_1.5.0_SC_GBK.zip 找到里面的utilities\checkappid.php ,上传到 UCenter 根目录之后通过浏览器访问之,例如   http://yourucenterurl/checkappid.php

但是我试了不行,搜到此贴解决了我的问题 http://www.discuz.net/thread-1181335-1-1.html

方法就是登录DZ后台(注意不是UC后台),站长-UCenter 设置,把UCenter 应用 ID:的数字改成2。

恩,解决方法很奇怪,因为UC后台的应用管理里分明是1。

UCenter通信失败,导致Discuz论坛上传头像Access denied for agent changed报错的解决方法

Discuz论坛上传头像,出现Access denied for agent changed报错。

进入UCenter后台,发现应用管理里,用论坛这个应用出现“通信失败”。

我的解决方法:点击“通信失败”后的“编辑”按钮,复制“通信密钥”,进入Discuz管理后台,“站长”-“UCenter设置”,在“UCenter 通信密钥”里粘贴刚才在UCenter后台复制的密钥。

其他需要检查的设置:

一、论坛后台 => 站长 => UCenter 设置

二、UCenter 后台 => 应用管理 => 点击论坛应用的“编辑”

具体需要检查的设置说明:
1、UCenter 应用 ID 需要和 UCenter 后台的 ID 一致;
2、UCenter 通信密钥需要和 UCenter 后台的通信密钥一致;
3、UCenter 访问地址查看是否是正确的地址;
4、UCenter IP 地址查看是否是UCenter所在的 Mysql 服务器的ip地址。

安装discuz论坛显示“mysqli_connect()不支持,建议advice_mysqli_connect”的解决方法

安装Discuz! X3.3,出现“mysqli_connect()不支持,建议advice_mysqli_connect”的报错信息,不能继续安装。

逐条检查,发现是php.ini文件配置时,粗心犯错导致。比如定位php的ext目录时,只定位到了php根目录:
错误写法:extension_dir= "X:\Server_Core\PHP"
正确写法:extension_dir= "X:\Server_Core\PHP\ext"

或者其他地方也有写错,请逐一检查。