服务器更新 Keep Server Up to Date¶
为什么要更新¶
AC 的开源社区会不断地修复 Bug, 提供更准确的数据, 你的服务器编译好之后, 需要有不断接受社区更新的能力. 除非你能自己开发, 不然你的服务器就永远是这个样子了. 就算你自己能开发, 你的能力和社区广大开发者加在一起的能力还是不能比得.
服务器更新原理¶
服务器核心本身就是一个从源码编译过来的可执行文件, 通常是二进制格式. 你是无法直接对二进制格式内部进行修改的. 唯一的办法是编译一个新的, 然后替换掉原来的核心. 比如你原来的服务器核心在 ${HOME}/azeroth-server
目录, 你就可以再在 ${HOME}/azeroth-server-new
上编译一个新的, 然后把配置文件考过去, 然后关闭服务器, 将新文件夹替换原文件夹, 然后重启服务器即可.
服务器更新的命令就只有以下几条:
# CD 到 azerothcore 仓库目录
cd ~/azerothcore/
# 拉取最新的代码
git pull origin master
# 进入到 build 目录
cd build
# 重新构建服务器, 你可以把 8 替换成你的服务器的 CPU 核心数量
make -j 8; make install
参考资料:
Keeping the Server Up-to-Date: https://www.azerothcore.org/wiki/keeping-the-server-up-to-date
服务器更新具体操作¶
以上的方法只是阐述原理, 还是在原先的 $HOME/azeroth-server 目录编译, 会覆盖已有的服务器核心, 肯定是不合适的. 下面我们来介绍正确的做法.
个人电脑单机的架构
关闭已经正在运行的服务器核心
将服务器核心文件夹改个名字做一个备份
执行服务器更新命令, 重新构建一个新的, 并且把配置文件复制过去
用新的服务器进行测试, 没问题以后就可以正式上线了
单台云服务器架构
和个人电脑单机架构一样, 仅仅是 SSH 到服务器上操作而已.
游戏服务器 和 游戏数据库 分离的的架构
在这种架构下你就可以做到游戏停机时间很短 (小于 1 分钟).
先在另一台 EC2 上重新构建服务器.
使用数据库的 Snapshot 恢复一台数据库.
用新的服务器 + 数据库做测试
测试成功后把新构建的服务器压缩打包上传到 S3.
在旧的服务器从 S3 上下载编译好的新服务器并解压.
停止旧服务器, 替换服务器核心, 重新启动即可.