Linux下编译Azerothcore源码

news/2024/7/6 17:54:24/文章来源:https://www.cnblogs.com/colasdn/p/18282887

前言

终于开始介绍Linux下如何编译AzerothCore源码了,本文编译和架设方法较为繁琐和细致,含Ubuntu、Debian和Docker(相较之前的Docker教程来说本文是手动版),且涉及到搭建注册网站和对外开放服务部分,故再次声明:本网站均为技术研究,若参考本网站教程搭建对外服务,我均不负任何责任!

系统环境

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

{% tabs Linux %}

请使用Ubuntu 18.04以上版本,如果你非要用Ubuntu 18.04或旧版系统,你需要额外安装gcc-10libboost1.74-dev,命令如下:

add-apt-repository -y ppa:ubuntu-toolchain-r/test
add-apt-repository -y ppa:mhier/libboost-latest
apt-get update
apt install -y gcc-10 g++-10
apt install -y install libboost1.74-dev

接下来安装环境:

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

请使用Debian 10以上版本,接下来安装环境:

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

Docker如何安装请参照本网站《Docker 编译 Azerothcore 源码》部分内容,安装完毕后输入:

docker pull ubuntu  #拉取Ubuntu镜像
docker run -itd --name GSWXY -p 8085:8085 -p 3306:3306 -p 3724:3724 -p 80:80 -p 22:22 ubuntu  #GSWXY是我自定义的容器名称,你可以改成其他名字,8085、3306、3724、80、22是我们需要用到的端口,把它从容器里映射出来
docker exec -it GSWXY /bin/bash  #进入Docker
passwd root  #修改root密码
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 openssh-server openssl  #安装环境,这里比前两者多了安装SSH服务命令,一般你服务器安装的Ubuntu和Debian都自带有ssh服务了,所以仅Docker需要安装下,不然后期你无法使用WinSCP等SFTP工具,或者Xshell等SSH工具

接下来输入vim /etc/ssh/sshd_config,将PermitRootLogin前面去掉#,后面从prohibit-password改为yes,退出编辑后输入service ssh restart&& service ssh status重启SSH服务。

{% endtabs %}

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

源码编译

下载源码

cd / && 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.”,请重新输入一遍命令。

上面是官方地址(保证最新),如果下载速度过慢不愿意等,按 Ctrl+C 结束下载,换成以下命令(我同步的 Gitee 地址,不保证最新):

cd / && git clone https://gitee.com/gswxy/azerothcore-wotlk.git --branch master --single-branch azerothcore

功能安装

这个链接是官方 Github 存储库,里面有众多的功能模块,如果你英文不好的话,多用下翻译,以自动平衡功能为例:

建议下载解压后使用WinSCP等工具,将文件夹上传到 /azerothcore/modules 目录。

温馨提醒:src文件夹内有后缀为cpp的文件,如果你想修改模块源码,可以使用Notepad++等工具进行编辑。

构建编译

cd /azerothcore && mkdir build && cd build
echo $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=0 -DSCRIPTS=static  #其中的$HOME替换为上面查到的当前用户路径,比如我替换为/root
nproc --all  #查看可用的内核数量,比如我显示的是12
make -j 12 && make install   #其中的12替换为上面查到的可用内核数量,比如我替换为12

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

服务器设置

Data文件

点此链接下载并解压官方的data文件,或者将你自行提取的data文件(提取方法参见《Windows 下编译 Azerothcore 源码》部分内容),使用WinSCP等工具,将data文件夹上传到 /root/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 '新密码';  #此处为修改MySQL的root密码,新密码即你自己设置的密码,这里我设置为了gswxy.com,不要忘记!
update user set host = '%' where user ='root';
source /azerothcore/data/sql/create/create_mysql.sql  #创建acore用户,如果你想使用root管理AC数据库,此条不用输入
FLUSH PRIVILEGES;
exit;
bash /azerothcore/apps/db_assembler/db_assembler.sh  #输入5以选择import-all: Assemble & Import all,导入数据库

在最后一步导入数据库之前,如果你不想使用acore用户,请执行:

cp /azerothcore/conf/dist/config.sh /azerothcore/conf/config.sh && vim /azerothcore/conf/config.sh

在文末找到以下字段,修改用户名和密码,比如我全部改成了root用户:

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

设置配置

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

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

接下来可输入vim /root/azeroth-server/etc/authserver.confvim /root/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/azeroth-server/data"

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

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

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

