更新 README.md

This commit is contained in:
2025-10-18 14:05:07 +08:00
parent 26ee91d519
commit f1f864033d

838
README.md
View File

@@ -2,8 +2,836 @@
为Fuxsto-v4虚拟主机系统版本归档发布时间2025-3-7
使用方法:
- 1.git clone https://git.hztecha.com/admin/Fuxsto-V4.git
- 2.然后放入网站目录
- 3.启动nginx或apache请注意设置伪静态文件中用apache的伪静态可转成nginxhttps://www.toolnb.com/tools/rewriteTools.html
- 其他的自己摸索我只是发布希望有人能写好MD文档发我感激不尽
# Fuxsto Host V4 详细使用文档
## 📋 目录
- [项目简介](#项目简介)
- [系统要求](#系统要求)
- [安装部署](#安装部署)
- [数据库配置](#数据库配置)
- [功能模块详解](#功能模块详解)
- [API接口文档](#api接口文档)
- [管理后台使用](#管理后台使用)
- [产品模块开发](#产品模块开发)
- [系统维护](#系统维护)
- [常见问题](#常见问题)
- [更新日志](#更新日志)
## 🚀 项目简介
Fuxsto Host V4 是一个基于 PHP + MySQL 的虚拟主机管理系统,提供用户注册、产品购买、业务管理等功能。系统采用前后端分离架构,前端使用 Vue.js后端使用 PHP。
### 主要特性
- 🔐 用户认证系统(集成第三方登录)
- 💰 积分和余额双货币系统
- 📦 产品管理和购买系统
- ⏰ 自动到期提醒和清理
- 📊 用户仪表板
- 🔧 模块化产品架构
- 📧 邮件通知系统
## 💻 系统要求
### 服务器环境
- **Web服务器**: Apache 2.4+ 或 Nginx 1.18+
- **PHP版本**: PHP 7.4+ (推荐 PHP 8.0+)
- **数据库**: MySQL 5.7+ 或 MariaDB 10.3+
- **内存**: 最小 512MB推荐 1GB+
- **存储**: 最小 1GB 可用空间
### PHP扩展要求
```bash
# 必需扩展
php-mysqli
php-json
php-session
php-curl
php-mbstring
# 可选扩展(推荐)
php-gd
php-zip
php-xml
```
## 🛠️ 安装部署
### 1. 下载项目
```bash
# 方式一Git克隆
git clone https://git.hztecha.com/admin/Fuxsto-V4.git
cd Fuxsto-V4
# 方式二:直接下载解压
# 下载后解压到网站根目录
```
### 2. 文件权限设置
```bash
# Linux/Unix 系统
chmod -R 755 /path/to/fuxsto-v4/
chmod -R 777 /path/to/fuxsto-v4/Log/
# Windows 系统
# 确保 IIS_IUSRS 或 IUSR 用户有读写权限
```
### 3. Web服务器配置
#### Apache 配置
```apache
# .htaccess 文件(项目根目录)
RewriteEngine On
# 处理前端路由
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteCond %{REQUEST_URI} ^/Dashboard
RewriteRule ^Dashboard/(.*)$ /Dashboard/index.html [L]
# API路由重写
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^Main/(.+)$ /Main/$1/index.php [L]
# 静态文件缓存
<FilesMatch "\.(css|js|png|jpg|jpeg|gif|ico|svg)$">
ExpiresActive On
ExpiresDefault "access plus 1 month"
</FilesMatch>
```
#### Nginx 配置
```nginx
server {
listen 80;
server_name your-domain.com;
root /path/to/fuxsto-v4;
index index.html index.php;
# 前端路由处理
location /Dashboard {
try_files $uri $uri/ /Dashboard/index.html;
}
# API路由处理
location ~ ^/Main/(.+)$ {
try_files $uri /Main/$1/index.php;
}
# PHP处理
location ~ \.php$ {
fastcgi_pass 127.0.0.1:9000;
fastcgi_index index.php;
fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
include fastcgi_params;
}
# 静态文件缓存
location ~* \.(css|js|png|jpg|jpeg|gif|ico|svg)$ {
expires 1M;
add_header Cache-Control "public, immutable";
}
}
```
## 🗄️ 数据库配置
### 1. 创建数据库
```sql
CREATE DATABASE fuxstohostv4 CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci;
```
### 2. 创建数据表
#### 用户表 (users)
```sql
CREATE TABLE `users` (
`id` int(11) NOT NULL AUTO_INCREMENT,
`username` varchar(50) NOT NULL UNIQUE,
`password` varchar(255) NOT NULL,
`qq` varchar(20) DEFAULT NULL,
`score` int(11) DEFAULT 100,
`balance` decimal(10,2) DEFAULT 0.00,
`status` enum('active','inactive','banned') DEFAULT 'active',
`last_sign_in_date` date DEFAULT NULL,
`register_time` timestamp DEFAULT CURRENT_TIMESTAMP,
`register_ip` varchar(45) DEFAULT NULL,
PRIMARY KEY (`id`),
KEY `idx_username` (`username`),
KEY `idx_status` (`status`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4;
```
#### 产品表 (products)
```sql
CREATE TABLE `products` (
`id` int(11) NOT NULL AUTO_INCREMENT,
`product_id` varchar(50) NOT NULL UNIQUE,
`name` varchar(100) NOT NULL,
`description` text,
`price` decimal(10,2) NOT NULL,
`currency_type` enum('score','balance') DEFAULT 'score',
`stock` int(11) DEFAULT 0,
`limit_per_user` int(11) DEFAULT 1,
`subscription_period` int(11) DEFAULT 30,
`module` varchar(50) NOT NULL,
`category_1` varchar(50) DEFAULT NULL,
`category_2` varchar(50) DEFAULT NULL,
`sort_order` int(11) DEFAULT 0,
`status` enum('visible','hidden') DEFAULT 'visible',
`created_at` timestamp DEFAULT CURRENT_TIMESTAMP,
`updated_at` timestamp DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP,
PRIMARY KEY (`id`),
KEY `idx_product_id` (`product_id`),
KEY `idx_status` (`status`),
KEY `idx_category` (`category_1`, `category_2`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4;
```
#### 购买记录表 (purchases)
```sql
CREATE TABLE `purchases` (
`id` int(11) NOT NULL AUTO_INCREMENT,
`user_id` int(11) NOT NULL,
`product_id` varchar(50) NOT NULL,
`purchase_id` varchar(50) NOT NULL UNIQUE,
`name` varchar(100) NOT NULL,
`purchase_time` timestamp DEFAULT CURRENT_TIMESTAMP,
`expiry_time` datetime NOT NULL,
`status` enum('pending_activation','activated','expiring','expired') DEFAULT 'pending_activation',
`subscription_period` int(11) NOT NULL,
`extra_data` text,
PRIMARY KEY (`id`),
KEY `idx_user_id` (`user_id`),
KEY `idx_purchase_id` (`purchase_id`),
KEY `idx_status` (`status`),
KEY `idx_expiry` (`expiry_time`),
FOREIGN KEY (`user_id`) REFERENCES `users`(`id`) ON DELETE CASCADE
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4;
```
### 3. 修改数据库连接配置
编辑 <mcfile name="Hv4.Function.php" path="Main/Hv4.Function.php"></mcfile> 文件:
```php
function 数据库运行($sql) {
// 数据库连接参数 - 请修改为您的数据库信息
$servername = "localhost"; // 数据库服务器地址
$username = "your_db_username"; // 数据库用户名
$password = "your_db_password"; // 数据库密码
$dbname = "fuxstohostv4"; // 数据库名称
// 其余代码保持不变...
}
```
## 🔧 功能模块详解
### 1. 用户认证系统
#### 登录流程
1. 用户访问首页,点击登录按钮
2. 系统重定向到第三方认证服务 (auth.fuxsto.cn)
3. 用户完成认证后回调到 <mcfile name="CallBack.php" path="Main/Login/CallBack.php"></mcfile>
4. 系统自动注册新用户或登录现有用户
5. 设置 Session 并跳转到 Dashboard
#### 认证配置
<mcfile name="index.php" path="Main/Login/index.php"></mcfile> 中配置:
```php
$AppName = "Fuxsto Host V5"; // 应用名称
$AppLogo = "https://hv4.fuxsto.cn/favicon.ico"; // 应用图标
$AppInfo = "未注册的账号会自动注册!"; // 应用说明
$AppUrl = "https://hv4.fuxsto.cn"; // 应用地址
$AppCallBackUrl = "https://hv4.fuxsto.cn/Main/Login/CallBack.php"; // 回调地址
$AppField = array("qq","id","username","password","register_time","register_ip"); // 需要的字段
```
### 2. 积分和余额系统
#### 货币类型
- **积分 (score)**: 通过签到获得,用于购买免费产品
- **余额 (balance)**: 充值获得,用于购买付费产品
#### 签到系统
- 每日签到获得 80-200 随机积分
- 防止重复签到机制
- 签到状态检查:<mcfile name="CheckIn/index.php" path="Main/CheckIn/index.php"></mcfile>
### 3. 产品管理系统
#### 产品结构
```php
// 产品基本信息
$产品元数据 = [
'product_id' => 'unique_product_id',
'name' => '产品名称',
'price' => 100,
'currency_type' => 'score', // 或 'balance'
'stock' => 10,
'limit_per_user' => 1,
'subscription_period' => 30, // 天数
'module' => 'HK-FREE-EP', // 产品模块
'category_1' => '虚拟主机',
'category_2' => '免费版'
];
```
#### 购买流程
1. 用户选择产品
2. 系统检查库存和限购
3. 验证用户余额/积分
4. 扣除费用
5. 调用产品模块开通服务
6. 记录购买信息
7. 更新库存
### 4. 产品模块系统
#### 模块结构
```
ProductsModule/
└── HK-FREE-EP/ # 产品模块目录
├── Main.php # 主要功能文件
└── s.html # 产品展示页面
```
#### 模块必需函数
```php
// Main.php 中必须实现的函数
// 开通产品
function 开通产品($产品元数据, $产品唯一标识符) {
// 实现产品开通逻辑
return [
'code' => 200,
'msg' => '开通成功',
'data' => [] // 额外数据
];
}
// 展示产品
function 展示产品($业务元数据, $产品元数据) {
// 返回产品展示页面HTML
return file_get_contents('s.html');
}
// 删除业务
function 删除业务($业务元数据, $产品元数据) {
// 实现业务删除逻辑
return ['code' => 200, 'msg' => '删除成功'];
}
// 生成唯一字符串
function 唯一字符串() {
return 唯一随机字符串(10);
}
```
## 📡 API接口文档
### 基础响应格式
```json
{
"code": 200,
"msg": "操作成功或数据内容"
}
```
### 用户相关接口
#### 1. 用户信息获取
- **接口**: `GET /Main/GetInfo/`
- **说明**: 获取当前登录用户信息
- **响应**:
```json
{
"code": 200,
"msg": {
"id": 1,
"username": "testuser",
"qq": "123456789",
"score": 150,
"balance": "10.50",
"can_check": true
}
}
```
#### 2. 每日签到
- **接口**: `POST /Main/CheckIn/`
- **说明**: 用户每日签到获取积分
- **响应**:
```json
{
"code": 200,
"msg": "获得积分 120"
}
```
### 产品相关接口
#### 1. 获取商品列表
- **接口**: `GET /Main/GetGoods/`
- **说明**: 获取所有可见商品,按分类组织
- **响应**:
```json
{
"虚拟主机": {
"免费版": [
{
"product_id": "hk-free-001",
"name": "香港免费主机",
"price": "100",
"currency_type": "积分",
"stock": 10,
"description": "免费虚拟主机"
}
]
}
}
```
#### 2. 购买商品
- **接口**: `POST /Main/BuyGoods/`
- **参数**:
- `product_id`: 产品ID
- **响应**:
```json
{
"code": 200,
"msg": "开通成功"
}
```
#### 3. 获取用户产品
- **接口**: `GET /Main/GetProducts/`
- **说明**: 获取用户已购买的产品列表
- **响应**:
```json
{
"code": 200,
"msg": [
{
"purchase_id": "abc123",
"name": "香港免费主机",
"purchase_time": "2025-01-01 10:00:00",
"expiry_time": "2025-01-31 10:00:00",
"status": "activated"
}
]
}
```
#### 4. 查看产品详情
- **接口**: `GET /Main/ViewProduct/?id=purchase_id`
- **说明**: 查看具体产品的详细信息和管理界面
- **响应**: 返回产品模块的HTML页面
## 🎛️ 管理后台使用
### 访问地址
- 前台首页: `http://your-domain.com/`
- 用户仪表板: `http://your-domain.com/Dashboard/`
### Dashboard 功能
#### 1. 用户中心
- 显示用户基本信息
- 积分和余额显示
- 每日签到功能
#### 2. 产品管理
- 查看已购买产品
- 产品状态监控
- 到期时间提醒
#### 3. 商品购买
- 浏览可用商品
- 按分类筛选
- 一键购买功能
### 前端技术栈
- **Vue.js 3**: 主框架
- **Element Plus**: UI组件库
- **Axios**: HTTP请求库
- **Varlet UI**: 移动端组件库
## 🔨 产品模块开发
### 创建新产品模块
#### 1. 创建模块目录
```bash
mkdir ProductsModule/YOUR-MODULE-NAME
cd ProductsModule/YOUR-MODULE-NAME
```
#### 2. 创建 Main.php
```php
<?php
// 开通产品函数
function 开通产品($产品元数据, $产品唯一标识符) {
// 在这里实现您的产品开通逻辑
// 例如调用第三方API、创建账户等
try {
// 示例:创建虚拟主机账户
$result = createHostingAccount([
'username' => $产品唯一标识符,
'domain' => $产品元数据['name'],
'plan' => 'free'
]);
if ($result['success']) {
return [
'code' => 200,
'msg' => '开通成功',
'data' => [
'username' => $result['username'],
'password' => $result['password'],
'control_panel' => $result['cpanel_url']
]
];
} else {
return [
'code' => 500,
'msg' => '开通失败:' . $result['error']
];
}
} catch (Exception $e) {
return [
'code' => 500,
'msg' => '系统错误:' . $e->getMessage()
];
}
}
// 展示产品函数
function 展示产品($业务元数据, $产品元数据) {
// 读取展示页面模板
$html = file_get_contents(__DIR__ . '/s.html');
// 替换模板变量
$html = str_replace('<业务元数据>', json_encode($业务元数据), $html);
$html = str_replace('<产品元数据>', json_encode($产品元数据), $html);
return $html;
}
// 删除业务函数
function 删除业务($业务元数据, $产品元数据) {
try {
// 实现删除逻辑
$extra_data = json_decode($业务元数据['extra_data'], true);
// 示例:删除虚拟主机账户
$result = deleteHostingAccount($extra_data['username']);
return [
'code' => 200,
'msg' => '删除成功'
];
} catch (Exception $e) {
return [
'code' => 500,
'msg' => '删除失败:' . $e->getMessage()
];
}
}
// 生成唯一字符串
function 唯一字符串() {
return 唯一随机字符串(10);
}
?>
```
#### 3. 创建展示页面 s.html
```html
<!DOCTYPE html>
<html lang="zh-CN">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>产品管理</title>
<script src="https://cdn.fss.fuxsto.cn/d/vue@3/dist/vue.global.js"></script>
</head>
<body>
<div id="app">
<div class="product-info">
<h2>{{ productName }}</h2>
<p>购买时间: {{ purchaseTime }}</p>
<p>到期时间: {{ expiryTime }}</p>
<p>状态: {{ status }}</p>
<div v-if="productData.username">
<h3>账户信息</h3>
<p>用户名: {{ productData.username }}</p>
<p>密码: {{ productData.password }}</p>
<a :href="productData.control_panel" target="_blank">控制面板</a>
</div>
</div>
</div>
<script>
const { createApp } = Vue;
createApp({
data() {
return {
businessData: <业务元数据>,
productMeta: <产品元数据>,
productData: {}
};
},
computed: {
productName() {
return this.businessData.name;
},
purchaseTime() {
return this.businessData.purchase_time;
},
expiryTime() {
return this.businessData.expiry_time;
},
status() {
return this.businessData.status;
}
},
mounted() {
// 解析额外数据
if (this.businessData.extra_data) {
this.productData = JSON.parse(this.businessData.extra_data);
}
}
}).mount('#app');
</script>
</body>
</html>
```
### 添加产品到数据库
```sql
INSERT INTO `products` (
`product_id`, `name`, `description`, `price`, `currency_type`,
`stock`, `limit_per_user`, `subscription_period`, `module`,
`category_1`, `category_2`, `sort_order`, `status`
) VALUES (
'your-product-001',
'您的产品名称',
'产品描述',
100,
'score',
50,
1,
30,
'YOUR-MODULE-NAME',
'主分类',
'子分类',
100,
'visible'
);
```
## 🔧 系统维护
### 1. 自动化任务
#### 到期提醒任务
- **文件**: <mcfile name="ExpiryReminder.php" path="Main/System/ExpiryReminder.php"></mcfile>
- **功能**: 检查即将到期的产品,发送邮件提醒
- **运行**: 建议每天运行一次
```bash
# 添加到 crontab
0 9 * * * /usr/bin/php /path/to/fuxsto-v4/Main/System/ExpiryReminder.php
```
#### 过期产品清理
- **文件**: <mcfile name="ExpiredProductsCleaner.php" path="Main/System/ExpiredProductsCleaner.php"></mcfile>
- **功能**: 清理已过期的产品,释放资源
- **运行**: 建议每天运行一次
```bash
# 添加到 crontab
0 2 * * * /usr/bin/php /path/to/fuxsto-v4/Main/System/ExpiredProductsCleaner.php
```
### 2. 日志管理
#### 日志位置
- 到期提醒日志: `Log/ExpiryReminder/ExpiryReminder_YYYY-MM-DD.log`
- 系统日志: `Main/System/Log/`
#### 日志清理
```bash
# 清理30天前的日志
find /path/to/fuxsto-v4/Log -name "*.log" -mtime +30 -delete
```
### 3. 数据库维护
#### 定期优化
```sql
-- 优化表
OPTIMIZE TABLE users, products, purchases;
-- 清理过期数据
DELETE FROM purchases WHERE status = 'expired' AND expiry_time < NOW() - INTERVAL 30 DAY;
```
#### 备份脚本
```bash
#!/bin/bash
# 数据库备份脚本
DATE=$(date +%Y%m%d_%H%M%S)
mysqldump -u username -p password fuxstohostv4 > backup_$DATE.sql
```
### 4. 性能监控
#### 关键指标
- 数据库连接数
- 响应时间
- 错误率
- 磁盘使用率
#### 监控脚本示例
```php
<?php
// 简单的健康检查脚本
include_once "Main/Hv4.Function.php";
$health = [
'database' => false,
'disk_space' => false,
'response_time' => 0
];
// 检查数据库连接
$start_time = microtime(true);
$result = 数据库运行("SELECT 1");
$health['response_time'] = microtime(true) - $start_time;
$health['database'] = ($result !== false);
// 检查磁盘空间
$free_space = disk_free_space('.');
$total_space = disk_total_space('.');
$usage_percent = (1 - $free_space / $total_space) * 100;
$health['disk_space'] = ($usage_percent < 90);
header('Content-Type: application/json');
echo json_encode($health);
?>
```
## ❓ 常见问题
### 1. 安装问题
**Q: 数据库连接失败**
A: 检查以下几点:
- 数据库服务是否启动
- 连接参数是否正确
- 用户权限是否足够
- 防火墙是否阻止连接
**Q: 伪静态不生效**
A:
- Apache: 确保 mod_rewrite 模块已启用
- Nginx: 检查配置文件中的 rewrite 规则
- 确保 .htaccess 文件存在且可读
### 2. 功能问题
**Q: 登录后跳转到空白页**
A: 检查以下几点:
- Session 是否正常启动
- Dashboard 目录权限
- JavaScript 控制台是否有错误
**Q: 产品购买失败**
A:
- 检查库存是否充足
- 验证用户余额/积分
- 查看产品模块是否正确加载
- 检查数据库表结构
**Q: 邮件发送失败**
A:
- 检查邮件服务器配置
- 验证 SMTP 设置
- 查看邮件发送日志
### 3. 性能问题
**Q: 页面加载缓慢**
A:
- 启用 PHP OPcache
- 配置静态文件缓存
- 优化数据库查询
- 使用 CDN 加速
**Q: 数据库查询慢**
A:
- 添加适当的索引
- 优化 SQL 查询
- 定期清理过期数据
- 考虑读写分离
### 4. 安全问题
**Q: 如何防止 SQL 注入**
A:
- 使用参数化查询
- 验证和过滤用户输入
- 定期更新 PHP 版本
- 启用错误日志监控
**Q: 如何保护敏感信息**
A:
- 数据库密码使用环境变量
- 启用 HTTPS
- 定期更换密钥
- 限制文件访问权限
## 📝 更新日志
### V4.0.0 (2025-03-07)
- 🎉 初始版本发布
- ✨ 用户认证系统
- ✨ 产品管理系统
- ✨ 积分余额系统
- ✨ 自动化任务系统
- ✨ 模块化架构
### 计划功能
- 📊 管理员后台
- 💳 在线支付集成
- 📱 移动端优化
- 🔔 实时通知系统
- 📈 数据统计分析
## 🤝 技术支持
### 联系方式
- 项目地址: https://git.hztecha.com/admin/Fuxsto-V4.git
- 问题反馈: 请在项目仓库提交 Issue
- 技术交流: 加入官方QQ群
### 贡献指南
1. Fork 项目
2. 创建功能分支
3. 提交更改
4. 推送到分支
5. 创建 Pull Request
### 开源协议
本项目采用 MIT 协议,详见 LICENSE 文件。
---
**注意**: 本文档会持续更新,请关注最新版本。如有疑问或建议,欢迎提交 Issue 或 Pull Request。