.. _keep-server-up-to-date: 服务器更新 Keep Server Up to Date ============================================================================== 为什么要更新 ------------------------------------------------------------------------------ AC 的开源社区会不断地修复 Bug, 提供更准确的数据, 你的服务器编译好之后, 需要有不断接受社区更新的能力. 除非你能自己开发, 不然你的服务器就永远是这个样子了. 就算你自己能开发, 你的能力和社区广大开发者加在一起的能力还是不能比得. 服务器更新原理 ------------------------------------------------------------------------------ 服务器核心本身就是一个从源码编译过来的可执行文件, 通常是二进制格式. 你是无法直接对二进制格式内部进行修改的. 唯一的办法是编译一个新的, 然后替换掉原来的核心. 比如你原来的服务器核心在 ``${HOME}/azeroth-server`` 目录, 你就可以再在 ``${HOME}/azeroth-server-new`` 上编译一个新的, 然后把配置文件考过去, 然后关闭服务器, 将新文件夹替换原文件夹, 然后重启服务器即可. 服务器更新的命令就只有以下几条: .. code-block:: bash # 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 目录编译, 会覆盖已有的服务器核心, **肯定是不合适的**. 下面我们来介绍正确的做法. **个人电脑单机的架构** 1. 关闭已经正在运行的服务器核心 2. 将服务器核心文件夹改个名字做一个备份 3. 执行服务器更新命令, 重新构建一个新的, 并且把配置文件复制过去 4. 用新的服务器进行测试, 没问题以后就可以正式上线了 **单台云服务器架构** 和个人电脑单机架构一样, 仅仅是 SSH 到服务器上操作而已. **游戏服务器 和 游戏数据库 分离的的架构** 在这种架构下你就可以做到游戏停机时间很短 (小于 1 分钟). 1. 先在另一台 EC2 上重新构建服务器. 2. 使用数据库的 Snapshot 恢复一台数据库. 3. 用新的服务器 + 数据库做测试 4. 测试成功后把新构建的服务器压缩打包上传到 S3. 5. 在旧的服务器从 S3 上下载编译好的新服务器并解压. 6. 停止旧服务器, 替换服务器核心, 重新启动即可.