Discuz论坛目前已经非常成熟, 可以实现绝大多数的用户需求. 自定义的模板, 可以让论坛有自己独特的风格, 不过多数是付费的.
运营过程中, 因为各种原因, 或者备份需求, Discuz可能会有迁移的需求. 下面介绍一下Discuz X3.2的迁移方法. 已在虚拟机测试, 过程可行.
搭建环境 :
1. Nginx version: nginx/1.8.0
2. MySQL version: 5.6.17
3. Discuz_X3.2_SC_UTF8
4. Linux: 3.10.0-123.9.3.el7.x86_64
5. PHP: Version 5.6.9
遇到的问题 :
MySQL在编译的时候, 指定了mysql.sock的路径为/var/lib/mysql/mysql.sock, 而discuz默认的socket路径是/tmp/mysql.sock; 这导致用/var/lib/mysql/mysql.sock的配置, discuz无法登陆mysql; 而换成/tmp/mysql.sock以后, mysqld服务无法正常启动, 报错:
ERROR 2002 (HY000): Can't connect to local MySQL server through socket '/var/lib/mysql/mysql.sock' (2)
解决方案 :
# ln -s /tmp/mysql.sock /var/lib/mysql/mysql.sock //或者
# ln -s /var/lib/mysql/mysql.sock /tmp/mysql.sock
总之, 将mysql的socket路径, 软链接到/tmp/mysql.sock, 或者将mysql的路径改到/tmp/mysql.sock, 然后软链接到/var/lib/mysql/mysql.sock, 这样mysql也能正常登陆了.
论坛迁移 :
一. 关闭站点, 对数据库和discuz根目录进行备份:
- 将论坛关闭: 管理中心-全局-关闭站点”是”-提交
- 数据库备份的方法: (先关闭论坛, 防止数据不一致.)
1. mysqldump的方法 : 在服务器对discuz的数据库进行备份.
# mysqldump md_discuz > /tmp/discuz_bak.sql
2. 论坛的备份工具 : 管理中心-站长-数据库-备份-Discuz! 和 UCenter 数据-提交. 生成的文件为:
./data/backup_277b21/160727_SxheyIEx-1.sql
./data/backup_277b21/160727_SxheyIEx-2.sql
./data/backup_277b21/160727_SxheyIEx-3.sql
这样, 会在discuz的安装目录的data目录下面的backup_277b21目录(可能会不同, 格式相同). 压缩这个目录, 下载到windows下面备用.
- discuz网站目录备份: 打包成tar.gz等压缩文件:
# tar -cf discuz_bak.tar.gz /data/discuz
二. Nginx虚拟机的配置 :
实例参数如下: # vim /usr/local/nginx/conf/vhosts/discuz.conf
server
{
listen 80;
server_name discuz.com;
index index.html index.htm index.php;
root /data/discuz;
location ~ \.php$ {
include fastcgi_params;
fastcgi_pass unix:/tmp/www.sock;
fastcgi_index index.php;
fastcgi_param SCRIPT_FILENAME /data/discuz$fastcgi_script_name;
}
三. 上传discuz_bak.tar.gz, 解压到预定的目录, 修改php文件 :
预备好所有的新目录环境, 恢复discuz_bak.tar.gz到新的/data/discuz下. 修改部分三个php文件:
1. # vim /data/discuz/config/config_global.php
// ---------------------------- CONFIG DB ----------------------------- //
$_config['db']['1']['dbhost'] = 'localhost'; //指定相应的MySQL地址, 可以是ip
$_config['db']['1']['dbuser'] = 'discuz'; //指定新的授权给discuz的MySQL用户名
$_config['db']['1']['dbpw'] = 'helloworld'; //MySQL用户密码
$_config['db']['1']['dbcharset'] = 'utf8';
$_config['db']['1']['pconnect'] = '0';
$_config['db']['1']['dbname'] = 'md_discuz'; //指定新的discuz数据库名称
$_config['db']['1']['tablepre'] = 'pre_'; //前缀要和以前一致, 要修改可以恢复后重命名再修改这个参数
$_config['db']['slave'] = '';
$_config['db']['common']['slave_except_table'] = '';
2. # vim /data/discuz/config/config_ucenter.php
define('UC_CONNECT', 'mysql');
define('UC_DBHOST', 'localhost'); //指定相应的MySQL地址, 可以是ip
define('UC_DBUSER', 'discuz'); //指定新的授权给discuz的MySQL用户名
define('UC_DBPW', 'helloworld'); //MySQL用户密码
define('UC_DBNAME', 'md_discuz'); //指定新的discuz数据库名称
define('UC_DBCHARSET', 'utf8');
define('UC_DBTABLEPRE', '`md_discuz`.pre_ucenter_');
define('UC_DBCONNECT', 0);
define('UC_CHARSET', 'utf-8');
define('UC_KEY', 'mb44K8J9z3j8R6PcRai5h46eK933ceI7y3M5Ze4bzd1eS9VaN2ffl66bSdH6za3a');
define('UC_API', 'http://bbs.hellou.com/uc_server'); //地址修改或者不修改
3. # vim /data/discuz/uc_server/data/config.inc.php
define('UC_DBHOST', 'localhost'); //指定相应的MySQL地址, 可以是ip
define('UC_DBUSER', 'discuz'); //指定新的授权给discuz的MySQL用户名
define('UC_DBPW', 'helloworld'); //MySQL用户密码
define('UC_DBNAME', 'md_discuz'); //指定新的discuz数据库名称
define('UC_DBCHARSET', 'utf8');
define('UC_DBTABLEPRE', 'pre_ucenter_');
四. 恢复MySQL数据库的discuz备份数据 :
1. 论坛备份的恢复方法:
上传论坛备份的backup_277b21的压缩文档, 解压到$discuz/data/目录.
Discuz的全新安装包里面, utility目录下面有一个restore.php, 将它复制到discuz论坛目录的data下面.
访问网址: http://www.your_website.com/data/restore.php, 选择导入:
导入的结果 :
进入网址: http://www.your_website.com/admin.php, 看站点是否是关闭的. 如果关闭, 打开即可. 另外, 在站点-工具里面, 更新一下缓存. 这样, 论坛操作的恢复就完全结束了.
2. mysqldump备份的恢复方法:
# mysql discuz < /tmp/discuz_bak.sql
同样在站点-工具里面更新一下缓存.
五. 开启论坛, 正常访问.