耳语海岸
艾泽拉斯避难谷地

Linux 下编译 Azerothcore 源码

一、前言

本文编译和架设方法较为繁琐和细致,且涉及到搭建注册网站和对外开放服务部分,故再次声明:本网站均为技术研究,若参考本网站教程搭建对外服务,我均不负任何责任!

二、系统环境

本文所述命令均为在 ubuntu 20 及以上版本环境,root 账户下执行,若你用的是非 root 账户,请输入 su root 切换至 root。另外本文默认你对 Linux 稍微有基本认识,如何 SSH 连接服务器、如何 vim 编辑什么的就不用说了吧。

我习惯用的工具是 Finalshell ,集 SSH 和 FTP 工具于一身,当然你也可以选择别的工具。输入此代码安装服务器环境:

apt-get update && apt-get install git cmake make gcc g++ clang libmysqlclient-dev libssl-dev libbz2-dev libreadline-dev libncurses-dev mysql-server libboost-all-dev vim rename screen gdb

在此期间显示 “Do you want to continue? [Y/n]” 的,输入 y 回车即可,下文若出现类似提示将不再赘述。期间如果让你输入国家,请依次输入 6 和 70,选择正确的时区。

三、源码编译

(一)下载源码

mkdir /root/games/ && cd /root/games/ && git clone https://github.com/azerothcore/azerothcore-wotlk.git --branch master --single-branch azerothcore

如果出现:

fatal: unable to access ‘https://github.com/azerothcore/azerothcore-wotlk.git/’: GnuTLS recv error (-110): The TLS connection was non-properly terminated.

请重新输入一遍命令。

(二)功能安装

这个链接是官方 Github 存储库,里面有众多的功能模块,如果你英文不好的话,多用下翻译。下载解压后使用 FTP 类工具,将文件夹上传到 /root/games/azerothcore/modules 目录。

温馨提醒:src 文件夹内有后缀为 cpp 的文件,如果你想修改模块源码,可以使用 Notepad++ 等工具进行编辑。如果下载的模块有后缀,即“-master”。需要将其删除才能使模块正常工作!

(三)构建编译

cd /root/games/azerothcore && mkdir build && cd build && cmake ../ -DCMAKE_INSTALL_PREFIX=/root/games/azeroth-server/ -DCMAKE_C_COMPILER=/usr/bin/clang -DCMAKE_CXX_COMPILER=/usr/bin/clang++ -DWITH_WARNINGS=1 -DTOOLS=0 -DSCRIPTS=static && make -j 20 && make install

如果编译中出现错误,请自行排错后重新编译,编译完成后的服务端在 /root/games/azeroth-server 目录。

四、服务端设置

(一)Data 文件

点此链接下载并解压官方的 data 文件,或者将你自行提取的 data 文件,使用 FTP类工具,将 data 文件夹上传到 /root/games/azeroth-server 目录。

(二)数据库安装

vim /etc/mysql/mysql.conf.d/mysqld.cnf

按i进入编辑模式,在“bind-address= 127.0.0.1”前面输入#,按Esc,输入“:wq”回车保存退出。

service mysql restart

重启 MySQL 。

mysql -uroot -p

回车,弹出 Enter password 让你输入密码时,继续回车(第一次登陆时处于无密码状态,故跳过直接选择回车即可进入),登录 MySQL 。

use mysql;
ALTER USER 'root'@'localhost' IDENTIFIED WITH mysql_native_password BY 'gswxy.com';

此处为修改 MySQL 的 root 密码,新密码即你自己设置的密码,这里我设置为了gswxy.com,不要忘记!

update user set host = '%' where user ='root';
FLUSH PRIVILEGES;
exit;

温馨提醒:如果你加了功能模块,在其文件夹内可能会有 data 或 sql 文件夹,里面有 SQL 文件,请在后面服务端启动前使用 HeidiSQL 或 Navicat 等工具导入数据库。

(三)设置配置

建立 worldserver.conf 和 authserver.conf 配置文件:

