在Ubuntu 22.04上从零搭建TrinityCore 3.3.5魔兽私服:保姆级避坑指南(含公网部署)
魔兽世界怀旧服的热度持续攀升,许多玩家和技术爱好者都希望搭建自己的私服。本文将带你从零开始,在Ubuntu 22.04系统上完整部署TrinityCore 3.3.5版本服务器,涵盖从环境准备到公网部署的全过程,特别针对常见陷阱提供解决方案。
1. 环境准备与依赖安装
搭建TrinityCore服务器首先需要确保系统环境满足要求。Ubuntu 22.04 LTS是最推荐的系统版本,因其长期支持特性和稳定性。以下是必须安装的开发工具和库:
sudo apt update sudo apt install -y git clang cmake make gcc g++ libmysqlclient-dev \ libssl-dev libbz2-dev libreadline-dev libncurses-dev libboost-all-dev \ mysql-server p7zip注意:如果使用非root账户,所有命令前都需要添加sudo。
配置编译器默认使用clang:
sudo update-alternatives --install /usr/bin/cc cc /usr/bin/clang 100 sudo update-alternatives --install /usr/bin/c++ c++ /usr/bin/clang 100常见问题排查:
- 若遇到
libboost版本冲突,可尝试指定版本安装:sudo apt install libboost1.74-dev - MySQL安装后建议运行安全脚本:
sudo mysql_secure_installation
2. 源码获取与编译
TrinityCore的源码托管在GitHub,建议直接克隆3.3.5分支:
git clone -b 3.3.5 --depth 1 https://github.com/TrinityCore/TrinityCore cd TrinityCore国内用户若访问GitHub困难,可使用镜像源:
git clone -b 3.3.5 --depth 1 https://gitcode.com/gh_mirrors/TrinityCore.git编译配置与安装步骤:
mkdir build && cd build cmake ../ -DCMAKE_INSTALL_PREFIX=/home/$(whoami)/server make -j $(nproc) make install关键参数说明:
-DCMAKE_INSTALL_PREFIX:指定服务器安装路径-j $(nproc):使用所有CPU核心加速编译
3. 数据库配置与初始化
TrinityCore需要三个数据库:auth(认证)、characters(角色)和world(游戏世界)。初始化步骤如下:
- 登录MySQL:
sudo mysql -u root -p- 执行创建脚本(假设源码在/home/wow/TrinityCore):
SOURCE /home/wow/TrinityCore/sql/create/create_mysql.sql;create_mysql.sql内容摘要:
CREATE USER 'trinity'@'localhost' IDENTIFIED BY 'trinity'; CREATE DATABASE `world` DEFAULT CHARACTER SET utf8mb4; CREATE DATABASE `characters` DEFAULT CHARACTER SET utf8mb4; CREATE DATABASE `auth` DEFAULT CHARACTER SET utf8mb4; -- 授权语句省略...避坑指南:
- 确保使用utf8mb4字符集以避免特殊字符问题
- 如果使用MariaDB,可能需要手动调整认证插件:
ALTER USER 'trinity'@'localhost' IDENTIFIED VIA mysql_native_password USING PASSWORD('trinity');
4. 地图数据与配置文件
地图数据是独立于源码的必备资源。从官方推荐源下载3.3.5a版本的地图文件:
wget https://tc.arctium.io/data/3.3.5a/maps_vmaps_dbc.7z 7z x maps_vmaps_dbc.7z -o/home/wow/server/data配置文件位于server/etc/目录,需要重命名并编辑:
cd /home/wow/server/etc cp worldserver.conf.dist worldserver.conf cp bnetserver.conf.dist bnetserver.conf关键配置项修改:
| 配置项 | 推荐值 | 说明 |
|---|---|---|
DataDir | "/home/wow/server/data" | 必须使用绝对路径 |
LoginDatabaseInfo | "127.0.0.1;3306;trinity;trinity;auth" | 数据库连接信息 |
WorldDatabaseInfo | "127.0.0.1;3306;trinity;trinity;world" | 角色数据库连接 |
CharacterDatabaseInfo | "127.0.0.1;3306;trinity;trinity;characters" | 世界数据库连接 |
Instance.IgnoreRaid | 1 | 允许单人进入团队副本 |
5. 服务器启动与账户管理
启动顺序必须先认证服务器后世界服务器:
cd /home/wow/server/bin ./authserver & ./worldserver &在worldserver控制台创建游戏账户:
account create test test account set gmlevel test 3 -1命令说明:
- 第一个"test"是账号名,第二个是密码
- "3"表示GM等级,"-1"应用于所有服务器
6. 网络配置与公网部署
要让服务器可被局域网或公网访问,必须修改realmlist表:
USE auth; UPDATE realmlist SET address = '你的公网IP' WHERE id = 1;多网络环境解决方案:
纯局域网环境:
UPDATE realmlist SET address = '192.168.x.x';公网+局域网共存:
INSERT INTO realmlist (name, address, localaddress, port) VALUES ('LAN Realm', '192.168.x.x', '127.0.0.1', 8085);使用域名(推荐公网部署):
UPDATE realmlist SET address = 'yourdomain.com';
端口转发配置示例:
sudo iptables -t nat -A PREROUTING -p tcp --dport 8085 -j DNAT --to-destination 192.168.x.x:8085 sudo iptables -A FORWARD -p tcp --dport 8085 -d 192.168.x.x -j ACCEPT7. 高级配置与优化
性能调优参数:
| 参数 | 推荐值 | 影响范围 |
|---|---|---|
MaxCoreStuckTime | 60 | 服务器无响应超时 |
PlayerLimit | 100 | 同时在线玩家数 |
SaveRespawnTimeImmediately | 1 | 立即保存重生时间 |
Rate.XP.Kill | 1.0 | 经验值倍率 |
添加机器人(NPCBots):
- 下载补丁:
wget https://github.com/trickerer/Trinity-Bots/raw/master/NPCBots.patch- 应用补丁:
cd ~/TrinityCore patch -p1 < NPCBots.patch- 重新编译并配置:
NpcBot.Enable = 1 NpcBot.MaxBots = 1,2,3,4,5,6,7,8,98. 日常维护与监控
自动启动脚本(systemd服务):
创建/etc/systemd/system/trinitycore.service:
[Unit] Description=TrinityCore World Server After=network.target mysql.service [Service] Type=simple User=wow WorkingDirectory=/home/wow/server/bin ExecStart=/home/wow/server/bin/worldserver Restart=always [Install] WantedBy=multi-user.target启用服务:
sudo systemctl daemon-reload sudo systemctl enable trinitycore sudo systemctl start trinitycore数据库备份脚本:
#!/bin/bash DATE=$(date +%Y%m%d) mysqldump -u trinity -ptrinity auth > /backup/auth_$DATE.sql mysqldump -u trinity -ptrinity characters > /backup/characters_$DATE.sql mysqldump -u trinity -ptrinity world > /backup/world_$DATE.sql实际部署中发现,使用绝对路径配置DataDir能解决90%的地图加载问题。对于公网部署,建议搭配Cloudflare等CDN服务来缓解DDoS风险,同时定期检查服务器日志中的异常登录尝试。