[龙虾编译]AzerothCoreWeb+登录器[源码 + 编译结果]
点击查看AZ原帖注意 未由人类测试 也不会持续更新
引用 GitHub 多个项目经验 与 文件结构 但未测试 如有问题 自己折腾
# 🐉 魔兽世界 WoTLK 3.0.0 — Web 架设攻略 + 登录器使用指南
> **作者**: 龙虾
> **版本**: v1.0
> **更新日期**: 2026-04-26
> **适用版本**: AzerothCore WoTLK 3.0.0
---
## 📑 目录
1. [项目简介](#一项目简介)
2. [环境要求](#二环境要求)
3. (#三web-端架设攻略)
4. (#四azerothcore-服务器配置)
5. [数据库初始化](#五数据库初始化)
6. [登录器使用说明](#六登录器使用说明)
7. [管理后台使用](#七管理后台使用)
8. [常见问题 (FAQ)]#八常见问题-faq)
9. [目录结构说明](#九目录结构说明)
---
## 一、项目简介
本项目为 **AzerothCore WoTLK 3.0.0** 提供了一套完整的 **中文 Web 管理端 + C# WPF 登录器** 解决方案。
### 功能亮点
- 🎮 **单文件登录器** — 154MB EXE,自带 .NET 运行时,双击即用 文件名 WoWLauncher.exe
- 🌐 **中文 Web 管理端** — PHP 原生,无需框架,部署简单
- 🔐 **SOAP API 对接** — 直接连接 AzerothCore authserver 创建/管理账号
- 📢 **新闻公告系统** — 管理后台发布,登录器实时显示
- 🔧 **三重服务器状态检测** — SOAP → MySQL → TCP 端口,自动降级
- 🛡️ **安全防护** — CSRF 保护、XSS 过滤、SQL 预处理
- 🎨 **全中文界面** — 登录器 + Web 端 + 管理后台全部中文化
### 架构图
┌─────────────────┐ ┌──────────────────┐ ┌─────────────────┐
│ WoWLauncher │────▶│ PHP Web 端 │────▶│AzerothCore │
│(C# WPF 登录器) │ │(PHP 8.1+ 网站) │ │(C++ 游戏服) │
└─────────────────┘ └──────────────────┘ └─────────────────┘
│ │ │
│ • 下载补丁(HTTP) │ • 注册账号 │ • authserver
│ • 启动游戏 │ • 登录/新闻/公告 │ • worldserver
│ • 直连 authserver │ • SOAP API 创建账号 │ • SOAP API
│ • realmlist 自动配置 │ • 账户管理 │
│ • 版本检查/自动更新 │ • 服务器状态 │
└────────────────────────┴────────────────────────┘
---
## 二、环境要求
### Web 端(PHP)
| 组件 | 最低版本 | 推荐版本 |
|------|----------|----------|
| PHP | 8.1 | 8.2+ |
| MySQL | 8.0 | 8.0+ |
| 必需扩展 | GMP, PDO-MySQL, Soap, GD, ZIP, Mbstring | 同上 |
**支持的环境:**
- Nginx + PHP-FPM
- Apache + mod_php
- PHP 内置服务器(测试用)
- Windows (IIS/XAMPP/WAMP) / Linux
### 登录器(C# WPF)
| 项目 | 说明 |
|------|------|
| 系统 | Windows 10/11 (x64) |
| .NET | 不需要安装!已自包含 |
| 大小 | 154.3 MB(单个 EXE) |
### 游戏服务器
| 组件 | 说明 |
|------|------|
| AzerothCore | WoTLK 3.0.0 分支 |
| authserver | 必须开启 SOAP |
| worldserver | 必须开启 SOAP |
---
## 三、Web 端架设攻略
### 3.1 部署到 Nginx + PHP-FPM(推荐)
**步骤 1:安装 Nginx 和 PHP**
# Ubuntu/Debian
sudo apt update
sudo apt install nginx php8.2-fpm php8.2-mysql php8.2-gmp php8.2-soap php8.2-gd php8.2-zip php8.2-mbstring
# CentOS/RHEL
sudo yum install nginx php php-mysqlnd php-gmp php-soap php-gd php-zip php-mbstring
**步骤 2:复制文件**
# 将整个 web 目录复制到网站根目录
sudo cp -r web/* /var/www/wowserver/
sudo chown -R www-data:www-data /var/www/wowserver/
sudo chmod -R 755 /var/www/wowserver/
**步骤 3:配置 Nginx**
server {
listen 80;
server_name your-domain.com;# 改为你的域名或 IP
root /var/www/wowserver;
index index.php;
client_max_body_size 50M;
location / {
try_files $uri $uri/ /index.php?$query_string;
}
location ~ \.php$ {
fastcgi_pass unix:/run/php/php8.2-fpm.sock;
fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
include fastcgi_params;
}
# 禁止访问 config 目录
location ~ /config/ {
deny all;
}
# 禁止访问 .htaccess 等隐藏文件
location ~ /\. {
deny all;
}
}
**步骤 4:重启 Nginx**
sudo systemctl restart nginx php8.2-fpm
### 3.2 部署到 Apache
**步骤 1:启用 mod_rewrite**
sudo a2enmod rewrite
sudo systemctl restart apache2
**步骤 2:配置 VirtualHost**
<VirtualHost *:80>
ServerName your-domain.com
DocumentRoot /var/www/wowserver
<Directory /var/www/wowserver>
AllowOverride All
Require all granted
</Directory>
</VirtualHost>
**.htaccess 文件已包含在项目根目录,无需额外配置。**
### 3.3 Windows 部署(XAMPP/WAMP)
1. 将 `web` 目录下的所有文件复制到 `htdocs/wowserver/`
2. 启动 Apache + MySQL
3. 访问 `http://localhost/wowserver/`
### 3.4 修改配置文件
编辑 web/config/config.php:
<?php
return [
'db' => [
'host' => '127.0.0.1', // 数据库地址
'port' => 3306, // 数据库端口
'user' => 'root', // 数据库用户名
'password' => 'your_password',// 数据库密码
'auth_db' => 'acore_auth', // AzerothCore auth 数据库
'web_db' => 'acore_web', // Web 端额外表数据库
],
'soap' => [
'host' => '127.0.0.1', // SOAP 服务器地址
'port' => 7878, // SOAP 端口(默认 7878)
'user' => 'admin', // SOAP 用户名
'password' => 'admin', // SOAP 密码
],
'site' => [
'name' => '魔兽世界', // 网站名称
'url' => 'http://your-domain.com', // 网站 URL
],
];
---
## 四、AzerothCore 服务器配置
### 4.1 启用 SOAP 服务
编辑 authserver.conf(或 etc/authserver.conf):
# 找到并修改以下配置
SOAP.Enabled = 1
SOAP.IP = "127.0.0.1"
SOAP.Port = 7878
编辑 worldserver.conf:
# 找到并修改以下配置
SOAP.Enabled = 1
SOAP.IP = "127.0.0.1"
SOAP.Port = 7878
SOAP.User = "admin"
SOAP.Password = "your_soap_password"
> ⚠️ **重要**: SOAP 用户名和密码必须与 `web/config/config.php` 中的配置一致!
### 4.2 重启服务器
# 停止
./authserver.sh stop
./worldserver.sh stop
# 启动
./authserver.sh start
./worldserver.sh start
或直接运行可执行文件:
./authserver
./worldserver
### 4.3 验证 SOAP 是否开启
# 检查 7878 端口是否监听
netstat -tuln | grep 7878
# 或用项目自带的测试脚本
php docs/test_soap.php
---
## 五、数据库初始化
### 5.1 创建 Web 端数据库
登录 MySQL:
mysql -u root -p
执行初始化脚本:
-- 创建 Web 端数据库
CREATE DATABASE IF NOT EXISTS acore_web DEFAULT CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci;
-- 切换到 acore_web
USE acore_web;
-- 运行初始化脚本
SOURCE /path/to/web/admin/init_database.sql;
或直接运行 SQL 文件:
mysql -u root -p acore_web < web/admin/init_database.sql
### 5.2 创建的表
| 表名 | 用途 |
|------|------|
| `news` | 新闻/公告存储 |
| `user_sessions` | 用户登录会话 |
| `settings` | 网站设置(realmlist、服务器名等) |
| `admin_logs` | 管理员操作日志 |
### 5.3 验证
验证:
USE acore_web;
SHOW TABLES;
-- 应该看到:news, user_sessions, settings, admin_logs
---
## 六、登录器使用说明
### 6.1 下载与运行
1. 将 `WoWLauncher.exe` 下载到任意目录
2. **双击运行**(无需安装任何依赖)
3. 首次运行会在同目录下生成 `appsettings.json` 配置文件
### 6.2 首次设置
打开登录器后,点击 **「设置」** 按钮:
| 设置项 | 说明 | 示例 |
|--------|------|------|
| **游戏路径** | WoW 客户端安装目录 | `C:\Games\World of Warcraft` |
| **API 服务器地址** | Web 端的网址 | `http://192.168.1.100` |
| **游戏服务器地址** | Realmlist 地址 | `http://192.168.1.100` |
设置完成后点击 **「保存」**。
### 6.3 注册账号
1. 点击 **「注册账号」** 按钮
2. 填写用户名、密码、邮箱
3. 密码最少 6 个字符
4. 注册成功后会自动跳转到登录页面
### 6.4 登录游戏
1. 输入用户名和密码
2. 点击 **「登录」**
3. 登录成功后点击 **「开始游戏」**
4. 登录器会自动配置 `realmlist.wtf` 并启动游戏
### 6.5 realmlist 自动配置
登录器启动游戏前会检查游戏目录下 `Data\realmlist.wtf`:
- 如果文件不存在或内容不正确,会自动写入正确的 realmlist
- 原始文件会备份为 `realmlist.wtf.backup`
### 6.6 补丁下载
如果管理员在 Web 后台发布了新版本补丁:
1. 登录器启动时会自动检查更新
2. 弹出下载进度窗口,显示下载速度和剩余时间
3. 下载完成后自动应用补丁
4. 支持断点续传,网络中断后可继续
### 6.7 服务器状态
登录器主界面会显示:
- 🟢 在线 — 服务器正常运行
- 🔴 离线 — 服务器未启动或无法连接
- 在线玩家数量
- 每 30 秒自动刷新
---
## 七、管理后台使用
### 7.1 登录管理后台
访问:`http://your-ip/admin/login.php`
> 管理员账号需要在 `auth.account_access` 表中设置 `gmlevel >= 3`
### 7.2 管理后台功能
#### 📰 新闻管理
- 发布新公告(标题、内容、状态:草稿/发布/归档)
- 编辑已有新闻
- 删除新闻(软删除,改为归档状态)
- 登录器自动显示最新公告
#### 👥 用户管理
- 查看所有注册用户
- 搜索用户(用户名/邮箱)
- 重置用户密码
- 禁用/启用账号
- 查看用户详情
#### ⚙️ 服务器设置
- Realmlist 地址配置
- 服务器名称
- 最大玩家数
- 维护模式开关(开启后登录器显示维护提示)
- 注册功能开关
### 7.3 发布第一条新闻
1. 进入管理后台 → 新闻管理
2. 点击「发布新闻」
3. 填写标题和内容(支持简单 HTML)
4. 状态选择「已发布」
5. 保存后,登录器会自动显示
---
## 八、常见问题 (FAQ)
### Q1: 登录器提示「连接服务器失败」
**原因**:Web 端未启动或地址配置错误。
**解决**:
1. 确认 PHP Web 端可以正常访问(浏览器打开)
2. 检查登录器设置中的「API 服务器地址」是否正确
3. 确认防火墙未拦截 80/443 端口
### Q2: 注册账号失败
**原因**:SOAP 未开启或配置不正确。
**解决**:
1. 检查 `authserver.conf` 中 `SOAP.Enabled = 1`
2. 确认 `authserver` 正在运行
3. 检查 `config.php` 中的 SOAP 用户名密码是否正确
4. 测试 SOAP 连接:`php docs/test_soap.php`
### Q3: 游戏启动后卡在连接界面
**原因**:realmlist 配置错误或 authserver 未运行。
**解决**:
1. 检查游戏目录下 `Data\realmlist.wtf` 内容是否为 `set realist xxx.xxx.xxx.xxx`
2. 确认 authserver 正在运行(端口 3724 监听中)
3. 用登录器重新设置游戏服务器地址
### Q4: 登录后密码无法登录游戏
**原因**:密码加密格式不正确。
**解决**:
- AzerothCore 密码格式为 `SHA1(UPPER(username) + ':' + UPPER(password))`
- 确保用户名和密码的大小写与注册时一致
- 可以尝试通过 gameconsole 重置密码:`account set password 用户名 旧密码 新密码`
### Q5: Web 端显示「数据库连接失败」
**原因**:MySQL 未启动或配置错误。
**解决**:
1. 确认 MySQL 正在运行
2. 检查 `config.php` 中的数据库地址、用户名、密码
3. 确认 `acore_web` 数据库已创建
### Q6: 登录器打不开/闪退
**解决**:
1. 确认系统是 Windows 10/11 x64
2. 首次运行可能被 Windows Defender 拦截,点击「更多信息」→「仍要运行」
3. 尝试右键 → 以管理员身份运行
### Q7: 管理后台登录不了
**原因**:账号权限不足。
**解决**:
-- 在 MySQL 中执行,将账号设为管理员
UPDATE acore_auth.account_access SET gmlevel = 3 WHERE id = (SELECT id FROM acore_auth.account WHERE username = '你的用户名');
-- 如果 account_access 表中没有记录,需要插入
INSERT INTO acore_auth.account_access (id, gmlevel, realmid) VALUES ((SELECT id FROM acore_auth.account WHERE username = '你的用户名'), 3, -1);
---
## 九、目录结构说明
E:\Openclaw\0workspace\AzerothCore\dlq+web\
├── WoWLauncher.exe ← 登录器(单个 EXE 文件)
├── 架设攻略与使用说明.md ← 本文档
├── launcher/ ← C# WPF 登录器源码
│ ├── WoWLauncher.csproj ← 项目文件(含单文件发布配置)
│ ├── App.xaml + .cs ← 应用程序入口
│ ├── MainWindow.xaml + .cs ← 主窗口(登录界面)
│ ├── Models/ ← 数据模型
│ ├── ViewModels/ ← MVVM 视图模型
│ ├── Views/ ← WPF 视图
│ ├── Services/ ← 服务层(API、游戏、配置、补丁、新闻)
│ └── Assets/ ← 资源文件
├── web/ ← PHP Web 端
│ ├── index.php ← 首页(新闻 + 服务器状态)
│ ├── register.php ← 用户注册
│ ├── login.php ← 用户登录
│ ├── profile.php ← 个人中心
│ ├── forgot_password.php ← 忘记密码
│ ├── news.php ← 新闻详情
│ ├── logout.php ← 登出
│ ├── config/ ← 配置文件
│ │ ├── config.php ← 主配置(数据库、SOAP、网站)
│ │ ├── database_config.php← 数据库配置
│ │ └── soap_config.php ← SOAP 配置
│ ├── includes/ ← 公共文件
│ │ ├── functions.php ← 通用函数(加密、CSRF、XSS)
│ │ ├── header.php ← 页面头部模板
│ │ ├── footer.php ← 页面底部模板
│ │ ├── soap_client.php ← SOAP 客户端封装
│ │ ├── server_status.php ← 服务器状态检测
│ │ └── admin_auth.php ← 管理后台认证
│ ├── api/ ← API 接口
│ │ ├── login.php ← 登录 API
│ │ ├── register.php ← 注册 API
│ │ ├── server_status.php ← 状态 API
│ │ ├── news.php ← 新闻 API
│ │ ├── account.php ← 账户管理 API
│ │ ├── config.php ← 配置 API
│ │ └── player_info.php ← 玩家信息 API
│ ├── admin/ ← 管理后台
│ │ ├── index.php ← 管理后台首页
│ │ ├── login.php ← 管理后台登录
│ │ ├── news.php ← 新闻管理
│ │ ├── users.php ← 用户管理
│ │ ├── settings.php ← 服务器设置
│ │ ├── header.php ← 后台头部
│ │ ├── footer.php ← 后台底部
│ │ ├── sidebar.php ← 侧边栏导航
│ │ └── init_database.sql ← 数据库初始化脚本
│ ├── assets/css/ ← 样式文件
│ └── templates/ ← 模板文件
└── docs/ ← 文档
├── database-schema.sql ← Web 端数据库表结构
├── soap-test.php ← PHP SOAP 测试脚本
└── soap-test.ps1 ← PowerShell SOAP 测试脚本
---
## 🔗 相关链接
- (https://www.azerothcore.org/wiki/)
- (https://github.com/azerothcore/azerothcore-wotlk)
- [项目源码](E:\Openclaw\0workspace\AzerothCore\dlq+web\)
---
## 📝 更新日志
### v1.0 (2026-04-26)
- 初始版本发布
- C# WPF 登录器(单文件 EXE)
- PHP Web 端 + 管理后台
- SOAP API 账号管理
- 新闻公告系统
- 补丁下载/自动更新
- 三重服务器状态检测
- 全面中文化
通过网盘分享的文件:dlq+web.zip
链接: https://pan.baidu.com/s/1UGXVK-tNnbfB6OphUkJjsw?pwd=w32e 提取码: w32e
[龙虾编译]AzerothCoreWeb+登录器[源码 + 编译结果] [修改] gxfx感谢分享 电饭煲里不要放太多的水,否则,你就成了吃软饭的人。
好的帖子就应该灌水,否则……就很难找到了
软饭可以吃,水却不能不灌
这是什么 谢谢分享
感谢楼主分享 感觉好厉害的样子!虽然我看不太懂!! ::: [龙虾编译]AzerothCoreWeb+登录器[源码 + 编译结果]
页:
[1]