外网设置

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

启动脚本

输入cd /root/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/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/php7.4-fpm.sock;和下面的}前面的#去掉,如图所示:

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

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

网站搭建

注册网站推荐WoWSimpleRegistration,点击此处下载压缩包解压,将application/config/内的config.php.sample文件复制并重命名为config.phpconfig.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,SFTP所需要的端口为22,注册网站所需要的端口为80。如果按以上教程搭建,外网仍无法访问,请自行查看服务器防火墙是否放行上述端口。

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

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.hqwc.cn/news/737917.html

如若内容造成侵权/违法违规/事实不符,请联系编程知识网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

Docker编译Azerothcore源码

维基百科 Docker 是一个开放源代码软件,是一个开放平台,用于开发应用、交付(shipping)应用、运行应用。 Docker允许用户将基础设施(Infrastructure)中的应用单独分割出来,形成更小的颗粒(容器),从而提高交付软件的速度。 Docker容器与虚拟机类似,但二者在原理上不同…

读人工智能全传02图灵测试

读人工智能全传02图灵测试1. 图灵测试 1.1. 模仿游戏 1.2. 20世纪40年代末至50年代初,第一台计算机的出现引发了一场公开辩论,辩论主题就是这一现代科学奇迹的潜力如何 1.2.1. 这场辩论中最瞩目的贡献当归属于一本名叫《控制论》的书,由麻省理工学院数学教授诺伯特维纳(Norb…

ubuntu apt update 提示 The repository ‘http://xxx Release‘ does not have a Release file

sudo apt update && sudo apt upgrade -y提示 报错 E: The repository ‘http://xxx Release‘ does not have a Release file.编辑文件 /etc/apt/sources.list, 添加下面代码保存 deb http://nl3.archive.ubuntu.com/ubuntu jammy main restricted universe multivers…

处理器SDK Linux软件开发

处理器SDK Linux软件开发 https://software-dl.ti.com/jacinto7/esd/processor-sdk-linux-edgeai/TDA4VM/08_06_01/exports/docs/devices/TDA4VM/linux/index.html 1.概述 欢迎使用处理器SDK Linux版TDA4VM! SDK提供软件和工具,让用户在德州仪器的边缘人工智能应用处理器上有…

jira修改RoadMap里的时间格式,硬核日期格式化

jira修改roadMap里的时间格式 在插件目录找到portfolio-plugin-9.16.1.jar将他下载到本地 使用zip解压软件解压jar包 全局搜索 DD/MM/YY 将其替换YYYY/MM/DD修改后效果图全局搜索 return${l()(o.getUTCDate().toString(),2,"0")}/${t} 替换 return ${o.getUTCMonth()…

不同网站检测到的ip不同

背景 最近在使用某个接口时出现了问题,大致是根据ip查询地址。 于是使用查询ip的网站,发现ip各有不同。大致上是有三种ip。 探讨 经过查询,比较合理的解释是,运营商有多个网络出口,根据访问的网站不同,使用的网络出口也不同,因此不同的网站分别使用了不同的ip去访问,因…

全网最适合入门的面向对象编程教程:08 类和对象的Python实现-@property装饰器:把方法包装成属性

本文主要对@property 装饰器的基本定义、使用场景和使用方法进行了介绍,同时介绍了setter装饰器和deleter装饰器的应用场景和语法。全网最适合入门的面向对象编程教程:08 类和对象的 Python 实现-@property 装饰器:把方法包装成属性 摘要: 本文主要对@property 装饰器的基本…

Java 异常 随机数 包装类

异常,随机数,包装类,日期类正如 “人无完人”一样,程序也不是完美的,它总会存在这样那样的问题,而有些问题并不是能够通过程序员开发更好的代码来解决的,如果我们忽视它,可能就会造成程序的终止,甚至是系统的崩溃。因此,我们需要想办法来合理的解决它,这就是Java中异常…

DataWhale暑期夏令营第一期——大模型技术方向task2笔记

Task 2 笔记 数据分析 可以先通过对标签中各个项进行数据分析(使用values_count方法),可以得到主要任务的各个指标的值分布情况。 我认为这一步的作用:帮助理解数据。 大模型的本质还是概率生成,通过prompt提示词去进行生成Baseline优化思路 1.数据处理角色合并:将同一个…

基于Bootstrap Blazor开源的.NET通用后台权限管理系统

前言 今天大姚给大家分享一个基于Bootstrap Blazor开源的.NET通用后台权限管理系统,后台管理页面兼容所有主流浏览器,完全响应式布局(支持电脑、平板、手机等所有主流设备),可切换至 Blazor 多 Tabs 模式,权限控制细化到网页内任意元素(按钮、表格、文本框等等):Boots…

03-立即执行函数

JS中的立即执行函数01 立即执行函数的定义 立即执行函数有自己的作用域,因此可以防止全局变量之间的污染02 应用场景 <!DOCTYPE html> <html lang="en"> <head><meta charset="UTF-8"><meta http-equiv="X-UA-Compatible…

初体验Sonar10.6 之 从部署到实战

Sonar介绍及下载 Sonar是一个代码质量管理的开源平台,用于管理源代码的质量。 SonarLint IDE插件安装 https://plugins.jetbrains.com/plugin/7973-sonarlint https://marketplace.visualstudio.com/items?itemName=SonarSource.sonarlint-vscode sonar scanner下载地址 http…

charles使用

一,下载 去官网下载charles,如果有破解版的更好,不用花钱,但是一般也有30天试用期 二,安装 按照步骤安装即可 三,使用 1,首先,安装本地证书。按照指引一步一步安装。(注意:保存的时候最好放到受信任的证书目录中)2,安装移动端证书:它会告诉你ip和port。 首先你需要…

算法金 | 致敬深度学习三巨头:不愧是腾讯,LeNet问的巨细。。。

​大侠幸会,在下全网同名「算法金」 0 基础转 AI 上岸,多个算法赛 Top 「日更万日,让更多人享受智能乐趣」抱个拳,送个礼 读者参加面试,竟然在 LeNet 这个基础算法上被吊打~ LeNet 确实经典,值得好好说道说道 更多内容,见微*公号往期文章:有史以来最详细的卷积神经网络…

[大疆航线] 系列(3) 无人机多角度航线规划软件μMAPLE

关键词:无人机航线、航点动作,航线软件 作者:ludwig1860 日期:2024.7.3 1. 多角度航线规划软件μMAPLE的编写 我们研究团队编写了一个名为μMAPLE (uav-based Multi-Angular flight PLannEr)的多角度航线规划软件。当然,我们也很乐意协助研究人员们开发符合各自需求的航线…

Windows Terminal 中设置常用命令的别名

Windows Terminal 中设置常用命令的别名 ‍ E:\zhpj\Desktop>cmd /? 启动 Windows 命令解释器的一个新实例 . . . 如果 /D 未在命令行上被指定,当 CMD.EXE 开始时,它会寻找 以下 REG_SZ/REG_EXPAND_SZ 注册表变量。如果其中一个或 两个都存在,这两个变量会先被执行。HKE…

ssrf结合python反序列化

存储session对象时 当然不能直接存储对象 需要转换成有规律的字符串 这一过程就涉及到了序列化 将对象转换成字符串这一过程称之为序列化 PYTHON反序列化漏洞 本文中就涉及到了pickle这一序列化模块导致的反序列化漏洞 在反序列化结束时 会触发__reduce__魔术方法 类似于php中的…

Web基础知识扫盲

1、中间件 定义:中间件是一种独立的系统软件服务程序,分布式应用软件借助这种软件在不同的技术之间共享资源,中间件位于客户机服务器的操作系统之上,管理计算资源和网络通信。常见的中间件:IIS、Apache、Nginx、Tomcat 2、NAT网络地址转换 这里只介绍动态转换一种 动态转换…

MySQL-16.MVCC(多版本并发控制)

C-16.多版本并发控制 1.什么是MVCCMVCC(Multiversion Concurrency Control),多版本并发控制。顾名思义,MVCC是通过数据行的多个版本管理来实现数据库的并发控制。这项技术使得在InnoDB的事务隔离级别下执行一致性读操作有了保证。换言之,就是为了查询一些正在被另一事务更…

[JLU] 数据结构与算法上机题解思路分享-课程设计第一次与第二次上机

这是吉林等通知大学数据结构与算法上机题的题解思路,没有精妙的解法,只是一个记录罢前言 首先,请务必自己尽全力尝试实现题目,直接看成品代码,思维就被拘束了,也很容易被查重。 这里只是思路解析的博客,代码仓库在 JLU_Data_Structures_Record 希望你能在这里找到你想要…