Discuz_X3.2_SC_UTF8---论坛迁移

时间:2022-06-10 10:33:55

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, 选择导入:
Discuz_X3.2_SC_UTF8---论坛迁移

导入的结果 :
Discuz_X3.2_SC_UTF8---论坛迁移
进入网址: http://www.your_website.com/admin.php, 看站点是否是关闭的. 如果关闭, 打开即可. 另外, 在站点-工具里面, 更新一下缓存. 这样, 论坛操作的恢复就完全结束了.

2. mysqldump备份的恢复方法:
# mysql discuz < /tmp/discuz_bak.sql
同样在站点-工具里面更新一下缓存.

五. 开启论坛, 正常访问.