在CentOS 7上编译Trinity

原文:http://www.ac-web.org/forums/showthread.php?228021-Guide-Compiling-Trinity-on-CentOS-7-from-scratch

可能存在bug

更新了最新的TC(截至2019年1月1日)和CentOS 7.6.1810。

Trinity Wiki对Red Hat / CentOS的说明缺乏(尽管他们不推荐它们,所以没有真正的惊喜)。无论如何,我很想知道我是否可以让它发挥作用。大多数情况下,这归结为获得更新的包等。

本指南不会提供有关设置屏幕或tmux以及其他此类细节的说明,但它会为您提供有效的服务器。

Anyhoo,指南

要求
因为我们正在进行大量的软件包安装,所以以root用户身份登录CentOS机器。

我们将创建一个用户来编译和运行TrinityCore服务器。在这里,我将调用用户服务器
码:

useradd -mU -s / bin / bash服务器
passwd服务器

现在CentOS 7在回购中没有足够新版的GCC。Boost的版本也太旧了,所以我们需要编译自己的版本。为了做到这一点,我们需要一些工具来解压缩和编译。所以我们先做。我们还需要确保我们拥有最新的cmake。
码:

yum -y install epel-release
yum -y install make cmake3 gcc gcc-c ++ bzip2 p7zip nano
ln -s / usr / bin / cmake3 / usr / bin / cmake

现在编译一个更新的GCC。具体来说,我们将使用GCC 7.3.0(这需要一段时间)。
码:

curl -L http://ftp.mirrorservice.org/sites/sourceware.org/pub/gcc/releases/gcc-7.3.0/gcc-7.3.0.tar.gz -O
tar zxf gcc-7.3.0.tar.gz
cd gcc-7.3.0
./contrib/download_prerequisites
./configure --disable-multilib --prefix = / usr --enable-languages = c,c ++
make -j $(nproc)
make install

手动安装GCC后,我们需要告诉yum不要在我们手动安装的GCC之上安装旧的GCC。我们通过在yum.conf中添加一行来完成此操作。
码:

nano /etc/yum.conf

添加行
码:

exclude = gcc gcc-c ++

按Ctrl + O(并按Enter)以保存更改。 - 那是字母'O'而不是数字零('0')。
按Ctrl + X退出nano 

安装GCC 7.3.0后,我们现在需要编译并安装Boost 1.64.0(这也需要一些时间,但不如编译GCC本身那么糟糕)
码:

光盘
yum -y install libquadmath-devel python-devel
curl -L https://dl.bintray.com/boostorg/release/1.64.0/source/boost_1_64_0.tar.gz -O
tar zxf boost_1_64_0.tar.gz
cd boost_1_64_0
./bootstrap.sh
./b2安装

我们不再需要GCC或Boost的源代码,所以我们删除它们以节省空间。
码:

光盘
rm -rf boost_1_64_0 *
rm -rf gcc-7.3.0 *

现在我们安装Trinity以及MySQL服务器和sshfs所需的软件包
码:

yum -y install git mariadb-devel openssl-devel bzip2-devel readline-devel ncurses-devel
yum -y install mariadb-server fuse-sshfs

现在初始化,启动并保护MySQL服务器。在最后一步,回答如下问题:没有“当前”root密码,所以按ENTER,设置新的root密码,对于所有剩余的问题,回答Y(是)。
码:

systemctl启用mariadb
systemctl启动mariadb
mysql_secure_installation

在防火墙中打开所需的端口 我们使用的是默认的CentOS 7防火墙。在这里,我只显示基本端口以使工作正常。

首先,我们需要找出我们目前所处的“区域”。
码:

firewall-cmd --get-active-zones

现在打开实际的端口。如果您的区域和端口值不同,请更改区域和端口值。
码:

firewall-cmd --zone = public --add-port = 3724 / tcp --permanent
firewall-cmd --zone = public --add-port = 8085 / tcp --permanent
systemctl重新启动firewalld

核心编译/安装
现在满足要求,我们应该很好地编译Trinity Wiki给出的核心。

首先切换到我们为编译/运行Trinity而创建的用户帐户。
码:

sudo -u服务器-i

下载并编译源代码
码:

git clone -b 3.3.5 git://github.com/TrinityCore/TrinityCore.git
cd TrinityCore
mkdir build
cd build
cmake ../-DCMAKE_INSTALL_PREFIX = $ HOME / core
make -j $(nproc)
make install

DBC,地图,vmaps和mmaps提取
要提取DBC等,我们需要从WoW客户端访问数据文件。这可以通过将WoW的Data文件夹复制到CentOS盒子来实现,但这将涉及大量无关的数据复制,并且在互联网上这可能需要很长时间。

相反,我将使用SSHFS通过SSH远程将客户端的数据文件夹挂载到CentOS盒上,并使用此文件夹上的提取工具。这将导致大约5.8 GB的数据传输而不是大于12 GB(通过复制)。

