- 精华
- 阅读权限
- 100
- 贡献
- 人
- 好友
- 相册
- 分享
- 听众
- 收听
- 注册时间
- 2020-10-16
- 在线时间
- 小时
- 最后登录
- 1970-1-1
|
点击查看AZ原帖
注意 未由人类测试 也不会持续更新
引用 GitHub 多个项目经验 与 文件结构 但未测试 如有问题 自己折腾
# 🐉 魔兽世界 WoTLK 3.0.0 — Web 架设攻略 + 登录器使用指南
> **作者**: 龙虾
> **版本**: v1.0
> **更新日期**: 2026-04-26
> **适用版本**: AzerothCore WoTLK 3.0.0
---
## 📑 目录
1. [项目简介](#一项目简介)
2. [环境要求](#二环境要求)
3. [Web 端架设攻略](#三web-端架设攻略)
4. [AzerothCore 服务器配置](#四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:
执行初始化脚本:
- -- 创建 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 测试脚本
复制代码
---
## 🔗 相关链接
- [AzerothCore 官方文档](https://www.azerothcore.org/wiki/)
- [AzerothCore GitHub](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
|
|