cp /root/games/azeroth-server/etc/*.dist /root/games/azeroth-server && cd /root/games/azeroth-server && rename 's/.dist$//' *.dist && mv /root/games/azeroth-server/*.conf /root/games/azeroth-server/etc

接下来可依次输入:

vim /root/games/azeroth-server/etc/authserver.conf
vim /root/games/azeroth-server/etc/worldserver.conf

命令来修改服务器配置,需要注意的是,需要修改 conf 文件里以下内容:

LoginDatabaseInfo = "127.0.0.1;3306;acore;acore;acore_auth" worldserver.conf #此字段authserver.conf和worldserver.conf都有
WorldDatabaseInfo = "127.0.0.1;3306;acore;acore;acore_world" worldserver.conf #此字段仅worldserver.conf有
CharacterDatabaseInfo = "127.0.0.1;3306;acore;acore;acore_characters" worldserver.conf #此字段仅worldserver.conf有
DataDir = "." #此字段仅worldserver.conf有,将.更改为你的data文件夹路径,比如我改成了:DataDir = "/root/games/azeroth-server/data"

上述字段内的第一个 acore 是数据库用户名,第二个 acore 是数据库密码,请更改为自己的。另外如果你前面添加了功能模块,则需要执行以下命令生成配置文件:

cp /root/games/azeroth-server/etc/modules/*.dist /root/games/azeroth-server && cd /root/games/azeroth-server && rename 's/.dist$//' *.dist && mv /root/games/azeroth-server/*.conf /root/games/azeroth-server/etc/modules

功能模块的所有配置文件均在 /root/games/azeroth-server/etc 里,请修改后缀为.conf 的文件。

(四)外网设置

使用 HeidiSQL 或 Navicat 等工具连接数据库,打开 acore_auth 数据库的 realmlist 表。其中 address 栏,如果你想提供对外服务,请填写你服务器的公网 IP 地址或者域名,如果你只是想局域网的伙伴连接你的服务端,请填写你本机的局域网 IP 地址。另外 name 可自定义为你服的名字,改完后不要忘记按 Ctrl+S 保存。

(五)启动脚本

cd /root/games/azeroth-server/bin && vim auth.sh

然后输入以下脚本:

!/bin/sh
while :; do
./authserver
sleep 20
done

退出编辑后,输入 vim world.sh,然后输入以下脚本:

!/bin/sh
while :; do
./worldserver
sleep 20
done

退出编辑后,输入 vim restarter.sh,然后输入以下脚本:

!/bin/bash
screen -AmdS auth ./auth.sh
screen -AmdS world ./world.sh

退出编辑后,输入 vim shutdown.sh,然后输入以下脚本:

!/bin/bash
screen -X -S "world" quit
screen -X -S "auth" quit

退出编辑后,输入:

chmod 777 /root/games/azeroth-server/bin/*.sh

常用命令有:

  • 输入 cd /root/azeroth-server/bin && ./restarter.sh 可启动服务端;
  • 输入 screen -r auth 或者 screen -r world 可以查看控制台,同时按 Ctrl+A+D 键可退出窗口,但不会结束进程;
  • 输入 cd /root/azeroth-server/bin && ./shutdown.sh 可关闭服务端。

五、注册网站

(一)环境安装

apt update && apt install nginx php-fpm php-gmp php-gd php-soap php-mbstring php-pdo php-pdo-mysql

然后输入 vim /etc/nginx/sites-available/default,将 location ~ .php$ {、include snippets/fastcgi-php.conf;、fastcgi_pass unix:/var/run/php/php8.1-fpm.sock; 和下面的} 前面的#去掉,如图所示:

并在 index 后面输入 index.php,如图所示:

退出编辑后,输入 service nginx restart && service php8.1-fpm restart 重启服务。

请注意,上述php8.1,请替换为你自己的php版本号,可以输入 php -v 查看。

(二)网站搭建

注册网站推荐 WoWSimpleRegistration,点击此处下载压缩包解压,将 application/config/ 内的 config.php.sample 文件复制并重命名为 config.php,config.php 文件就是该源码的配置文件,推荐使用 Notepad++ 工具打开,里面每项都有详细的英文解释,不懂的请自行翻译,常见修改如下:

=====================================================================
$config['baseurl'] = "localhost";  #本地访问默认为localhost,外网访问请正确更正为你的网址,否则图片路径错误不显示
=====================================================================
=====================================================================
$config['language'] = "chinese-simplified";  #修改默认语言为中文
=====================================================================
$config['realmlist'] = 'IP地址';  #IP地址替换为你的局域网或外网地址
$config['patch_location'] = 'http://mypatch.com/patch.mpq';  #其中http://mypatch.com/patch.mpq更改为你更新包的地址,可不修改
=====================================================================
$config['expansion'] = '2';  #修改为0,以适配wlk客户端
=====================================================================
$config['server_core'] = 1;  #修改为1,以适配AC源码
=====================================================================
$config['disable_changepassword'] = true;  #修改为true,否则在开启SOAP后会出现异常
=====================================================================
$config['template'] = 'advance';  #此处为主题选择,我这里选的是advance
=====================================================================
#以下为邮箱设置,请设置为自己的邮箱STMP信息
$config['smtp_host'] = 'smtp1.example.com';
$config['smtp_port'] = 587;
$config['smtp_auth'] = true;
$config['smtp_user'] = 'user@example.com';
$config['smtp_pass'] = 'SECRET';
$config['smtp_secure'] = 'tls';
$config['smtp_mail'] = 'no-reply@example.com';
=====================================================================
$config['soap_for_register'] = true;  #开启SOAP
=====================================================================
$config['soap_uri'] = 'urn:AC';  #更改为urn:AC,以适配AC源码
=====================================================================
$config['soap_username'] = 'gswxy';  #输入你服务端的一个GM号的用户名
$config['soap_password'] = 'gswxy.com';  #输入你服务端的一个GM号的密码
=====================================================================
#顾名思义,以下内容更改为你acore_auth数据库的信息
$config['db_auth_host'] = '127.0.0.1';
$config['db_auth_port'] = '3306';
$config['db_auth_user'] = 'root';
$config['db_auth_pass'] = 'gswxy.com';
$config['db_auth_dbname'] = 'acore_auth';
=====================================================================
#顾名思义,以下内容更改为你acore_characters数据库的信息
$config['realmlists'] = array(
    "1" => array(
        'realmid' => 1, // Realm ID
        'realmname' => "GSWXY", // Realm Name
        'db_host' => "127.0.0.1", // MySQL Host IP
        'db_port' => "3306", // MySQL Host Port
        'db_user' => "root", // MySQL username
        'db_pass' => 'gswxy.com', // MySQL password
        'db_name' => "acore_characters" // Characters database name

其余配置项目请自己酌情修改,修改完毕后将文件夹全部上传到 /var/www/html 目录,如图所示:

(三)开启 SOAP

vim /root/azeroth-server/etc/worldserver.conf

然后输入 /SOAP 查找 SOAP 值,找到 SOAP.Enabled = 0 后回车按 i 键,修改为 SOAP.Enabled = 1,按 Esc 键输入:wq 后即可保存退出,重启服务端后即可使用网站注册账号。

该网站的地址为你外网 IP 地址,如果你想本机打开,请在浏览器输入 http://localhost。

(四)防火墙配置

魔兽世界服务端所需的端口为 3306、8085、3724、7878,SFTP 所需要的端口为 22,注册网站所需要的端口为 80。如果按以上教程搭建,外网仍无法访问,请自行查看服务器防火墙是否放行上述端口。

最后,如果有帮助到你,打个赏吧,有什么问题 QQ 群(938973736)交流。

-=||=-收藏赞 (2)
打赏
未经允许不得转载:GSWXY » Linux 下编译 Azerothcore 源码

评论 1

评论前必须登录!

立即登录   注册

  1. #1

    感谢分享,很好的教程

    忘忧4周前 (08-15)

耳语海岸

WLK版本,定位于RP服务器,趣味养老,请注意:本服仅为技术交流和学习使用,欢迎广泛传播,不作为商业用途。

加入QQ群

觉得文章有用就打赏一下文章作者

非常感谢你的打赏,我们将继续提供更多优质内容,让我们一起创建更加美好的网络世界!

支付宝扫一扫

微信扫一扫