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`(如果有)
|
||
|
||
---
|
||
|
||
**祝你使用愉快!** 🎉
|