# 对 Discuz 进行手动搬迁

- Link: https://www.ixiqin.com/2021/01/01/to-manually-move-discuz/
- Published: 2021-01-01T22:13:49+08:00
- Author: 白宦成

文章目录

 [Toggle](https://www.ixiqin.com/2021/01/01/to-manually-move-discuz/#)

 * [流程图](https://www.ixiqin.com/2021/01/01/to-manually-move-discuz/#%e6%b5%81%e7%a8%8b%e5%9b%be)
 * [具体流程介绍](https://www.ixiqin.com/2021/01/01/to-manually-move-discuz/#%e5%85%b7%e4%bd%93%e6%b5%81%e7%a8%8b%e4%bb%8b%e7%bb%8d)
    - [1. 导出数据库](https://www.ixiqin.com/2021/01/01/to-manually-move-discuz/#1_%e5%af%bc%e5%87%ba%e6%95%b0%e6%8d%ae%e5%ba%93)
    - [2. 压缩数据库文件](https://www.ixiqin.com/2021/01/01/to-manually-move-discuz/#2_%e5%8e%8b%e7%bc%a9%e6%95%b0%e6%8d%ae%e5%ba%93%e6%96%87%e4%bb%b6)
    - [3. 压缩网站文件](https://www.ixiqin.com/2021/01/01/to-manually-move-discuz/#3_%e5%8e%8b%e7%bc%a9%e7%bd%91%e7%ab%99%e6%96%87%e4%bb%b6)
    - [4. 配置新的网站运行环境](https://www.ixiqin.com/2021/01/01/to-manually-move-discuz/#4_%e9%85%8d%e7%bd%ae%e6%96%b0%e7%9a%84%e7%bd%91%e7%ab%99%e8%bf%90%e8%a1%8c%e7%8e%af%e5%a2%83)
    - [5. 进行文件传输](https://www.ixiqin.com/2021/01/01/to-manually-move-discuz/#5_%e8%bf%9b%e8%a1%8c%e6%96%87%e4%bb%b6%e4%bc%a0%e8%be%93)
    - [6. 进行文件恢复](https://www.ixiqin.com/2021/01/01/to-manually-move-discuz/#6_%e8%bf%9b%e8%a1%8c%e6%96%87%e4%bb%b6%e6%81%a2%e5%a4%8d)
    - [7. 配置应用服务器](https://www.ixiqin.com/2021/01/01/to-manually-move-discuz/#7_%e9%85%8d%e7%bd%ae%e5%ba%94%e7%94%a8%e6%9c%8d%e5%8a%a1%e5%99%a8)
    - [8. 导入数据库和站点文件](https://www.ixiqin.com/2021/01/01/to-manually-move-discuz/#8_%e5%af%bc%e5%85%a5%e6%95%b0%e6%8d%ae%e5%ba%93%e5%92%8c%e7%ab%99%e7%82%b9%e6%96%87%e4%bb%b6)
    - [9. 修复权限](https://www.ixiqin.com/2021/01/01/to-manually-move-discuz/#9_%e4%bf%ae%e5%a4%8d%e6%9d%83%e9%99%90)
    - [10. 修改配置](https://www.ixiqin.com/2021/01/01/to-manually-move-discuz/#10_%e4%bf%ae%e6%94%b9%e9%85%8d%e7%bd%ae)

由于服务器托管方的维护，需要对托管在机房的 Linux.cn 服务器进行搬迁，因此，多年不
碰 Discuz 的我又要进行一次搬迁。

刚好，记录下来，方便后续查用。

## 流程图

下方流程图中，绿色为原服务器操作，黄色为新的备份服务器操作

![]( https://postimg.aliavv.com/mbp/d9uas.png)

## 具体流程介绍

### 1. 导出数据库

想要搬迁，首先要处理的是数据库的导出，你可以选择你的站点流量最小的时候，使用 MySQL
dump 命令来完成 SQL 文件的导出，导出的命令也非常简单。

    ```javascript
    mysqldump -uroot -p database >/tmp/db.sql
    Code language: JavaScript (javascript)
    ```

你可以将上方的 `root` 调整为合适的用户名；将 `database` 调整为合适的数据库名，以及
将 /`tmp/db/sql` 调整为合适的文件名

执行命令后，会要求你输入 MySQL 对应用户的密码，输入密码， 稍等片刻，数据库就完成
导出，你就可以在 `/tmp/db.sql` 找到数据库文件。

### 2. 压缩数据库文件

在进行数据库文件后续的传输时，如果文件太大，可能会导致传输速度较慢，这个时候你可以
选择使用 gzip、zip、7zip 之类的进行传递。

我一般习惯用 `gzip` 进行压缩，并使用 `tar` 进行打包。

    ```shcb-line-numbers
    tar -zcvf db.sql.tar.gz /tmp/db.sql
    ```

打包后，会获得一个 `db.sql.tar.gz` 文件，这个文件基于导出的 SQL 进行了一定的压缩，
可以确保传输的时候，不需要传输那么大的文件。在实际测试时，可以将 1.1G 的数据库压缩
到 188M，效果还是十分明显的。

### 3. 压缩网站文件

需要传递到新的服务器中的，除了 MySQL 数据库，还需要传递网站的代码文件到新的服务器
中，因此，为了方便传输，同样需要进行压缩。

    ```shcb-line-numbers
    tar -zcvf website.tar.gz /data/website/website.com
    ```

命令执行完成后，你就会获得一个 website.tar.gz ，这个文件就可以在后续传递到你的新
服务器中。

### 4. 配置新的网站运行环境

在你备份的同时，你可以在新的服务器上进行环境配置。

一般而言，在搬迁的同时，不会采用新的版本的软件，以避免出现问题。

你可以通过 `php -v` 和 `mysql --version` 来查看 PHP 和 MySQL 的版本。

Nginx 的版本倒是不需要太过介怀，他只是一个反向代理，问题不大。

MySQL 的版本则在进行迁移的时候，不建议做版本升级，尽量保持同版本升级；如果跨版本，
则需要考虑相应的回滚措施。

### 5. 进行文件传输

在新的服务器中配置旧服务器的公钥，从而可以直接通过 scp，在两个服务器之间传递文件，
简单方便。

    ```javascript
    scp source root@host:/data/xxx 
    Code language: JavaScript (javascript)
    ```

执行上面的命令就可以直接在两个服务器之间传输文件，简单方便快捷。

### 6. 进行文件恢复

完成文件搬迁后，就可以在新的服务器上配置环境，这时可以根据你的配置，将文件迁移至
对应的目录中。

涉及到压缩包，可以进行一下解压操作。

### 7. 配置应用服务器

在我们的系统运行时，会依赖很多应用服务器，比如数据库 MySQL 、反向代理 Nginx 等等。
在迁移时，比较稳妥的方案是在当前版本的基础之上进行配置。

这时你需要在新的服务器上配置和旧服务器完全一致的运行环境，从而确保迁移后业务不会
出问题。

### 8. 导入数据库和站点文件

在完成了数据文件的迁移和，就可以进行数据库的导入，并迁移网站文件。

你可以使用 `mysql` 命令行中的 `source` 命令，来加载 mysql 的dump 文件。

对于网站文件，只需要根据你的配置进行调整即可。

### 9. 修复权限

在文件进行迁移的时候，可能会由于迁移前后的用户等问题出现权限问题。因此，如果你发现
出现了项目的权限有问题，则需要根据实际情况，调整项目的文件和目录的权限。

### 10. 修改配置

Discuz 的配置文件会在多个地方重复使用，因此，在实际的使用时，如果你调整了数据库信息，
则需要修改以下几个文件中的配置项目。

 * `config/config_global.php`
 * `config/config_ucenter.php`
 * `uc_server/data/config.inc.php`

修改其中的数据库名，从而确保系统中的各模块都可以正常工作。
