由于服务器托管方的维护,需要对托管在机房的 Linux.cn 服务器进行搬迁,因此,多年不碰 Discuz 的我又要进行一次搬迁。
刚好,记录下来,方便后续查用。
流程图
下方流程图中,绿色为原服务器操作,黄色为新的备份服务器操作
具体流程介绍
1. 导出数据库
想要搬迁,首先要处理的是数据库的导出,你可以选择你的站点流量最小的时候,使用 MySQL dump 命令来完成 SQL 文件的导出,导出的命令也非常简单。
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
进行打包。
tar -zcvf db.sql.tar.gz /tmp/db.sql
打包后,会获得一个 db.sql.tar.gz
文件,这个文件基于导出的 SQL 进行了一定的压缩,可以确保传输的时候,不需要传输那么大的文件。在实际测试时,可以将 1.1G 的数据库压缩到 188M,效果还是十分明显的。
3. 压缩网站文件
需要传递到新的服务器中的,除了 MySQL 数据库,还需要传递网站的代码文件到新的服务器中,因此,为了方便传输,同样需要进行压缩。
tar -zcvf website.tar.gz /data/website/website.com
命令执行完成后,你就会获得一个 website.tar.gz ,这个文件就可以在后续传递到你的新服务器中。
4. 配置新的网站运行环境
在你备份的同时,你可以在新的服务器上进行环境配置。
一般而言,在搬迁的同时,不会采用新的版本的软件,以避免出现问题。
你可以通过 php -v
和 mysql --version
来查看 PHP 和 MySQL 的版本。
Nginx 的版本倒是不需要太过介怀,他只是一个反向代理,问题不大。
MySQL 的版本则在进行迁移的时候,不建议做版本升级,尽量保持同版本升级;如果跨版本,则需要考虑相应的回滚措施。
5. 进行文件传输
在新的服务器中配置旧服务器的公钥,从而可以直接通过 scp,在两个服务器之间传递文件,简单方便。
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
修改其中的数据库名,从而确保系统中的各模块都可以正常工作。
Linux中国的搬迁看起来竟然和小网站搬迁没有区别啊~……
对,因为一些基础设施做的还不错,所以还算省心