为此,需要在本地计算机上安装SSH服务器。如果您的本地计算机是Linux,那么只需安装OpenSSH服务器即可。对于Windows,我可以推荐Bitvise SSH服务器(它是免费的) https://www.bitvise。虽然任何支持SFTP的SSH服务器都可以。使用Bitvise SSH服务器时,我建议创建一个虚拟帐户并将其主文件夹设置为您的WoW客户端文件夹。

创建服务器的数据文件夹并将游戏客户端的数据文件夹装入其中。我们将在这里提取我们需要的数据。(注意,创建的第二个数据文件夹具有大写的“D”)。我们还会在这里为服务器创建一个日志文件夹。
码:

cd~ / core
mkdir -p logs / auth
mkdir -p logs / world
mkdir -p数据/数据
cd数据

现在使用SSHFS将远程Data文件夹挂载到此处。该SSHFS命令所显示的工作原理如下sshfs的用户名IP-的-你的机器路径/到/你/魔兽文件夹/数据路径/何处/到/安装/它
码:

sshfs user@192.168.1.100:/ home / World \ of \ Warcraft / Data ./Data

(根据需要调整路径名。用户名和IP是使用WoW客户端的SSH服务器的用户名和IP。)

完成后,检查它是否已正确安装
码:

ls数据

您现在应该看到您的WoW数据

现在提取DBC和地图。
码:

../bin/mapextractor
../bin/vmap4extractor
mkdir vmaps
../bin/vmap4assembler建筑物vmaps
mkdir mmaps
../bin/mmaps_generator

提示:mmaps提取需要相当长的时间,因此您可以打开CentOS框的第二个会话,并在此过程中执行数据库安装和服务器配置文件。完成清理并卸载sshfs文件夹
码:

rm -r建筑物
fusermount -u ./Data

下载并安装数据库
我们需要创建服务器的数据库并填充默认的身份验证和字符数据库。
码:

cd~ / TrinityCore / sql
mysql -uroot -p <./create/create_mysql.sql
mysql -uroot -p auth <./base/auth_database.sql
mysql -uroot -p characters <./base/characters_database.sql

下载TDB世界数据库并将其解压缩到一个文件夹(调整最新TDB的链接/名称)并将其安装在我们的MySQL服务器中。
码:

光盘
mkdir数据库
cd数据库
curl -L https://github.com/TrinityCore/TrinityCore/releases/download/TDB335.64/TDB_full_world_335.64_2018_02_19.7z -O
7za x TDB_full_world_335.64_2018_02_19.7z
mysql -uroot -p world <TDB_full_world_335.64_2018_02_19.sql

将TDB数据库安装到MariaDB中
码:

cd TDB_full_335.63_2017_04_18
mysql -uroot -p world <TDB_full_world_335.63_2017_04_18.sql

设置数据库的领域
在这里,我们在数据库中设置领域信息。即服务器的IP和名称。如果需要非默认值,也可以设置端口。根据需要调整IP和域名。如果您不知道IP,可以使用命令ip addr来发现它。
码:

    
echo'update auth.realmlist set name =“CentOS 7上的Trinity”,address =“192.168.1.4”;' | mysql -uroot -p

设置服务器配置文件
现在设置服务器的配置文件。我们还为第一次运行将更新数据库的worldserver做准备。
码:

cd~ / core / etc.
cp authserver.conf.dist authserver.conf
cp worldserver.conf.dist worldserver.conf

在编辑器中打开authserver.conf文件并查看它。
码:

nano authserver.conf

将LogsDir设置为我们的logs文件夹
码:

LogsDir = “/家庭/服务器/核心/日志/ AUTH”

保存并退出nano 

Edit worldserver.conf并将日志文件夹设置为/ home / server / core / logs / world。还要将数据目录设置为/ home / server / core / data
码:

nano worldserver.conf

将LogsDir设置为我们的logs文件夹并设置DataDir。
码:

DATADIR = “/家庭/服务器/核心/数据”
LogsDir = “/家庭/服务器/核心/日志/世界”

由于我们希望Trinity在第一次运行时更新服务器的数据库,因此请确保以下设置
码:

Updates.EnableDatabases = 7
Updates.AutoSetup = 1

保存并退出nano 

完成数据库,创建GM帐户和其他事项完成
所有DBC,映射,vmaps和mmaps的提取并初始化服务器和数据库后,我们运行worldserver一次以确保所需的所有数据库更新都是实际应用。

所以现在运行worldserver以确保任何更新
码:

cd~ / core / bin
./worldserver

让服务器应用任何更新并等到它到达TC>提示并创建GM帐户。在这里,我将创建一个名为admin的帐户,密码为nimda
码:

帐户创建管理员nimda
帐户设置gmlevel admin 3 -1
帐户设置插件管理员2

现在关闭服务器
码:

服务器关机0

再次打开worldserver.conf并禁用数据库自​​动更新,因为它现在是最新的,因此不需要它。
码:

Updates.EnableDatabases = 0
Updates.AutoSetup = 0

(可选,未显示)
同样在worldserver.conf中,启用RA。
安装屏幕或tmux以更轻松地运行服务器。

发表回复

登录... 后才能评论