Files
Fuxsto-V4/README.md
2025-10-18 14:05:07 +08:00

837 lines
20 KiB
Markdown
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

# Fuxsto-V4
为Fuxsto-v4虚拟主机系统版本归档发布时间2025-3-7
# 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。