5分钟跑通 AzerothCore-WoTLK:容器化部署你的第一个可登录世界服务器指南
【免费下载链接】azerothcore-wotlkComplete Open Source and Modular solution for MMO项目地址: https://gitcode.com/GitHub_Trending/az/azerothcore-wotlk
想自己拥有一套能登录、能进游戏的魔兽世界私服,但又被编译、依赖、数据库搞得头大?用 AzerothCore-WoTLK 的 Docker Compose 方案,你不用关心 CMake 和依赖地狱——一条命令把数据库、认证、世界服务器全部拉起来,几分钟就能在客户端里用管理员账号登上自己运营的世界。这篇指南只讲你最关心的三件事:怎么快速跑起来、跑起来后怎么验证、出了问题怎么救。
一、先说结果:跑通之后你能拿到什么
别急着看步骤,先搞清楚终点长什么样。当你把这套服务跑起来,你手里会有这么几样东西:
- 一个独立的数据库容器,里面躺着
acore_auth、acore_world、acore_characters三个库,账号、角色、物品全在里面。 - 一个认证服务器,玩家登录时先过它这一关。
- 一个世界服务器,游戏里的打怪、组队、掉落都在它脑子里跑。
- 一个管理员控制台入口,你可以直接敲命令建号、管理世界。
换句话说,从“空仓库”到“客户端能登录、能选角色进图”,中间只隔着一连串自动化命令。你不需要会写 C++,也不需要会调 MySQL,只要会复制粘贴。下面这条主线,就是把你从第 0 步带到“能登录”的完整路径。
二、一条主线:从拉代码到能登录的最小闭环
小贴士:仓库里已经备好了 Docker 部署文档 和 docker-compose 配置,遇到细节可以随时翻。
整个过程可以压成四步:克隆 → 构建 → 启动 → 建号。下面按顺序走一遍,命令直接贴给你。
第 1 步:拿到代码。前提是你机器上装了 Docker 和 Docker Compose v2(Docker Desktop 里是自带 buildx 的,开箱即用)。
# 克隆仓库并进入目录 git clone https://gitcode.com/GitHub_Trending/az/azerothcore-wotlk cd azerothcore-wotlk第 2 步:构建镜像。这一步会下载依赖并在容器里完整编译一遍源码,首次会花 30 到 60 分钟,耐心等;后面再构建会快很多。
# 首次构建较慢,属于正常现象 docker compose build第 3 步:拉起服务。数据库要等导入完成,所以第一次up也会卡一会儿,看到ac-worldserver变成 running 就说明世界起来了。
# 后台启动全部服务 docker compose up -d第 4 步:创建管理员账号。前 3 步跑完,服务器已经活着,但你还没有能登录的账号。attach 进世界服务器的控制台,把账号建出来:
# 接入世界服务器控制台(首次安装必须做这步) docker compose attach ac-worldserver控制台里会出现AC>提示符,接着敲:
# 创建管理员:admin / password,等级 3,-1 表示不限制扩张包 AC> account create admin password 3 -1搞定。现在打开你的魔兽客户端,填上地址和端口,用admin / password登录,就能进游戏了。
注意:离开控制台别直接关窗口,先按
Ctrl+P再按Ctrl+Q干净退出,否则可能把服务一起带崩。
三、三个服务各管一摊:谁是仓库、谁是保安、谁是运营
跑起来之前,先花 30 秒搞清楚这三个容器各干啥的,后面排错全靠这个直觉。
ac-database:数据仓库。它就是个 MySQL 8.4,游戏里所有“存得下来”的东西——账号、角色、背包、公会——都沉在这里。它对玩家是隐形的,但对你是命根子:数据丢了,号就没了。默认对外暴露 3306 端口,数据放在ac-database这个卷里,所以删容器也不掉数据。
ac-authserver:大门保安。玩家每次登录,先走到它门口交账号密码。它负责“你是谁、密码对不对、能不能进”,管的是身份核验这一层。默认对外 3724 端口。
ac-worldserver:世界运营。进了大门之后,你在世界里干的一切——打怪掉宝、组队、传送——都由它来调度执行,也是玩家真正“玩”的地方。默认对外 8085 端口,另外还带一个 7878 的 SOAP 管理端口。
简单记:仓库管存档,保安管进门,运营管玩法。端口冲突或服务挂了的时候,你只要先想“现在卡在哪一摊”,方向就不会错。
四、上线前必须做的三件事
跑通只是开始。把它当一台正经服务器交付出去之前,下面这张清单建议过一遍,能省掉后面一大半救火。
1. 备份与恢复:给数据仓库上保险。数据库是唯一的命根子,养成随手备份的习惯。
# 备份世界库到本地文件 docker compose exec ac-database mysqldump -u root -ppassword acore_world > backup.sql# 需要时恢复:把备份灌回数据库 cat backup.sql | docker compose exec -T ac-database mysql -u root -ppassword acore_world2. 状态监控:知道它是不是还活着。平时看容器状态、跟日志两招就够。
# 看一眼所有服务现在什么状态 docker compose ps# 实时跟世界服务器的日志 docker compose logs -f ac-worldserver3. 性能与资源:别让它饿着。世界服务器吃内存,建议至少给它 4GB;数据库可以调大 InnoDB 缓冲池(在 docker-compose 配置 或 override 文件里加MYSQL_INNODB_BUFFER_POOL_SIZE);日志目录会一直长,记得定期清,免得把磁盘写满。
改配置的正确姿势:别动
docker-compose.yml本身,在它旁边建一个docker-compose.override.yml放你的自定义项,仓库里 conf/dist/docker-compose.override.yml 就是给你参考的模板。
五、卡住了看这里
Q:端口冲突处理——起不来,提示端口被占用?症状:up之后某个服务起不了,日志里报端口已占用。原因:3306 / 3724 / 8085 这些默认端口被你机器上别的服务占了。解法:用环境变量把对外端口换掉,不用改文件。
# 换个数据库、认证、世界端口再启动 DOCKER_DB_EXTERNAL_PORT=3307 DOCKER_AUTH_EXTERNAL_PORT=3725 DOCKER_WORLD_EXTERNAL_PORT=8086 docker compose up -dQ:服务起不来 / 反复重启,怎么定位?症状:docker compose ps里有容器是 restarting 或 exited。原因:多半是数据库没就绪、导入没跑完,或者配置目录写不进去。解法:先捞错误日志看根因。
# 从世界服务器日志里筛出报错 docker compose logs ac-worldserver | grep -i error再看一眼卷有没有正确挂载:docker volume inspect ac-database。如果是“配置目录不可写”的警告(常见于用 root 克隆了仓库),按 entrypoint 脚本 的提示改属主,或临时用DOCKER_USER=root启动(不推荐,仅作排查)。
Q:资源不足 / 卡得很慢?症状:登录成功但世界里卡顿、掉帧。原因:内存或 CPU 分给容器的额度不够。解法:确认 Docker 引擎分配给虚拟机的资源足够,给世界服务器留足内存;构建时它已经是多线程编译了,运行期瓶颈基本都在内存。
写在最后
到这里,你已经用容器化部署把 AzerothCore-WoTLK 的世界服务器从零拉到了可登录、可管理。因为整套环境都封装在镜像和 Compose 里,同一套命令在开发机和正式机上表现一致;想边改代码边跑,用--profile dev起开发版即可,开发与生产一键切换。把这次跑通当成起点,后面加模块、调参数、扩服,都是在这套骨架上做加法。
【免费下载链接】azerothcore-wotlkComplete Open Source and Modular solution for MMO项目地址: https://gitcode.com/GitHub_Trending/az/azerothcore-wotlk
创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考