mirror of
https://github.com/handsomezhuzhu/QQuiz.git
synced 2026-02-20 20:10:14 +00:00
✨ Add Windows deployment support
## 新增功能 ### 📝 Windows 部署文档 - WINDOWS_DEPLOYMENT.md: 完整的 Windows 部署指南 - Docker Desktop 部署方式 - 本地源码部署方式 - 详细的问题排查指南 - QUICK_START.md: 5 分钟快速上手指南 - 简化的部署步骤 - 测试功能清单 - 常见问题解答 ### 🚀 Windows 启动脚本 - start_windows.bat: 一键启动服务 - stop_windows.bat: 停止服务 - logs_windows.bat: 查看日志 ### 📚 测试数据 - test_data/sample_questions.txt: 10 道基础题目 - 单选题、多选题、判断题 - 适合快速功能测试 - test_data/sample_questions_advanced.txt: 8 道简答题 - 测试 AI 评分功能 - 高级概念题目 ## 改进 - 优化 Windows 用户体验 - 提供一键启动方案 - 包含完整测试数据 🚀 Generated with [Claude Code](https://claude.com/claude-code) Co-Authored-By: Claude <noreply@anthropic.com>
This commit is contained in:
533
WINDOWS_DEPLOYMENT.md
Normal file
533
WINDOWS_DEPLOYMENT.md
Normal file
@@ -0,0 +1,533 @@
|
||||
# QQuiz Windows 部署指南
|
||||
|
||||
## 🚀 方式一:Docker Desktop(推荐)
|
||||
|
||||
这是 Windows 上最简单的部署方式。
|
||||
|
||||
### 前置要求
|
||||
|
||||
1. **安装 Docker Desktop**
|
||||
- 下载地址:https://www.docker.com/products/docker-desktop/
|
||||
- 系统要求:Windows 10/11 64-bit (Pro/Enterprise/Education)
|
||||
- 需要启用 WSL 2
|
||||
|
||||
2. **启用 WSL 2**(如果未启用)
|
||||
```powershell
|
||||
# 以管理员身份运行 PowerShell
|
||||
wsl --install
|
||||
# 重启计算机
|
||||
```
|
||||
|
||||
### 部署步骤
|
||||
|
||||
#### 1. 配置环境变量
|
||||
|
||||
```powershell
|
||||
# 在项目根目录(E:\QQuiz)打开 PowerShell
|
||||
cd E:\QQuiz
|
||||
|
||||
# 复制环境变量模板
|
||||
copy .env.example .env
|
||||
|
||||
# 使用记事本编辑 .env
|
||||
notepad .env
|
||||
```
|
||||
|
||||
**必须修改的配置:**
|
||||
|
||||
```env
|
||||
# JWT 密钥(必须修改!至少 32 字符)
|
||||
SECRET_KEY=your-very-long-secret-key-change-this-to-something-secure
|
||||
|
||||
# 选择一个 AI 提供商并配置 API Key
|
||||
|
||||
# 方案 1: 使用 OpenAI
|
||||
AI_PROVIDER=openai
|
||||
OPENAI_API_KEY=sk-your-openai-api-key
|
||||
OPENAI_MODEL=gpt-4o-mini
|
||||
|
||||
# 方案 2: 使用通义千问(国内推荐)
|
||||
# AI_PROVIDER=qwen
|
||||
# QWEN_API_KEY=sk-your-qwen-api-key
|
||||
# QWEN_MODEL=qwen-plus
|
||||
|
||||
# 方案 3: 使用 Claude
|
||||
# AI_PROVIDER=anthropic
|
||||
# ANTHROPIC_API_KEY=sk-ant-your-key
|
||||
# ANTHROPIC_MODEL=claude-3-haiku-20240307
|
||||
```
|
||||
|
||||
#### 2. 启动 Docker Desktop
|
||||
|
||||
- 打开 Docker Desktop 应用
|
||||
- 等待 Docker Engine 启动(底部状态显示 "Running")
|
||||
|
||||
#### 3. 启动服务
|
||||
|
||||
```powershell
|
||||
# 在项目根目录
|
||||
cd E:\QQuiz
|
||||
|
||||
# 启动所有服务(第一次会比较慢,需要下载镜像)
|
||||
docker-compose up -d
|
||||
|
||||
# 查看服务状态
|
||||
docker-compose ps
|
||||
|
||||
# 查看日志
|
||||
docker-compose logs -f
|
||||
```
|
||||
|
||||
#### 4. 访问应用
|
||||
|
||||
- **前端**: http://localhost:3000
|
||||
- **后端 API**: http://localhost:8000
|
||||
- **API 文档**: http://localhost:8000/docs
|
||||
|
||||
#### 5. 默认账户登录
|
||||
|
||||
- **用户名**: `admin`
|
||||
- **密码**: `admin123`
|
||||
|
||||
⚠️ **首次登录后请立即修改密码!**
|
||||
|
||||
### 常用 Docker 命令
|
||||
|
||||
```powershell
|
||||
# 查看运行状态
|
||||
docker-compose ps
|
||||
|
||||
# 查看日志
|
||||
docker-compose logs -f backend
|
||||
docker-compose logs -f frontend
|
||||
|
||||
# 停止服务
|
||||
docker-compose stop
|
||||
|
||||
# 重启服务
|
||||
docker-compose restart
|
||||
|
||||
# 停止并删除容器
|
||||
docker-compose down
|
||||
|
||||
# 重新构建并启动
|
||||
docker-compose up -d --build
|
||||
|
||||
# 进入容器内部
|
||||
docker-compose exec backend bash
|
||||
docker-compose exec postgres psql -U qquiz qquiz_db
|
||||
```
|
||||
|
||||
### 问题排查
|
||||
|
||||
#### 问题 1: Docker Desktop 无法启动
|
||||
|
||||
**解决方案:**
|
||||
```powershell
|
||||
# 确保 WSL 2 已安装
|
||||
wsl --list --verbose
|
||||
|
||||
# 如果版本是 1,升级到 2
|
||||
wsl --set-version Ubuntu 2
|
||||
|
||||
# 设置默认版本为 2
|
||||
wsl --set-default-version 2
|
||||
```
|
||||
|
||||
#### 问题 2: 端口被占用
|
||||
|
||||
```powershell
|
||||
# 查看端口占用
|
||||
netstat -ano | findstr :3000
|
||||
netstat -ano | findstr :8000
|
||||
netstat -ano | findstr :5432
|
||||
|
||||
# 结束占用进程(替换 PID)
|
||||
taskkill /F /PID <进程ID>
|
||||
```
|
||||
|
||||
#### 问题 3: 容器启动失败
|
||||
|
||||
```powershell
|
||||
# 查看详细错误日志
|
||||
docker-compose logs backend
|
||||
|
||||
# 重新构建
|
||||
docker-compose down
|
||||
docker-compose build --no-cache
|
||||
docker-compose up -d
|
||||
```
|
||||
|
||||
---
|
||||
|
||||
## 🛠️ 方式二:本地源码部署
|
||||
|
||||
适合开发调试,需要手动安装各种依赖。
|
||||
|
||||
### 前置要求
|
||||
|
||||
1. **Python 3.11+**
|
||||
- 下载:https://www.python.org/downloads/
|
||||
- 安装时勾选 "Add Python to PATH"
|
||||
|
||||
2. **Node.js 18+**
|
||||
- 下载:https://nodejs.org/
|
||||
- 推荐安装 LTS 版本
|
||||
|
||||
3. **PostgreSQL 15+**
|
||||
- 下载:https://www.enterprisedb.com/downloads/postgres-postgresql-downloads
|
||||
- 记住安装时设置的密码
|
||||
|
||||
### 部署步骤
|
||||
|
||||
#### 1. 安装 PostgreSQL
|
||||
|
||||
1. 下载并安装 PostgreSQL 15
|
||||
2. 安装完成后,打开 **pgAdmin 4** 或 **SQL Shell (psql)**
|
||||
|
||||
3. 创建数据库:
|
||||
|
||||
```sql
|
||||
-- 使用 psql 或 pgAdmin 执行
|
||||
CREATE DATABASE qquiz_db;
|
||||
CREATE USER qquiz WITH PASSWORD 'qquiz_password';
|
||||
GRANT ALL PRIVILEGES ON DATABASE qquiz_db TO qquiz;
|
||||
```
|
||||
|
||||
#### 2. 配置环境变量
|
||||
|
||||
```powershell
|
||||
cd E:\QQuiz
|
||||
copy .env.example .env
|
||||
notepad .env
|
||||
```
|
||||
|
||||
**修改数据库连接为本地:**
|
||||
|
||||
```env
|
||||
# 数据库(本地部署)
|
||||
DATABASE_URL=postgresql+asyncpg://qquiz:qquiz_password@localhost:5432/qquiz_db
|
||||
|
||||
# JWT 密钥
|
||||
SECRET_KEY=your-super-secret-key-at-least-32-characters-long
|
||||
|
||||
# AI 配置(选择一个)
|
||||
AI_PROVIDER=openai
|
||||
OPENAI_API_KEY=sk-your-openai-api-key
|
||||
OPENAI_MODEL=gpt-4o-mini
|
||||
```
|
||||
|
||||
#### 3. 启动后端
|
||||
|
||||
**打开第一个 PowerShell 窗口:**
|
||||
|
||||
```powershell
|
||||
cd E:\QQuiz\backend
|
||||
|
||||
# 创建虚拟环境
|
||||
python -m venv venv
|
||||
|
||||
# 激活虚拟环境
|
||||
.\venv\Scripts\Activate.ps1
|
||||
|
||||
# 如果遇到执行策略错误,运行:
|
||||
# Set-ExecutionPolicy -ExecutionPolicy RemoteSigned -Scope CurrentUser
|
||||
|
||||
# 安装依赖
|
||||
pip install -r requirements.txt
|
||||
|
||||
# 运行数据库迁移
|
||||
alembic upgrade head
|
||||
|
||||
# 启动后端服务
|
||||
uvicorn main:app --reload
|
||||
```
|
||||
|
||||
**成功后会看到:**
|
||||
```
|
||||
INFO: Uvicorn running on http://127.0.0.1:8000
|
||||
INFO: Application startup complete.
|
||||
```
|
||||
|
||||
#### 4. 启动前端
|
||||
|
||||
**打开第二个 PowerShell 窗口:**
|
||||
|
||||
```powershell
|
||||
cd E:\QQuiz\frontend
|
||||
|
||||
# 安装依赖(第一次需要)
|
||||
npm install
|
||||
|
||||
# 启动开发服务器
|
||||
npm start
|
||||
```
|
||||
|
||||
**成功后会自动打开浏览器:**
|
||||
```
|
||||
VITE v5.0.11 ready in 1234 ms
|
||||
|
||||
➜ Local: http://localhost:3000/
|
||||
➜ Network: use --host to expose
|
||||
```
|
||||
|
||||
#### 5. 访问应用
|
||||
|
||||
- **前端**: http://localhost:3000
|
||||
- **后端**: http://localhost:8000
|
||||
- **API 文档**: http://localhost:8000/docs
|
||||
|
||||
### 问题排查
|
||||
|
||||
#### 问题 1: PowerShell 执行策略错误
|
||||
|
||||
```powershell
|
||||
# 错误信息:无法加载文件 xxx.ps1,因为在此系统上禁止运行脚本
|
||||
|
||||
# 解决方案:
|
||||
Set-ExecutionPolicy -ExecutionPolicy RemoteSigned -Scope CurrentUser
|
||||
|
||||
# 然后重新激活虚拟环境
|
||||
.\venv\Scripts\Activate.ps1
|
||||
```
|
||||
|
||||
#### 问题 2: pip 安装依赖失败
|
||||
|
||||
```powershell
|
||||
# 使用国内镜像加速
|
||||
pip install -r requirements.txt -i https://pypi.tuna.tsinghua.edu.cn/simple
|
||||
```
|
||||
|
||||
#### 问题 3: PostgreSQL 连接失败
|
||||
|
||||
```powershell
|
||||
# 确认 PostgreSQL 服务正在运行
|
||||
# 打开 "服务" (services.msc)
|
||||
# 找到 "postgresql-x64-15",确保状态为 "正在运行"
|
||||
|
||||
# 或使用命令行
|
||||
sc query postgresql-x64-15
|
||||
```
|
||||
|
||||
#### 问题 4: npm 安装慢
|
||||
|
||||
```powershell
|
||||
# 使用淘宝镜像
|
||||
npm config set registry https://registry.npmmirror.com
|
||||
|
||||
# 然后重新安装
|
||||
npm install
|
||||
```
|
||||
|
||||
---
|
||||
|
||||
## 🧪 测试部署是否成功
|
||||
|
||||
### 1. 检查后端健康状态
|
||||
|
||||
浏览器访问:http://localhost:8000/health
|
||||
|
||||
**预期返回:**
|
||||
```json
|
||||
{"status": "healthy"}
|
||||
```
|
||||
|
||||
### 2. 查看 API 文档
|
||||
|
||||
访问:http://localhost:8000/docs
|
||||
|
||||
应该能看到 Swagger UI 界面,显示所有 API 接口。
|
||||
|
||||
### 3. 测试登录
|
||||
|
||||
1. 访问 http://localhost:3000
|
||||
2. 使用默认账户登录:
|
||||
- 用户名:`admin`
|
||||
- 密码:`admin123`
|
||||
3. 成功后应该进入 Dashboard
|
||||
|
||||
### 4. 测试创建题库
|
||||
|
||||
1. 点击「题库管理」
|
||||
2. 点击「创建题库」
|
||||
3. 输入题库名称
|
||||
4. 上传测试文档(可以创建一个简单的 TXT 文件)
|
||||
|
||||
**测试文档示例 (test_questions.txt):**
|
||||
```txt
|
||||
1. Python 是一种什么类型的语言?
|
||||
A. 编译型语言
|
||||
B. 解释型语言
|
||||
C. 汇编语言
|
||||
D. 机器语言
|
||||
答案:B
|
||||
解析:Python 是一种解释型、面向对象的高级编程语言。
|
||||
|
||||
2. 以下哪个不是 Python 的数据类型?
|
||||
A. list
|
||||
B. tuple
|
||||
C. array
|
||||
D. dict
|
||||
答案:C
|
||||
解析:Python 内置的数据类型包括 list、tuple、dict 等,array 需要导入 array 模块。
|
||||
```
|
||||
|
||||
5. 上传后等待解析完成(状态会从「处理中」变为「就绪」)
|
||||
6. 点击「开始刷题」测试刷题功能
|
||||
|
||||
---
|
||||
|
||||
## 📝 Windows 特定配置
|
||||
|
||||
### 1. 设置环境变量(可选)
|
||||
|
||||
**通过 GUI 设置:**
|
||||
1. 右键「此电脑」→「属性」
|
||||
2. 「高级系统设置」→「环境变量」
|
||||
3. 在「用户变量」中添加:
|
||||
- `OPENAI_API_KEY`: 你的 API Key
|
||||
- `SECRET_KEY`: 你的密钥
|
||||
|
||||
### 2. 配置防火墙(如果需要局域网访问)
|
||||
|
||||
```powershell
|
||||
# 允许端口访问(以管理员身份运行)
|
||||
netsh advfirewall firewall add rule name="QQuiz Frontend" dir=in action=allow protocol=TCP localport=3000
|
||||
netsh advfirewall firewall add rule name="QQuiz Backend" dir=in action=allow protocol=TCP localport=8000
|
||||
```
|
||||
|
||||
### 3. 创建启动脚本
|
||||
|
||||
**创建 `start.bat` 文件:**
|
||||
|
||||
```batch
|
||||
@echo off
|
||||
echo Starting QQuiz...
|
||||
|
||||
REM 检查 Docker Desktop 是否运行
|
||||
docker info >nul 2>&1
|
||||
if %errorlevel% neq 0 (
|
||||
echo Starting Docker Desktop...
|
||||
start "" "C:\Program Files\Docker\Docker\Docker Desktop.exe"
|
||||
timeout /t 10
|
||||
)
|
||||
|
||||
REM 启动服务
|
||||
cd /d "%~dp0"
|
||||
docker-compose up -d
|
||||
|
||||
echo.
|
||||
echo QQuiz is starting...
|
||||
echo Frontend: http://localhost:3000
|
||||
echo Backend: http://localhost:8000
|
||||
echo.
|
||||
pause
|
||||
```
|
||||
|
||||
**使用方法:**
|
||||
- 双击 `start.bat` 即可启动服务
|
||||
|
||||
---
|
||||
|
||||
## 🎯 性能优化建议
|
||||
|
||||
### 1. Docker Desktop 配置
|
||||
|
||||
1. 打开 Docker Desktop
|
||||
2. 设置 → Resources
|
||||
3. 调整资源分配:
|
||||
- **CPUs**: 4 核(推荐)
|
||||
- **Memory**: 4 GB(推荐)
|
||||
- **Swap**: 1 GB
|
||||
- **Disk image size**: 60 GB
|
||||
|
||||
### 2. WSL 2 优化
|
||||
|
||||
**限制 WSL 2 内存占用(可选):**
|
||||
|
||||
创建 `%USERPROFILE%\.wslconfig` 文件:
|
||||
|
||||
```ini
|
||||
[wsl2]
|
||||
memory=4GB
|
||||
processors=4
|
||||
swap=1GB
|
||||
```
|
||||
|
||||
重启 WSL:
|
||||
```powershell
|
||||
wsl --shutdown
|
||||
```
|
||||
|
||||
### 3. 开发工具推荐
|
||||
|
||||
- **代码编辑器**: VS Code(安装 Python、ESLint、Prettier 插件)
|
||||
- **API 测试**: Postman 或 Insomnia
|
||||
- **数据库管理**: pgAdmin 4 或 DBeaver
|
||||
- **终端**: Windows Terminal(更好的 PowerShell 体验)
|
||||
|
||||
---
|
||||
|
||||
## 🔧 常见问题汇总
|
||||
|
||||
### Q: 如何完全重置项目?
|
||||
|
||||
```powershell
|
||||
# Docker 方式
|
||||
docker-compose down -v # 删除容器和数据卷
|
||||
docker-compose up -d # 重新启动
|
||||
|
||||
# 本地方式
|
||||
# 1. 删除数据库
|
||||
DROP DATABASE qquiz_db;
|
||||
CREATE DATABASE qquiz_db;
|
||||
# 2. 重新运行迁移
|
||||
cd E:\QQuiz\backend
|
||||
alembic upgrade head
|
||||
```
|
||||
|
||||
### Q: 如何查看日志?
|
||||
|
||||
```powershell
|
||||
# Docker 方式
|
||||
docker-compose logs -f backend
|
||||
docker-compose logs -f frontend
|
||||
|
||||
# 本地方式
|
||||
# 直接在运行的 PowerShell 窗口中查看
|
||||
```
|
||||
|
||||
### Q: 如何停止服务?
|
||||
|
||||
```powershell
|
||||
# Docker 方式
|
||||
docker-compose stop
|
||||
|
||||
# 本地方式
|
||||
# 在运行的 PowerShell 窗口中按 Ctrl+C
|
||||
```
|
||||
|
||||
### Q: 如何更新代码后重启?
|
||||
|
||||
```powershell
|
||||
# Docker 方式
|
||||
docker-compose restart
|
||||
|
||||
# 本地方式(uvicorn 和 vite 会自动重载)
|
||||
# 无需操作,保存文件后自动刷新
|
||||
```
|
||||
|
||||
---
|
||||
|
||||
## 📞 获取帮助
|
||||
|
||||
如果遇到问题:
|
||||
|
||||
1. **查看日志**: `docker-compose logs -f`
|
||||
2. **检查文档**: 阅读 `DEPLOYMENT.md`
|
||||
3. **查看 API 文档**: http://localhost:8000/docs
|
||||
4. **GitHub Issues**: 提交问题报告
|
||||
|
||||
---
|
||||
|
||||
祝你部署顺利!🎉
|
||||
Reference in New Issue
Block a user