准备环境:Ubuntu20.04 LTS
配置: 4C8G 50G+100G

应AzerothCore 不支持 OpenSSL 3.x 的要求,Linux 发行版Ubuntu22.04暂时排除在外否则就要编译低版本的OpenSSL!

安装准备

安装方式:从源安装(支持,推荐)
该方法用于任何目的和支持所有操作系统。安装过程可让你更多地了解 AzerothCore 的结构

环境要求
MySQL ≥ 5.7.0
Boost ≥ 1.74
OpenSSL ≥ 1.0.x
CMake ≥ 3.16
Clang ≥ 10

编译环境准备

安装为编译时需要的必要组件,注意组件分2大类 主要是数据库类型,二选一



带MySQL 8.x

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

⚠️虽Mysql8.0 是官方推荐安装方式,但讽刺的是:Mysql8.0在Ubuntu20.04下表现出各种不稳定,仅在环境准备阶段就无法完成,如:迁移或切换DataDir数据目录,博主在这个问题上话费了大量的时间和精力,仍然在报错中。

问题主要来自apparmor的大量配置影响,当然mysql的/usr/share/mysql/mysql-systemd-start启动脚本 功不可没,强制检查/var/lib/mysql目录是否存在,权限是否正确等...

参考的文档包括但不限于一下:

为此不得不寻求 MariaDB的方案。 不过如果对于迁移 或 系统分区空间足够大的情况 使用Mysql后续可能会是一个不错的选择...

未来的扩容迁移或其他个性化设置可能就比较吃力...

如果扯上企业行为甲骨文近年对社区的糟蹋和对中国区的制裁,觉得Mysql使用下来未必会好...

这些都是猜测,实践出真理。我们决赛圈见...





带MariaDB的版本

注意目前仅支持 10.6 和 10.5 俩个版本,所以在输入命令前需要先添加对应版本的存储库 访问官方指南

可直接使用下命令添加(和官方一致)

sudo apt-get install apt-transport-https curl \
&& sudo curl -o /etc/apt/trusted.gpg.d/mariadb_release_signing_key.asc 'https://mariadb.org/mariadb_release_signing_key.asc'\
&&sudo sh -c "echo 'deb https://mirrors.aliyun.com/mariadb/repo/10.6/ubuntu focal main' >>/etc/apt/sources.list"

添加后 查询版本是否达到要求

apt update && apt list mariadb-server

编译环境安装命令

sudo apt update && sudo apt full-upgrade -y \
&& sudo apt install git cmake make gcc g++ clang libssl-dev libbz2-dev libreadline-dev libncurses-dev libboost-all-dev mariadb-server mariadb-client libmariadb-dev libmariadb-dev-compat



MariaDB版本 优化·1

上步完成后 首选准备MariaDB的远程连接用户,用于远程管理 拥有root权限;但为了安全 这里不使用root。

mysql

登录到mysql中

use mysql;

切换到系统表,随后创建用户 moon 和密码 并且授权所有IP连接

CREATE USER 'moon'@'%' IDENTIFIED BY 'FCCMivvPqDCJggN6Vqk8k85DaVhwWrFg';

添加管理员权限(等同root)

GRANT ALL PRIVILEGES ON *.* TO 'moon'@'%';

用户添加成功后 退出mysql返回bash

quit;

开放mysql数据库远程连接

nano /etc/mysql/mariadb.conf.d/50-server.cnf

找到bind-address = 127.0.0.1修改为

bind-address            = 0.0.0.0

重启mysql

systemctl restart mysql

随后使用管理软件测试是否连接上了



MariaDB版本 优化·2

迁移 数据库 数据目录
此步骤是有为专用数据盘的用户准备的,如果你的磁盘就1个默认的 那就无需操作这个步骤且还能去选择mysql版本

默认Mysql数据存储位置/var/lib/mysql/

此步需求迁移目标位置/Azeroth/mysql

MariaDB的迁移非常简单粗暴
停止服务

systemctl stop mysql

cp复制 -a是保持连接和权限 -r递归目录

cp -ar /var/lib/mysql /Azeroth/

一般这个命令复制就会保持原有目录权限和用户过去,如果不放心可以在此授权

chown -R mysql:mysql /Azeroth/mysql

编辑mysql 服务器配置

nano /etc/mysql/mariadb.conf.d/50-server.cnf

找到

...
#datadir                 = /var/lib/mysql
...

