【引子】
需求:PHP为discuz主打产品,为了论坛更成熟,或者换服务器产生的需求
目标:从discuz!nt 2.50 + mssql2000 版本(.net 2.0) 转换 为discuz!7.0 php+mysql 版本
【感谢】
参考文档:八百里 http://www.800l.com/discuznt-to-discuz.html
转换工具:白乐天 http://www.bbstobbs.com/thread-95-1-1.html
【基本要求】
转换要求:最大程度保证数据不丢失,文件不丢失
知识要求:有一点点数据库基础知识和网站部署知识即可
成功要素:转换过程中会碰到各种各样的问题,一定要有耐心,因为一定是能够转换的!
【部署以及配置】
服务器A:原discuz!nt 2.50 的论坛所在的服务器, 平台为 IIS6 + .net 2.0,数据库为 mssqlserver 2000
原数据库名:mybbs
服务器B:新的discuz!7.0论坛所在服务器,平台为 apache2 + php5,数据库为mysql5
新数据库名:mybbs_php
【准备工作】
1、自己电脑的环境为 windows2003或windowsxp,iis+.net2.0+mssql2000(sp4);能够将原服务器A上的网站完整的再现在本机上
2、安装好 ComsenzEXP 2.1.0简体GBK 版本,下载地址:http://download.comsenz.com/ComsenzEXP/2.1.0/ComsenzEXP-2.1.0-SC_GBK.zip
此版本自动安装后,自动安装并配置好apache2+php5+mysql5,同时还会安装上 UCenter1.5/UCHome2.0/Discuz!7.0,如图目录所示

3、将服务器A上的数据库文件down下来,按照标准虚拟主机的备份,会提供mdf文件下载,以下我用mybbs_net.mdf为例
4、将服务器A上的整个论坛目录打包下载到本地,以下我用文件夹mybbs表示
【开始:第一步,将原有论坛在本地完整重现,熟练者可以自行操作,不必参考以下步骤】
1、在mssql企业管理器中,附加 mybbs.mdf,选择指定数据库所有者为 sa

2、附加成功后,展开mybbs数据库,点击“用户”,会看到用户列表里面有原服务器A上的用户名,删除此用户名,会提示“因为选定的用户拥有对象,所以无法除去该用户”,不急继续

3、点击“表”,选择sysusers表->右键返回所有行,找到含原服务器A的用户名所在的列,删除


4、点击(local)(Windows NT)->“安全性”->登录,新建一个用户名如:mybbs_db,密码为123456,新建好后不要到“数据库访问”里面进行操作
5、重新选中库mybbs,点击顶部菜单“工具”-“SQL查询分析器”,在其中输入如下sql语句
sp_change_users_login ‘update_one’,'chinabjj’,'mybbs_db’ 其中前一个参数是旧用户名,第二个为新用户名,F5运行一次即可

6、然后再到“安全性”->登录中用户名mybbs_db,右键属性,编辑其“数据库访问”,设置其对库mybbs_net有public和db_owner角色,数据库恢复完毕

7、在IIS中,将从服务器A中down下来的压缩文件解压后的目录设置为网站主目录,修改DNT.config里面的数据库连接配置

8、重启IIS一次,然后在浏览器中检查网站是否完整再现 http://localhost/mybbs/index.aspx
【第二步,安装干净的ucenter1.5+discuz!7.0,全部安装GBK版本】
1、下载单独的UCenter1.5和discuz!7.0的安装文件�
http://download.comsenz.com/UCenter/1.5.0/UCenter_1.5.0_SC_GBK.zip
http://download.comsenz.com/Discuz/7.0.0/Discuz_7.0.0_SC_GBK.zip
2、将安装文件拷贝到C:\ComsenzEXP\wwwroot\mybbs目录下,这里以mybbs以及mybbs\uc\ 为例
3、安装UCenter1.5,建立数据库文件为 mybbs_php,用户名为root,密码为root,表名前缀为uc_

4、安装discuz!7.0,选择已经建好的数据库mybbs_php,并输入用户名密码链接安装,表名前缀为 cdb_

5、其中管理员帐户为admin,admin以及uc的创始人的密码均为123456
【第三步,在服务器B上安装干净的ucenter1.5+discuz!7.0,全部安装GBK版本】
所有步骤同第二步,唯一不同的是标准服务器提供商会分配mysql数据库用户名,这里默认为用户名:mybbsdb 密码:123456
【第四步,数据转换】
1、下载工具 http://www.bbstobbs.com/downfile/DiscuzNTtoPHP7.rar
2、解压后运行,按照提示填入相关数据,如下图所示

可能问题1:连接MSSQL失败,在mybbs_db用户尝试失败后,可尝试使用sa用户和密码进行连接,反之亦然;
可能问题2:链接Mysql失败,注意ComsenzEXP版本的mysql端口为6033,自己安装的mysql的则为3306,使用root用户连接;
注意:论坛表前缀:cdb_;uc表前缀:uc_;将“转blog”和“转相册”的勾去掉
4、按照自己的要求开始导入,导入后查看日志文件是否正常,然后测试原有的账户能否登录(非管理员帐号)

可能问题1:导入后原有的账户密码无法登陆,请检查ucenter与discuz!7的通信是否正常

可能问题2:导入的时候有失败数据,查看是否原版本是GBK还是UTF8,这里默认是GBK;不论失败原因是什么,都要重新导入一次,直到没有错误为止
【第五步,将本地mysql数据库中的mybbs数据导入到服务器B中】
1、打开phpmyadmin页面,选择导入,选择字符集为utf8,等待导入结束
2、导入成功后,检查数据是否有乱码出现,如果出现乱码,则需要修改 mybbs\config.inc.php文件
3、phpmyadmin中修改数据库的chaset为gbk_chinese_ic
————————————————————————————————————————————————————————————————————————————
// [CH] 论坛投入使用后不能修改的变量
$tablepre = ‘cdb_’; // 表名前缀, 同一数据库安装多个论坛请修改此处
// [CH] 小心修改以下变量, 否则可能导致论坛无法正常使用
$database = ‘mysql’; // 论坛数据库类型,请勿修改
$dbcharset = ”; // MySQL 字符集, 可选 ‘gbk’, ‘big5′, ‘utf8′, ‘latin1′, 留空为按照论坛字符集设定
$charset = ‘gbk’; // 论坛页面默认字符集, 可选 ‘gbk’, ‘big5′, ‘utf-8′
$headercharset = 0; // 强制论坛页面使用默认字符集,可避免部分服务器空间页面出现乱码,一般无需开启。 0=关闭 1= 开启
————————————————————————————————————————————————————————————————————————————
4、登录论坛后台,刷新缓存看看乱码是否还有出现,没有则进入下一步
【第六步,联通UCenter与discuz的通信】
1、修改mybbs\config.inc.php文件和mybbs\uc\data\config.inc.php文件,保证其define(‘UC_KEY’,**********)一致
在mybbs\config.inc.php中,uc表的正确配置为define(‘UC_DBTABLEPRE’, ‘`mybbs_php`.uc_’);
2、打开uccenter后台,点击“应用管理”,记住Discuz!应用的ID,此处为2,所以
mybbs\config.inc.php中的define(‘UC_APPID’, ‘2′);必须为2
3、测试通信是否成功,成功继续
4、常见问题,通信不成功都是配置没写好导致的
如果应用的ID不对,则会出现提示“XML解析错误:废弃 document 元素之后的内容 位置:http://youbbs/logging.php?action=login&loginsubmit=yes&floatlogin=yes&inajax=1 行:14,列:17:”的错误,也就是登录后不会刷新