zzy0081 发表于 2026-4-26 17:44:34

[龙虾编译]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 服务器状态

登录器主界面会显示:
- &#128994; 在线 — 服务器正常运行
- &#128308; 离线 — 服务器未启动或无法连接
- 在线玩家数量
- 每 30 秒自动刷新

---

## 七、管理后台使用

### 7.1 登录管理后台

访问:`http://your-ip/admin/login.php`

> 管理员账号需要在 `auth.account_access` 表中设置 `gmlevel >= 3`

### 7.2 管理后台功能

#### &#128240; 新闻管理
- 发布新公告(标题、内容、状态:草稿/发布/归档)
- 编辑已有新闻
- 删除新闻(软删除,改为归档状态)
- 登录器自动显示最新公告

#### &#128101; 用户管理
- 查看所有注册用户
- 搜索用户(用户名/邮箱)
- 重置用户密码
- 禁用/启用账号
- 查看用户详情

#### ⚙️ 服务器设置
- 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 测试脚本


---

## &#128279; 相关链接

- (https://www.azerothcore.org/wiki/)
- (https://github.com/azerothcore/azerothcore-wotlk)
- [项目源码](E:\Openclaw\0workspace\AzerothCore\dlq+web\)

---

## &#128221; 更新日志

### 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

a65502622 发表于 2026-4-26 18:10:18

[龙虾编译]AzerothCoreWeb+登录器[源码 + 编译结果] [修改]

lel202 发表于 2026-4-26 21:47:00

gxfx感谢分享

chianpan 发表于 2026-4-27 00:06:55

电饭煲里不要放太多的水,否则,你就成了吃软饭的人。
好的帖子就应该灌水,否则……就很难找到了
软饭可以吃,水却不能不灌

a8608779 发表于 2026-4-27 00:12:11

这是什么

a894834062 发表于 2026-4-27 00:26:02

谢谢分享

yf01118 发表于 2026-4-27 08:45:35


感谢楼主分享

1505006339 发表于 2026-4-27 09:43:13

感觉好厉害的样子!虽然我看不太懂!!

水晶月 发表于 2026-4-27 13:27:54

:::

xyz7220633 发表于 2026-4-28 14:19:49

[龙虾编译]AzerothCoreWeb+登录器[源码 + 编译结果]                                                                                    
页: [1]
查看完整版本: [龙虾编译]AzerothCoreWeb+登录器[源码 + 编译结果]

本站内容如若侵犯到您的权益,请来电来函告知,我们会尽快处理!
联系QQ:1953150286,2251387361,123784736,免责申明