AzerothCore-WoTLK魔兽世界服务器搭建:从源码编译到私有服务器一次跑通
【免费下载链接】azerothcore-wotlkComplete Open Source and Modular solution for MMO项目地址: https://gitcode.com/GitHub_Trending/az/azerothcore-wotlk
AzerothCore-WoTLK 是一套完整、开源、模块化的魔兽世界(巫妖王之怒版本)MMO 服务器方案,运行它需要一条清晰链路:系统依赖、源码编译、MySQL 数据库初始化、客户端数据,最后启动 authserver 与 worldserver 两个服务进程。读完本指南,你能在自己的 Linux 机器上完成一次可落地的私服部署,并掌握后台运行与模块扩展的完整操作。
前置条件:一台干净的机器
开始前确认以下几点即可,其他都由脚本替你处理:
- 操作系统:Linux(Debian/Ubuntu 支持最完善),macOS 或 Windows(MSYS2 环境)亦可
- 已安装 Git,且网络可正常下载依赖包
- 磁盘剩余空间 ≥ 20GB(源码、编译产物、客户端数据都放在本地)
- 本机已能运行一个 MySQL 服务,且你能拿到 root 密码
最短路径:用 install.sh 仪表盘 5 分钟跑通
拿到源码后,有基础的用户可以直接走一键流程(以下命令均在项目根目录下执行):
git clone https://gitcode.com/GitHub_Trending/az/azerothcore-wotlk.git cd azerothcore-wotlk chmod +x install.sh ./install.sh🚀 你会看到 ACORE DASHBOARD 仪表盘菜单,之后输入init回车,install.sh 会按顺序完成四件事:安装系统依赖 → 配置并编译源码 → 初始化数据库 → 下载客户端数据,也就是把仪表盘里其他菜单项全部串起来一次执行完。
预期现象:终端滚动输出各阶段日志,最终停在Data ... already installed或客户端数据下载完成的提示,bin/目录生成authserver、worldserver两个可执行文件。
排查提示:中途报错时不要反复重跑init,看它停在哪一阶段,然后按下面各功能域的章节单独执行对应命令,定位更清楚。
系统依赖:install.sh 一键安装
依赖安装独立执行时(项目根目录下):
./install.sh install-deps该命令实际调用 apps/installer/includes/functions.sh 中的inst_configureOS:先探测OSTYPE判断平台,Linux 上再用lsb_release识别发行版,然后按发行版加载对应的os_configs/*.sh,用系统包管理器装上 cmake、编译工具链、MySQL 客户端等。
预期现象:开头打印Platform:与Distro:两行,随后是一串包管理器安装日志,结束时终端回到 shell 提示符、无报错。
排查提示:如果你的发行版不在支持列表,终端会明确打印 "is not supported",此时设置环境变量OSDISTRO=ubuntu或OSDISTRO=debian后重试。
编译构建:用 compiler 工具完成 CMake 配置
依赖就绪后进入编译(项目根目录下):
./install.sh compiler会进入 apps/compiler/compiler.sh 的二级菜单,选项含义:
| 命令 | 作用 |
|---|---|
build | 先 CMake 配置再编译,最常用 |
all | 清理 → 配置 → 编译,怀疑编译状态脏了时用它 |
configure | 只执行 CMake 配置 |
clean | 清理构建产物 |
选build(或直接在根目录./install.sh compiler build)后开始正式编译。
预期现象:先是 CMake 打印检测到的编译器、平台、依赖库信息,然后是逐文件的编译输出,全部通过后bin/下出现authserver和worldserver。
排查提示:CMake 阶段的报错基本都指向缺失的依赖,回到上一节重跑install-deps;编译中途大量语法错误则用all从零来一遍,避免增量构建残留。
数据准备:MySQL 数据库初始化 + 客户端数据
服务器启动前缺一样都起不来:数据库存角色、世界、账号数据,客户端数据提供地图等静态资源。
初始化 MySQL 数据库
./install.sh setup-db脚本以 root 身份执行 data/sql/create/create_mysql.sql:创建专用账号acore@localhost,建acore_world、acore_characters、acore_auth三个 UTF8MB4 库并授权,随后导入各库的基础数据与增量更新脚本。
预期现象:中途提示Please enter your sudo and your MySQL root password,输完后打印Database created successfully.。
排查提示:连接失败几乎都是 root 密码或 sudo 密码问题;如果密码已设为环境变量MYSQL_ROOT_PASSWORD,脚本会优先用它免交互连接,可在conf/config.sh中确认。
下载客户端数据
./install.sh client-data从官方数据仓库拉取客户端数据包并解压到bin/目录(可用环境变量DATAPATH改到别处),同时写入data-version记录版本。
预期现象:打印Downloading client data in: ...与下载进度,完成后提示数据版本已安装;重复执行时若版本未变会直接跳过。
排查提示:想强制重新下载,删掉bin/data-version文件再跑一次即可。
双服务启动:authserver + worldserver
服务器由两个进程构成:authserver 负责登录校验,worldserver 承载全部游戏逻辑,先认证、后世界,各占一个终端(项目根目录下):
./install.sh run-authserver./install.sh run-worldserver两条命令都会调用 apps/startup-scripts/src/simple-restarter 包裹启动:进程退出后自动 3 秒重启,并且内置崩溃环检测——连续 6 次 10 秒内即挂时会主动停止并提示你检查日志,而不是无限拉起。
预期现象:authserver 终端先出现监听端口的就绪日志;随后 worldserver 终端滚动加载地图、DB 连接的日志,看到"服务器已启动/可接受连接"类字样即表示就绪。
排查提示:worldserver 起不来 90% 是数据库连不上或客户端数据缺失,按启动日志的第一条 ERROR 定位,再看上一节对应的初始化命令是否真正跑完。
上线之后:服务管理器后台运行与模块扩展
后台常驻
演示阶段用两个终端挂着即可;正式挂机改用服务管理器(项目根目录下):
./install.sh service-manager它调用 apps/startup-scripts/src/service-manager.sh,把 authserver 与 worldserver 以后台服务方式拉起并提供启动/停止/状态查看操作,进程不依赖你的终端会话存活。
预期现象:执行 start 后提示服务已运行,终端可自由关闭;用 status 能看到两个服务的 PID 与运行状态。
模块扩展
AzerothCore 的功能扩展走模块系统(项目根目录下):
./install.sh module进入 module-main.sh 的模块管理器,支持搜索(search)、安装(install)、更新(update)、移除(remove)四类操作,安装新模块后需要回到编译一节重新build一次使其生效。
预期现象:search 返回可用模块列表;install 完成后modules/目录出现对应模块源码,./install.sh compiler build后日志中能看到模块加载记录。
部署自查清单
上线前逐项过一遍,比出问题后再翻日志快得多:
- ✅
install-deps完整跑完,终端无未装依赖的警告 - ✅
bin/下存在authserver、worldserver且时间戳是最近一次编译 - ✅ 三个库
acore_auth、acore_characters、acore_world在 MySQL 中均可见,acore账号可登录 - ✅
bin/内有客户端数据文件且data-version版本与预期一致 - ✅ 启动顺序为 authserver 在前、worldserver 在后,日志中无 ERROR 级输出
- ✅ 用 WoW 客户端实际登录成功,角色能进图、能移动
高频卡点只有一条:worldserver 反复秒退。优先检查数据库连接串与acore账号密码,其次确认客户端数据目录位置与DATAPATH设置一致,这两项解决后绝大多数部署问题就消失了。
【免费下载链接】azerothcore-wotlkComplete Open Source and Modular solution for MMO项目地址: https://gitcode.com/GitHub_Trending/az/azerothcore-wotlk
创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考