5分钟教你学会搭建巫妖王之怒魔兽世界私服
最近闲来无事,和朋友完了一阵魔兽私服;玩了一段时间之后一个想法冒了出来;作为一个程序员,为什么不自己搭建一个魔兽世界的私人服务器呢,于是就进入了漫长的入坑探索;
完成之后,本着技术分享,后人不在踩坑的初衷,也方便后期自己查找;写下此篇经验分享。
Ubuntu 编译 AzerothCore
注:
Ubuntu 版本必须 >= 22.04
旧版本系统会遇到大量软件版本过旧的问题,需要自己手动升级,不建议使用。
安装所需软件
sudo apt-get update && sudo apt-get install git cmake make gcc g++ clang libmysqlclient-dev libssl-dev libbz2-dev libreadline-dev libncurses-dev mysql-server libboost-all-dev
编译
mkdir ~/wow
cd ~/wow
git clone https://gitee.com/payneqiao/azerothcore-wotlk.git
cd azerothcore-wotlk
mkdir build
cd build
cmake ../ -DCMAKE_INSTALL_PREFIX=$HOME/azeroth-server/ -DCMAKE_C_COMPILER=/usr/bin/clang -DCMAKE_CXX_COMPILER=/usr/bin/clang++ -DWITH_WARNINGS=1 -DTOOLS_BUILD=all -DSCRIPTS=static -DMODULES=static
make -j $(nproc --all) # 编译
make install # 安装
服务器设置
- 下载地图文件 data.zip, 链接: https://pan.baidu.com/s/1MD5MHjrwM9nCAUAecJyPLw 提取码:of0t
- 把 data.zip 解压到
~/azeroth-server/data
目录下 - 把
~/azeroth-server/etc/worldserver.conf.dist
复制一份到~/azeroth-server/etc/worldserver.conf
,然后编辑~/azeroth-server/etc/worldserver.conf
,把DataDir = "."
改成DataDir = "/home/你的用户名/azeroth-server/data"
- 把
~/azeroth-server/etc/authserver.conf.dist
复制一份到~/azeroth-server/etc/authserver.conf
初始化数据库
-
执行
sudo mysql
进入数据库的终端 -
执行以下SQL语句,创建acore用户,创建acore_world、acore_characters、acore_auth三个数据库,并授权acore用户拥有这三个数据库的所有权限
DROP USER IF EXISTS 'acore'@'%';
CREATE USER 'acore'@'%' IDENTIFIED BY 'acore' WITH MAX_QUERIES_PER_HOUR 0 MAX_CONNECTIONS_PER_HOUR 0 MAX_UPDATES_PER_HOUR 0;
GRANT ALL PRIVILEGES ON * . * TO 'acore'@'%' WITH GRANT OPTION;
DROP DATABASE IF EXISTS `acore_world`;
CREATE DATABASE `acore_world` DEFAULT CHARACTER SET UTF8MB4 COLLATE utf8mb4_general_ci;
DROP DATABASE IF EXISTS `acore_characters`;
CREATE DATABASE `acore_characters` DEFAULT CHARACTER SET UTF8MB4 COLLATE utf8mb4_general_ci;
DROP DATABASE IF EXISTS `acore_auth`;
CREATE DATABASE `acore_auth` DEFAULT CHARACTER SET UTF8MB4 COLLATE utf8mb4_general_ci;
GRANT ALL PRIVILEGES ON `acore_world` . * TO 'acore'@'%' WITH GRANT OPTION;
GRANT ALL PRIVILEGES ON `acore_characters` . * TO 'acore'@'%' WITH GRANT OPTION;
GRANT ALL PRIVILEGES ON `acore_auth` . * TO 'acore'@'%' WITH GRANT OPTION;
- 允许外网访问MySQL服务器
- 进入
/etc/mysql/mysql.conf.d
目录 - 修改
mysqld.cnf
文件,把bind-address
的值由127.0.0.1
改成0.0.0.0
- 在终端输入
sudo systemctl restart mysql
重启MySQL服务
启动服务器
cd ~/azeroth-server/bin
#启动世界服务,
./worldserver
#启动完成后会出现AC命令输入,输入GM命令创建账号
account create admin admin
account set gmlevel admin 3 -1
#启动登录服务
./authserver
更改数据库
- mysql命令或者Navicat进入数据库
- 修改
acore_auth.realmlist
表里的address
字段,改为服务器的公网IP(如果是虚拟机就填虚拟机的IP)
网络设置
Ubuntu 防火墙打开3724和8085端口 3306数据库端口
sudo ufw allow 3306
sudo ufw allow 3724
sudo ufw allow 8085
客户端配置
- 记事本打开客户端目录Data\zhCN下的 realmlist.wtf
- 修改ip为你的服务器ip SET realmlist 你的服务器ip
关闭服务器
pkill authserver
pkill worldserver
为了方便,可以把上面两条命令写到一个脚本里,比如 ~/azeroth-server/bin/stop.sh
,然后执行 chmod +x ~/azeroth-server/bin/stop.sh
,这样就可以通过 ~/azeroth-server/bin/stop.sh
来关闭服务器了。