509 lines
9.9 KiB
Markdown
509 lines
9.9 KiB
Markdown
|
|
# AI 虚拟恋人项目 - 运行指南
|
|||
|
|
|
|||
|
|
## 📋 目录
|
|||
|
|
- [系统要求](#系统要求)
|
|||
|
|
- [快速启动](#快速启动)
|
|||
|
|
- [详细安装步骤](#详细安装步骤)
|
|||
|
|
- [配置说明](#配置说明)
|
|||
|
|
- [常见问题](#常见问题)
|
|||
|
|
- [开发调试](#开发调试)
|
|||
|
|
|
|||
|
|
---
|
|||
|
|
|
|||
|
|
## 🖥️ 系统要求
|
|||
|
|
|
|||
|
|
### 必需环境
|
|||
|
|
- **操作系统**: Windows 10/11
|
|||
|
|
- **PHP**: 8.0+ (推荐 8.0.0)
|
|||
|
|
- **Python**: 3.8+ (推荐 3.9+)
|
|||
|
|
- **MySQL**: 5.7+ 或 8.0+
|
|||
|
|
- **Composer**: 最新版本
|
|||
|
|
- **浏览器**: Chrome/Edge (现代浏览器)
|
|||
|
|
|
|||
|
|
### 可选工具
|
|||
|
|
- Git (版本控制)
|
|||
|
|
- Postman (API 测试)
|
|||
|
|
|
|||
|
|
---
|
|||
|
|
|
|||
|
|
## 🚀 快速启动
|
|||
|
|
|
|||
|
|
### 方式一:使用启动脚本(推荐)
|
|||
|
|
|
|||
|
|
1. **修改启动脚本配置**
|
|||
|
|
|
|||
|
|
打开 `启动项目.bat`,修改 PHP 路径:
|
|||
|
|
```batch
|
|||
|
|
set PHP_PATH=D:\2_part\php-8.0.0-Win32-vs16-x64\php.exe
|
|||
|
|
```
|
|||
|
|
改为你的 PHP 安装路径
|
|||
|
|
|
|||
|
|
2. **双击运行**
|
|||
|
|
```
|
|||
|
|
启动项目.bat
|
|||
|
|
```
|
|||
|
|
|
|||
|
|
3. **访问服务**
|
|||
|
|
- PHP 后台: http://127.0.0.1:30100
|
|||
|
|
- Python API: http://127.0.0.1:30101
|
|||
|
|
- API 文档: http://127.0.0.1:30101/docs
|
|||
|
|
|
|||
|
|
### 方式二:手动启动
|
|||
|
|
|
|||
|
|
#### 启动 PHP 后台
|
|||
|
|
```cmd
|
|||
|
|
cd xunifriend_RaeeC\public
|
|||
|
|
php -S 0.0.0.0:30100 router.php
|
|||
|
|
```
|
|||
|
|
|
|||
|
|
#### 启动 Python 后端
|
|||
|
|
```cmd
|
|||
|
|
cd 项目根目录
|
|||
|
|
python -m uvicorn lover.main:app --host 0.0.0.0 --port 30101 --reload
|
|||
|
|
```
|
|||
|
|
|
|||
|
|
---
|
|||
|
|
|
|||
|
|
## 📦 详细安装步骤
|
|||
|
|
|
|||
|
|
### 第一步:安装 PHP
|
|||
|
|
|
|||
|
|
1. 下载 PHP 8.0+
|
|||
|
|
- 官网: https://windows.php.net/download/
|
|||
|
|
- 选择 Thread Safe 版本
|
|||
|
|
|
|||
|
|
2. 解压到目录(如 `D:\php-8.0.0`)
|
|||
|
|
|
|||
|
|
3. 配置 php.ini
|
|||
|
|
```ini
|
|||
|
|
; 启用必需扩展
|
|||
|
|
extension=curl
|
|||
|
|
extension=fileinfo
|
|||
|
|
extension=gd
|
|||
|
|
extension=mbstring
|
|||
|
|
extension=mysqli
|
|||
|
|
extension=openssl
|
|||
|
|
extension=pdo_mysql
|
|||
|
|
extension=zip
|
|||
|
|
|
|||
|
|
; 设置时区
|
|||
|
|
date.timezone = Asia/Shanghai
|
|||
|
|
|
|||
|
|
; 上传限制
|
|||
|
|
upload_max_filesize = 100M
|
|||
|
|
post_max_size = 100M
|
|||
|
|
```
|
|||
|
|
|
|||
|
|
4. 添加到系统 PATH(可选)
|
|||
|
|
|
|||
|
|
### 第二步:安装 Python
|
|||
|
|
|
|||
|
|
1. 下载 Python 3.9+
|
|||
|
|
- 官网: https://www.python.org/downloads/
|
|||
|
|
|
|||
|
|
2. 安装时勾选 "Add Python to PATH"
|
|||
|
|
|
|||
|
|
3. 验证安装
|
|||
|
|
```cmd
|
|||
|
|
python --version
|
|||
|
|
pip --version
|
|||
|
|
```
|
|||
|
|
|
|||
|
|
### 第三步:安装 MySQL
|
|||
|
|
|
|||
|
|
1. 下载 MySQL 8.0+
|
|||
|
|
- 官网: https://dev.mysql.com/downloads/mysql/
|
|||
|
|
|
|||
|
|
2. 安装并设置 root 密码
|
|||
|
|
|
|||
|
|
3. 创建数据库
|
|||
|
|
```sql
|
|||
|
|
CREATE DATABASE fastadmin CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci;
|
|||
|
|
CREATE USER 'fastadmin'@'localhost' IDENTIFIED BY 'your_password';
|
|||
|
|
GRANT ALL PRIVILEGES ON fastadmin.* TO 'fastadmin'@'localhost';
|
|||
|
|
FLUSH PRIVILEGES;
|
|||
|
|
```
|
|||
|
|
|
|||
|
|
### 第四步:安装项目依赖
|
|||
|
|
|
|||
|
|
#### PHP 依赖
|
|||
|
|
```cmd
|
|||
|
|
cd xunifriend_RaeeC
|
|||
|
|
composer install
|
|||
|
|
```
|
|||
|
|
|
|||
|
|
如果 composer 很慢,切换国内镜像:
|
|||
|
|
```cmd
|
|||
|
|
composer config -g repo.packagist composer https://mirrors.aliyun.com/composer/
|
|||
|
|
```
|
|||
|
|
|
|||
|
|
#### Python 依赖
|
|||
|
|
```cmd
|
|||
|
|
cd 项目根目录
|
|||
|
|
pip install -r lover/requirements.txt
|
|||
|
|
```
|
|||
|
|
|
|||
|
|
如果 pip 很慢,使用国内镜像:
|
|||
|
|
```cmd
|
|||
|
|
pip install -r lover/requirements.txt -i https://pypi.tuna.tsinghua.edu.cn/simple
|
|||
|
|
```
|
|||
|
|
|
|||
|
|
### 第五步:配置环境变量
|
|||
|
|
|
|||
|
|
#### 1. 配置根目录 .env
|
|||
|
|
```env
|
|||
|
|
# 应用环境
|
|||
|
|
APP_ENV=development
|
|||
|
|
DEBUG=True
|
|||
|
|
|
|||
|
|
# 数据库配置(修改为你的数据库信息)
|
|||
|
|
DATABASE_URL=mysql+pymysql://fastadmin:your_password@localhost:3306/fastadmin?charset=utf8mb4
|
|||
|
|
|
|||
|
|
# PHP 后台地址
|
|||
|
|
USER_INFO_API=http://127.0.0.1:30100/api/user_basic/get_user_basic
|
|||
|
|
|
|||
|
|
# 阿里云 DashScope API(必需,用于 AI 功能)
|
|||
|
|
DASHSCOPE_API_KEY=your_dashscope_api_key
|
|||
|
|
|
|||
|
|
# OSS 配置(必需,用于文件存储)
|
|||
|
|
ALIYUN_OSS_ACCESS_KEY_ID=your_access_key_id
|
|||
|
|
ALIYUN_OSS_ACCESS_KEY_SECRET=your_access_key_secret
|
|||
|
|
ALIYUN_OSS_BUCKET_NAME=your_bucket_name
|
|||
|
|
ALIYUN_OSS_ENDPOINT=https://oss-cn-hangzhou.aliyuncs.com
|
|||
|
|
ALIYUN_OSS_CDN_DOMAIN=https://your_bucket.oss-cn-hangzhou.aliyuncs.com
|
|||
|
|
```
|
|||
|
|
|
|||
|
|
#### 2. 配置 lover/.env
|
|||
|
|
```env
|
|||
|
|
DATABASE_URL=mysql+pymysql://fastadmin:your_password@localhost:3306/fastadmin?charset=utf8mb4
|
|||
|
|
USER_INFO_API=http://127.0.0.1:30100/api/user_basic/get_user_basic
|
|||
|
|
```
|
|||
|
|
|
|||
|
|
#### 3. 配置 xunifriend_RaeeC/.env
|
|||
|
|
```env
|
|||
|
|
app_debug = true
|
|||
|
|
app_trace = false
|
|||
|
|
|
|||
|
|
[database]
|
|||
|
|
type = mysql
|
|||
|
|
hostname = localhost
|
|||
|
|
database = fastadmin
|
|||
|
|
username = fastadmin
|
|||
|
|
password = your_password
|
|||
|
|
hostport = 3306
|
|||
|
|
charset = utf8mb4
|
|||
|
|
prefix = nf_
|
|||
|
|
debug = true
|
|||
|
|
```
|
|||
|
|
|
|||
|
|
### 第六步:导入数据库
|
|||
|
|
|
|||
|
|
1. 找到数据库 SQL 文件(通常在项目根目录或 docs 文件夹)
|
|||
|
|
|
|||
|
|
2. 导入数据库
|
|||
|
|
```cmd
|
|||
|
|
mysql -u fastadmin -p fastadmin < database.sql
|
|||
|
|
```
|
|||
|
|
|
|||
|
|
3. 或使用 phpMyAdmin / Navicat 等工具导入
|
|||
|
|
|
|||
|
|
### 第七步:设置文件权限
|
|||
|
|
|
|||
|
|
确保以下目录可写:
|
|||
|
|
```
|
|||
|
|
xunifriend_RaeeC/runtime/
|
|||
|
|
xunifriend_RaeeC/public/uploads/
|
|||
|
|
public/tts/
|
|||
|
|
```
|
|||
|
|
|
|||
|
|
Windows 下通常不需要特殊设置。
|
|||
|
|
|
|||
|
|
---
|
|||
|
|
|
|||
|
|
## ⚙️ 配置说明
|
|||
|
|
|
|||
|
|
### 核心配置项
|
|||
|
|
|
|||
|
|
#### 数据库配置
|
|||
|
|
```env
|
|||
|
|
DATABASE_URL=mysql+pymysql://用户名:密码@主机:端口/数据库名?charset=utf8mb4
|
|||
|
|
```
|
|||
|
|
|
|||
|
|
#### AI 服务配置
|
|||
|
|
|
|||
|
|
**阿里云 DashScope(必需)**
|
|||
|
|
- 注册地址: https://dashscope.console.aliyun.com/
|
|||
|
|
- 获取 API Key 后填入 `DASHSCOPE_API_KEY`
|
|||
|
|
- 用于:AI 对话、图像生成、语音合成、视频生成
|
|||
|
|
|
|||
|
|
**OSS 对象存储(必需)**
|
|||
|
|
- 用于存储用户上传的图片、音频、视频
|
|||
|
|
- 需要在阿里云开通 OSS 服务
|
|||
|
|
- 配置项:
|
|||
|
|
- `ALIYUN_OSS_ACCESS_KEY_ID`
|
|||
|
|
- `ALIYUN_OSS_ACCESS_KEY_SECRET`
|
|||
|
|
- `ALIYUN_OSS_BUCKET_NAME`
|
|||
|
|
- `ALIYUN_OSS_ENDPOINT`
|
|||
|
|
|
|||
|
|
#### 可选配置
|
|||
|
|
|
|||
|
|
**微信小程序**
|
|||
|
|
```env
|
|||
|
|
WECHAT_APP_ID=your_app_id
|
|||
|
|
WECHAT_APP_SECRET=your_app_secret
|
|||
|
|
```
|
|||
|
|
|
|||
|
|
**微信支付**
|
|||
|
|
```env
|
|||
|
|
WECHAT_PAY_MCHID=your_mchid
|
|||
|
|
WECHAT_PAY_API_V3_KEY=your_api_v3_key
|
|||
|
|
```
|
|||
|
|
|
|||
|
|
**环信 IM**
|
|||
|
|
- 在 PHP 后台配置
|
|||
|
|
|
|||
|
|
---
|
|||
|
|
|
|||
|
|
## 🐛 常见问题
|
|||
|
|
|
|||
|
|
### 1. 端口被占用
|
|||
|
|
|
|||
|
|
**错误信息**: `Address already in use`
|
|||
|
|
|
|||
|
|
**解决方法**:
|
|||
|
|
```cmd
|
|||
|
|
# 查看占用端口的进程
|
|||
|
|
netstat -ano | findstr :30100
|
|||
|
|
netstat -ano | findstr :30101
|
|||
|
|
|
|||
|
|
# 终止进程(PID 为上面查到的进程号)
|
|||
|
|
taskkill /F /PID 进程号
|
|||
|
|
```
|
|||
|
|
|
|||
|
|
### 2. 数据库连接失败
|
|||
|
|
|
|||
|
|
**错误信息**: `OperationalError: (2003, "Can't connect to MySQL server")`
|
|||
|
|
|
|||
|
|
**检查清单**:
|
|||
|
|
- [ ] MySQL 服务是否启动
|
|||
|
|
- [ ] 数据库用户名密码是否正确
|
|||
|
|
- [ ] 数据库名称是否存在
|
|||
|
|
- [ ] 防火墙是否阻止连接
|
|||
|
|
|
|||
|
|
**解决方法**:
|
|||
|
|
```cmd
|
|||
|
|
# 检查 MySQL 服务
|
|||
|
|
net start MySQL80
|
|||
|
|
|
|||
|
|
# 测试连接
|
|||
|
|
mysql -u fastadmin -p
|
|||
|
|
```
|
|||
|
|
|
|||
|
|
### 3. Python 依赖安装失败
|
|||
|
|
|
|||
|
|
**错误信息**: `ERROR: Could not find a version that satisfies the requirement`
|
|||
|
|
|
|||
|
|
**解决方法**:
|
|||
|
|
```cmd
|
|||
|
|
# 升级 pip
|
|||
|
|
python -m pip install --upgrade pip
|
|||
|
|
|
|||
|
|
# 使用国内镜像
|
|||
|
|
pip install -r lover/requirements.txt -i https://pypi.tuna.tsinghua.edu.cn/simple
|
|||
|
|
```
|
|||
|
|
|
|||
|
|
### 4. PHP 扩展缺失
|
|||
|
|
|
|||
|
|
**错误信息**: `Call to undefined function mysqli_connect()`
|
|||
|
|
|
|||
|
|
**解决方法**:
|
|||
|
|
1. 打开 `php.ini`
|
|||
|
|
2. 取消注释(删除前面的分号):
|
|||
|
|
```ini
|
|||
|
|
extension=mysqli
|
|||
|
|
extension=pdo_mysql
|
|||
|
|
```
|
|||
|
|
3. 重启 PHP 服务
|
|||
|
|
|
|||
|
|
### 5. Composer 安装慢
|
|||
|
|
|
|||
|
|
**解决方法**:
|
|||
|
|
```cmd
|
|||
|
|
# 切换阿里云镜像
|
|||
|
|
composer config -g repo.packagist composer https://mirrors.aliyun.com/composer/
|
|||
|
|
|
|||
|
|
# 重新安装
|
|||
|
|
composer install
|
|||
|
|
```
|
|||
|
|
|
|||
|
|
### 6. 跨域问题
|
|||
|
|
|
|||
|
|
如果前端访问 API 出现跨域错误,检查 `lover/main.py` 中的 CORS 配置:
|
|||
|
|
```python
|
|||
|
|
app.add_middleware(
|
|||
|
|
CORSMiddleware,
|
|||
|
|
allow_origins=[
|
|||
|
|
"http://localhost:5173", # 添加你的前端地址
|
|||
|
|
],
|
|||
|
|
allow_credentials=True,
|
|||
|
|
allow_methods=["*"],
|
|||
|
|
allow_headers=["*"],
|
|||
|
|
)
|
|||
|
|
```
|
|||
|
|
|
|||
|
|
### 7. TTS 音频无法访问
|
|||
|
|
|
|||
|
|
**问题**: 生成的语音文件 404
|
|||
|
|
|
|||
|
|
**解决方法**:
|
|||
|
|
1. 确保 `public/tts/` 目录存在且可写
|
|||
|
|
2. 检查 OSS 配置是否正确
|
|||
|
|
3. 查看 Python 日志确认文件是否上传成功
|
|||
|
|
|
|||
|
|
---
|
|||
|
|
|
|||
|
|
## 🔧 开发调试
|
|||
|
|
|
|||
|
|
### 查看日志
|
|||
|
|
|
|||
|
|
#### Python 日志
|
|||
|
|
```cmd
|
|||
|
|
# 启动时会在控制台输出日志
|
|||
|
|
python -m uvicorn lover.main:app --host 0.0.0.0 --port 30101 --reload --log-level debug
|
|||
|
|
```
|
|||
|
|
|
|||
|
|
#### PHP 日志
|
|||
|
|
```
|
|||
|
|
xunifriend_RaeeC/runtime/log/
|
|||
|
|
```
|
|||
|
|
|
|||
|
|
### API 测试
|
|||
|
|
|
|||
|
|
#### 使用 FastAPI 自动文档
|
|||
|
|
访问: http://127.0.0.1:30101/docs
|
|||
|
|
|
|||
|
|
可以直接在浏览器中测试所有 API 接口
|
|||
|
|
|
|||
|
|
#### 使用 Postman
|
|||
|
|
|
|||
|
|
1. 导入 API 集合(如果有)
|
|||
|
|
2. 设置环境变量:
|
|||
|
|
- `base_url`: http://127.0.0.1:30101
|
|||
|
|
- `token`: 从登录接口获取
|
|||
|
|
|
|||
|
|
### 调试模式
|
|||
|
|
|
|||
|
|
#### 开发环境配置
|
|||
|
|
```env
|
|||
|
|
APP_ENV=development
|
|||
|
|
DEBUG=True
|
|||
|
|
```
|
|||
|
|
|
|||
|
|
开发模式下:
|
|||
|
|
- 自动跳过部分认证检查
|
|||
|
|
- 显示详细错误信息
|
|||
|
|
- 支持热重载
|
|||
|
|
|
|||
|
|
#### 测试用户
|
|||
|
|
开发模式下可以使用测试用户 ID:
|
|||
|
|
```
|
|||
|
|
X-User-Id: 70
|
|||
|
|
```
|
|||
|
|
|
|||
|
|
### 数据库管理
|
|||
|
|
|
|||
|
|
推荐工具:
|
|||
|
|
- **Navicat** (商业软件)
|
|||
|
|
- **DBeaver** (免费开源)
|
|||
|
|
- **phpMyAdmin** (Web 界面)
|
|||
|
|
|
|||
|
|
### 性能监控
|
|||
|
|
|
|||
|
|
#### 查看数据库连接池
|
|||
|
|
```python
|
|||
|
|
# 在 lover/db.py 中添加日志
|
|||
|
|
import logging
|
|||
|
|
logger = logging.getLogger("sqlalchemy.pool")
|
|||
|
|
logger.setLevel(logging.DEBUG)
|
|||
|
|
```
|
|||
|
|
|
|||
|
|
#### 查看 API 响应时间
|
|||
|
|
FastAPI 自动在响应头中包含处理时间
|
|||
|
|
|
|||
|
|
---
|
|||
|
|
|
|||
|
|
## 📞 技术支持
|
|||
|
|
|
|||
|
|
### 相关文档
|
|||
|
|
- FastAPI: https://fastapi.tiangolo.com/
|
|||
|
|
- ThinkPHP: https://www.thinkphp.cn/
|
|||
|
|
- 阿里云 DashScope: https://help.aliyun.com/zh/dashscope/
|
|||
|
|
|
|||
|
|
### 常用命令
|
|||
|
|
|
|||
|
|
```cmd
|
|||
|
|
# 查看 Python 版本
|
|||
|
|
python --version
|
|||
|
|
|
|||
|
|
# 查看 PHP 版本
|
|||
|
|
php -v
|
|||
|
|
|
|||
|
|
# 查看已安装的 Python 包
|
|||
|
|
pip list
|
|||
|
|
|
|||
|
|
# 查看 Composer 包
|
|||
|
|
composer show
|
|||
|
|
|
|||
|
|
# 清理 Python 缓存
|
|||
|
|
find . -type d -name __pycache__ -exec rm -rf {} +
|
|||
|
|
|
|||
|
|
# 清理 PHP 缓存
|
|||
|
|
cd xunifriend_RaeeC
|
|||
|
|
php think clear
|
|||
|
|
```
|
|||
|
|
|
|||
|
|
---
|
|||
|
|
|
|||
|
|
## 🎯 下一步
|
|||
|
|
|
|||
|
|
项目启动成功后,你可以:
|
|||
|
|
|
|||
|
|
1. **访问管理后台**
|
|||
|
|
- URL: http://127.0.0.1:30100/admin
|
|||
|
|
- 默认账号密码查看数据库 `nf_admin` 表
|
|||
|
|
|
|||
|
|
2. **查看 API 文档**
|
|||
|
|
- URL: http://127.0.0.1:30101/docs
|
|||
|
|
- 测试各个接口功能
|
|||
|
|
|
|||
|
|
3. **配置微信小程序**
|
|||
|
|
- 修改小程序 API 地址
|
|||
|
|
- 配置 AppID 和 AppSecret
|
|||
|
|
|
|||
|
|
4. **测试核心功能**
|
|||
|
|
- 用户注册登录
|
|||
|
|
- 创建虚拟恋人
|
|||
|
|
- AI 对话
|
|||
|
|
- 图像生成
|
|||
|
|
- 语音通话
|
|||
|
|
|
|||
|
|
---
|
|||
|
|
|
|||
|
|
## ⚠️ 生产环境部署
|
|||
|
|
|
|||
|
|
生产环境需要额外配置:
|
|||
|
|
|
|||
|
|
1. **使用 Nginx 反向代理**
|
|||
|
|
2. **配置 HTTPS 证书**
|
|||
|
|
3. **使用 Supervisor 管理进程**
|
|||
|
|
4. **配置 Redis 缓存**
|
|||
|
|
5. **设置日志轮转**
|
|||
|
|
6. **配置数据库主从复制**
|
|||
|
|
7. **启用 CDN 加速**
|
|||
|
|
|
|||
|
|
详细部署文档请参考 `部署指南.md`(如果有)
|
|||
|
|
|
|||
|
|
---
|
|||
|
|
|
|||
|
|
**祝你使用愉快!** 🎉
|