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

20 KiB
Raw Permalink Blame History

Fuxsto-V4

为Fuxsto-v4虚拟主机系统版本归档发布时间2025-3-7

Fuxsto Host V4 详细使用文档

📋 目录

🚀 项目简介

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扩展要求

# 必需扩展
php-mysqli
php-json
php-session
php-curl
php-mbstring

# 可选扩展(推荐)
php-gd
php-zip
php-xml

🛠️ 安装部署

1. 下载项目

# 方式一Git克隆
git clone https://git.hztecha.com/admin/Fuxsto-V4.git
cd Fuxsto-V4

# 方式二:直接下载解压
# 下载后解压到网站根目录

2. 文件权限设置

# Linux/Unix 系统
chmod -R 755 /path/to/fuxsto-v4/
chmod -R 777 /path/to/fuxsto-v4/Log/

# Windows 系统
# 确保 IIS_IUSRS 或 IUSR 用户有读写权限

3. Web服务器配置

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 配置

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. 创建数据库

CREATE DATABASE fuxstohostv4 CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci;

2. 创建数据表

用户表 (users)

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)

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)

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. 修改数据库连接配置

编辑 文件:

function 数据库运行($sql) {
    // 数据库连接参数 - 请修改为您的数据库信息
    $servername = "localhost";        // 数据库服务器地址
    $username = "your_db_username";   // 数据库用户名
    $password = "your_db_password";   // 数据库密码
    $dbname = "fuxstohostv4";        // 数据库名称

    // 其余代码保持不变...
}

🔧 功能模块详解

1. 用户认证系统

登录流程

  1. 用户访问首页,点击登录按钮
  2. 系统重定向到第三方认证服务 (auth.fuxsto.cn)
  3. 用户完成认证后回调到
  4. 系统自动注册新用户或登录现有用户
  5. 设置 Session 并跳转到 Dashboard

认证配置

在 中配置:

$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 随机积分
  • 防止重复签到机制
  • 签到状态检查:

3. 产品管理系统

产品结构

// 产品基本信息
$产品元数据 = [
    '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           # 产品展示页面

模块必需函数

// 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接口文档

基础响应格式

{
    "code": 200,
    "msg": "操作成功或数据内容"
}

用户相关接口

1. 用户信息获取

  • 接口: GET /Main/GetInfo/
  • 说明: 获取当前登录用户信息
  • 响应:
{
    "code": 200,
    "msg": {
        "id": 1,
        "username": "testuser",
        "qq": "123456789",
        "score": 150,
        "balance": "10.50",
        "can_check": true
    }
}

2. 每日签到

  • 接口: POST /Main/CheckIn/
  • 说明: 用户每日签到获取积分
  • 响应:
{
    "code": 200,
    "msg": "获得积分 120"
}

产品相关接口

1. 获取商品列表

  • 接口: GET /Main/GetGoods/
  • 说明: 获取所有可见商品,按分类组织
  • 响应:
{
    "虚拟主机": {
        "免费版": [
            {
                "product_id": "hk-free-001",
                "name": "香港免费主机",
                "price": "100",
                "currency_type": "积分",
                "stock": 10,
                "description": "免费虚拟主机"
            }
        ]
    }
}

2. 购买商品

  • 接口: POST /Main/BuyGoods/
  • 参数:
    • product_id: 产品ID
  • 响应:
{
    "code": 200,
    "msg": "开通成功"
}

3. 获取用户产品

  • 接口: GET /Main/GetProducts/
  • 说明: 获取用户已购买的产品列表
  • 响应:
{
    "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. 创建模块目录

mkdir ProductsModule/YOUR-MODULE-NAME
cd ProductsModule/YOUR-MODULE-NAME

2. 创建 Main.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

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

添加产品到数据库

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. 自动化任务

到期提醒任务

  • 文件:
  • 功能: 检查即将到期的产品,发送邮件提醒
  • 运行: 建议每天运行一次
# 添加到 crontab
0 9 * * * /usr/bin/php /path/to/fuxsto-v4/Main/System/ExpiryReminder.php

过期产品清理

  • 文件:
  • 功能: 清理已过期的产品,释放资源
  • 运行: 建议每天运行一次
# 添加到 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/

日志清理

# 清理30天前的日志
find /path/to/fuxsto-v4/Log -name "*.log" -mtime +30 -delete

3. 数据库维护

定期优化

-- 优化表
OPTIMIZE TABLE users, products, purchases;

-- 清理过期数据
DELETE FROM purchases WHERE status = 'expired' AND expiry_time < NOW() - INTERVAL 30 DAY;

备份脚本

#!/bin/bash
# 数据库备份脚本
DATE=$(date +%Y%m%d_%H%M%S)
mysqldump -u username -p password fuxstohostv4 > backup_$DATE.sql

4. 性能监控

关键指标

  • 数据库连接数
  • 响应时间
  • 错误率
  • 磁盘使用率

监控脚本示例

<?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)

  • 🎉 初始版本发布
  • 用户认证系统
  • 产品管理系统
  • 积分余额系统
  • 自动化任务系统
  • 模块化架构

计划功能

  • 📊 管理员后台
  • 💳 在线支付集成
  • 📱 移动端优化
  • 🔔 实时通知系统
  • 📈 数据统计分析

🤝 技术支持

联系方式

贡献指南

  1. Fork 项目
  2. 创建功能分支
  3. 提交更改
  4. 推送到分支
  5. 创建 Pull Request

开源协议

本项目采用 MIT 协议,详见 LICENSE 文件。


注意: 本文档会持续更新,请关注最新版本。如有疑问或建议,欢迎提交 Issue 或 Pull Request。