改为(记得去除注释 #)

...
datadir                 = /Azeroth/mysql
...

直接启动服务

systemctl restart mysql

为确保新数据目录确实在使用中,请启动 MySQL 监视器:

mysql

登录到mysql中

SELECT @@datadir;

输出

MariaDB [(none)]> SELECT @@datadir;
+-----------------+
| @@datadir       |
+-----------------+
| /Azeroth/mysql/ |
+-----------------+
1 row in set (0.000 sec)

退出 mysql

quit;

现在您已经验证了任何现有数据的完整性, 您可以选择删除原来的数据目录了:

rm -rf /var/lib/mysql

也可以选择不删除,因为是新库,不会有多少占用空间

到这里 全部准备环境均完成了。准备下一步编译

git准备

编译所需的代码 均在github中,国内对github访问有魔法,所以这里需要为git做一些准备

git初次设置

因为是首次安装,之后如自己有修改保存本地版本,需要一个git用户名和邮箱(仅是本地用户可随意设置)

设置用户

git config --global user.name "Moon Benjamin"
git config --global user.email "your@email.com"

设置代理
假设 你的HTTP Proxy为 127.0.0.1:1087

git config --global http.proxy http://127.0.0.1:1087
git config --global https.proxy http://127.0.0.1:1087

拉取代码

进入你准备存放编译代码的位置

博主预设为 /Azeroth 目录下

cd /Azeroth

拉取稳定分支 包含一些稳定版本的(推荐) 如果空间有限也可以只拉一个版本,这里安装官方推荐

git clone https://github.com/azerothcore/azerothcore-wotlk.git --branch master --single-branch azerothcore

拉取完成后 得到一个azerothcore目录 这时候 所有准备工作就完成了,可以进行编译了





编译

创建构建目录

为了避免更新和冲突源构建的问题,要自己创建了一个特定的构建目录,主要是避免了任何可能的问题(如果可能发生的话)

cd azerothcore
mkdir build
cd build




配置编译

编译时间比较长,怕中途SSH断开导致编译终端的,请安装screen来开单独的命令窗口防止中断

apt install screen -y

为编译起一个 备注为install_corescreem窗口

screen -S  install_core

如果终端断开了,重新连接后 则使用screen -ls查询窗口ID 然后使用screen -r ID 重新进入



在运行 CMake 命令之前,替换$HOME/azeroth-server/为服务器安装路径(您要放置已编译二进制文件的位置)。

高级用户参数说明CMake options

此时,您必须位于build/目录中。

注意:在以下命令中,变量$HOME是当前用户的路径,因此如果您以 root 身份登录,$HOME 将为/root。您可以检查环境变量的状态,如下所示:

官方推荐命令

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

因为这里安装位置本就不在root目录下,所以需要修改为

cmake ../ -DCMAKE_INSTALL_PREFIX=/Azeroth/azeroth-server/ \
 -DCMAKE_C_COMPILER=/usr/bin/clang \
 -DCMAKE_CXX_COMPILER=/usr/bin/clang++ \
 -DWITH_WARNINGS=1 \
 -DTOOLS_BUILD=all \
 -DSCRIPTS=static \
 -DMODULES=static

主要是修改了DCMAKE_INSTALL_PREFIX位置

查询可用CPU的数量

nproc --all

然后,替换4为你需要使用CPU数量以达到预期性能,键入:

make -j 4
make install

开始编译,如果不出什么意外,我们设置篇见。记得在输make install 后保存一下输出 这个命令会返回一些重要的文件路径给你

服务器设置

编译完成后,您需要通过下载或解压缩来添加一些必要的文件

有些文件是可选的,但强烈推荐:

Directory要求
dbc(客户端数据库)必须
maps(客户端地图)必须
vmaps(客户端)强力推荐
mmaps(客户端)强力推荐
cameras(客户端)推荐

怎么获取这些文件:

  1. 直接从Azeroth的Github仓库中获取预先收集的包
  2. 从3.3.5a 客户端中提取它们

从Github下载

完整数据V16

  1. 在名为Data的构建文件夹中创建一个新文件夹。博主的位置为/Azeroth/azerothcore/RelWithDebInfo/Data 内解压出来
  2. 记住这个位置,下步需要将DataDir配置选项编辑到文件夹的位置

从客户端中提取

如果您下载了上面的文件,您可以跳过这一步

AzerothCore 需要从魔兽世界客户端提取某些文件。您需要从 3.3.5a 客户端中提取它们。

默认情况下,您将使用工具编译核心,您将获得以下可执行文件:mapextractorvmap4extractorvmap4assemblermmaps_generatorWindows 上为 .exe

你需要使用这些工具从客户端中提取。请直接参考Wiki 本文这里直接使用下载的方式

创建数据库以及用户

官方的这一步骤是在创建配置文件之后,但为配置文件更好整理修改。我们先创建数据库和用户

创建命令直接参考 create_mysql.sql
这个文件在本地文件 /Azeroth/azerothcore/data/sql/create也能找到

操作完成后,会得到一个账户密码均为acore的用户,你也可以自定义密码
对于的数据库为acore_world,acore_characters,acore_auth


创建配置文件

配置文件位于编译好输出的文件夹中 /Azeroth/azeroth-server/etc
默认为.dist的副本,需要拷贝并重命名

cp authserver.conf.dist authserver.conf \
&& cp worldserver.conf.dist worldserver.conf

worldserver.conf编辑内容

...
LoginDatabaseInfo     = "127.0.0.1;3306;acore;acore;acore_auth"
WorldDatabaseInfo     = "127.0.0.1;3306;acore;acore;acore_world" 
CharacterDatabaseInfo = "127.0.0.1;3306;acore;acore;acore_characters" 
...
DataDir = "/Azeroth/azerothcore/RelWithDebInfo/Data" #上一步Data位置
...

authserver.conf编辑内容

...
LoginDatabaseInfo     = "127.0.0.1;3306;acore;acore;acore_auth"
...

数据库遵循这样的结构:

Variablename = "MySQLIP;Port;Username;Password;database"  

填充数据库

自动数据库更新程序
默认情况下,启动WorldserverAuthserver 的时候将检查所有新文件并将其导入到您在配置中指定的数据库中。

这是确保您始终与核心保持同步的最简单且推荐的方法。

要编辑自动数据库更新程序,您将在UPDATE SETTINGS下的 authserver.confworldserver.conf 中找到必要的设置。

  1. 启动授权服务器。
  2. 启动世界服务器。

注意后台驻留,目前Linux还没准备对应的主流程序。所以以screen的方式先运行,以便排查问题

screen -S authserver

创建名为authserber的控制台

/Azeroth/azeroth-server/bin/authserver

运行授权服务器,看到首次运行导入了数据库

screen -S worldserver

创建名为worldserver的控制台

/Azeroth/azeroth-server/bin/worldserver

运行世界服务器,看到首次运行导入了数据库 数据库比较大 首次运行需要一定时间

直到

AzerothCore rev. af88c2428b91 2023-02-11 17:06:58 +0000 (master branch) (Unix, RelWithDebInfo, Static) (worldserver-daemon) ready...
Starting up Auction House Listing thread...
Monthly quests reset for all characters.
Calendar deletion of old events.
Guild Daily Cap reset.
AC>

说明服务器开启成功

运行准备

公网访问设置

WorldserverAuthserver 配置 默认的本地主机 localhost (127.0.0.1) 的IP 设置都应该保留。

默认的 bindip (0.0.0.0) 也应该保持不变。

为 Internet 连接设置 auth 数据库 realmlist
这是您必须使用您的互联网 IP 的地方,以便来自互联网的客户端可以找到您的服务器。您必须从路由器/防火墙转发或打开端口 3724 (authserver)8085 (worldserver)

您需要确保您的authserver应用程序将传入连接定向到您的领域。

打开acore_auth数据库并找到realmlist表。您需要根据需要编辑地址字段:

  • LAN IP (192.168.xx) - 如果您在运行 WoW 的不同计算机上安装 AzerothCore,但所有涉及的计算机都在同一网络(路由器)上,请使用该计算机的局域网 IP。
  • 127.0.0.1 - 也称为“本地主机”。如果您在运行 WoW 的同一台计算机上安装了 AzerothCore,并且只有您连接到它,请在此处和您的配置中保留此设置。
  • 公共 IP 地址——如果您希望其他人连接到您的服务器,请使用您的外部 IP。访问http://www.whatismyip.com/查找您的外部 IP 地址。
  • 如果您从家庭网络托管它,您可能需要设置正确的端口转发,这不在本指南的范围内。https://portforward.com有大多数路由器的指南,您的互联网服务提供商应该能够提供帮助。
  • 完全限定的域名 -(mydomain.com 或 warcraft.mydomain.com)类似于外部 IP 地址,如果您希望其他人连接到您的服务器,则可以使用它,并且不需要跟踪潜在的动态 IP 的额外好处地址。

与公共 IP 地址类似,如果您从家庭网络托管,则需要设置端口转发。

创建用户(GM/User)

Wiki

LevelSecurity Level
0SEC_PLAYER
1SEC_MODERATOR
2SEC_GAMEMASTER
3SEC_ADMINISTRATOR

创建一个管理员GM

account create benjamin 6BL2gXKqe22 3 -1

注意:(-1 代表所有领域)

最后修改:2024 年 01 月 18 日
如果觉得我的文章对你有用,请随意赞赏