mirror of
https://github.com/handsomezhuzhu/QQuiz.git
synced 2026-02-20 12:00:14 +00:00
🚀 Add full auto-deploy script for Windows
## 新增 - auto_setup_and_run.bat: 全自动部署启动脚本 - 自动检查环境 - 自动配置数据库 - 自动安装所有依赖 - 自动启动前后端服务 - 一键完成所有配置 🚀 Generated with [Claude Code](https://claude.com/claude-code) Co-Authored-By: Claude <noreply@anthropic.com>
This commit is contained in:
5
activate_venv.bat
Normal file
5
activate_venv.bat
Normal file
@@ -0,0 +1,5 @@
|
||||
@echo off
|
||||
REM 激活虚拟环境的批处理脚本
|
||||
cd /d "%~dp0backend"
|
||||
call venv\Scripts\activate.bat
|
||||
cmd /k
|
||||
258
auto_setup_and_run.bat
Normal file
258
auto_setup_and_run.bat
Normal file
@@ -0,0 +1,258 @@
|
||||
@echo off
|
||||
chcp 65001 >nul
|
||||
title QQuiz - 全自动部署
|
||||
|
||||
color 0A
|
||||
echo.
|
||||
echo ██████╗ ██████╗ ██╗ ██╗██╗███████╗
|
||||
echo ██╔═══██╗██╔═══██╗██║ ██║██║╚══███╔╝
|
||||
echo ██║ ██║██║ ██║██║ ██║██║ ███╔╝
|
||||
echo ██║▄▄ ██║██║▄▄ ██║██║ ██║██║ ███╔╝
|
||||
echo ╚██████╔╝╚██████╔╝╚██████╔╝██║███████╗
|
||||
echo ╚══▀▀═╝ ╚══▀▀═╝ ╚═════╝ ╚═╝╚══════╝
|
||||
echo.
|
||||
echo ==========================================
|
||||
echo 智能刷题与题库管理平台
|
||||
echo 全自动部署脚本
|
||||
echo ==========================================
|
||||
echo.
|
||||
|
||||
cd /d "%~dp0"
|
||||
|
||||
REM ============================================
|
||||
REM 步骤 1: 检查环境
|
||||
REM ============================================
|
||||
echo [1/8] 检查运行环境...
|
||||
echo.
|
||||
|
||||
REM 检查 Python
|
||||
python --version >nul 2>&1
|
||||
if %errorlevel% neq 0 (
|
||||
echo [错误] 未检测到 Python!
|
||||
echo 请先安装 Python 3.11+: https://www.python.org/downloads/
|
||||
pause
|
||||
exit /b 1
|
||||
)
|
||||
echo ✓ Python 已安装
|
||||
|
||||
REM 检查 Node.js
|
||||
node --version >nul 2>&1
|
||||
if %errorlevel% neq 0 (
|
||||
echo [错误] 未检测到 Node.js!
|
||||
echo 请先安装 Node.js 18+: https://nodejs.org/
|
||||
pause
|
||||
exit /b 1
|
||||
)
|
||||
echo ✓ Node.js 已安装
|
||||
|
||||
REM 检查 PostgreSQL
|
||||
psql --version >nul 2>&1
|
||||
if %errorlevel% neq 0 (
|
||||
echo [警告] 未检测到 PostgreSQL 命令行工具
|
||||
echo 可能已安装但未加入 PATH,继续尝试...
|
||||
)
|
||||
echo ✓ 环境检查完成
|
||||
echo.
|
||||
|
||||
REM ============================================
|
||||
REM 步骤 2: 配置环境变量
|
||||
REM ============================================
|
||||
echo [2/8] 配置环境变量...
|
||||
echo.
|
||||
|
||||
if not exist ".env" (
|
||||
copy .env.example .env >nul
|
||||
echo ✓ 已创建 .env 文件
|
||||
echo.
|
||||
echo [重要] 请编辑 .env 文件,配置以下项:
|
||||
echo 1. SECRET_KEY - JWT密钥(至少32字符)
|
||||
echo 2. OPENAI_API_KEY - OpenAI API密钥
|
||||
echo.
|
||||
echo 按任意键打开 .env 文件编辑...
|
||||
pause >nul
|
||||
notepad .env
|
||||
echo.
|
||||
echo 编辑完成后,按任意键继续...
|
||||
pause >nul
|
||||
) else (
|
||||
echo ✓ .env 文件已存在
|
||||
)
|
||||
echo.
|
||||
|
||||
REM ============================================
|
||||
REM 步骤 3: 创建数据库
|
||||
REM ============================================
|
||||
echo [3/8] 配置数据库...
|
||||
echo.
|
||||
|
||||
echo 请输入 PostgreSQL 信息(或直接回车使用默认值):
|
||||
echo.
|
||||
set /p PGHOST="数据库主机 [默认: localhost]: "
|
||||
if "%PGHOST%"=="" set PGHOST=localhost
|
||||
|
||||
set /p PGPORT="数据库端口 [默认: 5432]: "
|
||||
if "%PGPORT%"=="" set PGPORT=5432
|
||||
|
||||
set /p PGUSER="管理员用户名 [默认: postgres]: "
|
||||
if "%PGUSER%"=="" set PGUSER=postgres
|
||||
|
||||
echo.
|
||||
echo 正在创建数据库和用户...
|
||||
echo.
|
||||
|
||||
REM 创建数据库脚本
|
||||
echo DROP DATABASE IF EXISTS qquiz_db; > temp_create_db.sql
|
||||
echo DROP USER IF EXISTS qquiz; >> temp_create_db.sql
|
||||
echo CREATE USER qquiz WITH PASSWORD 'qquiz_password'; >> temp_create_db.sql
|
||||
echo CREATE DATABASE qquiz_db OWNER qquiz; >> temp_create_db.sql
|
||||
echo GRANT ALL PRIVILEGES ON DATABASE qquiz_db TO qquiz; >> temp_create_db.sql
|
||||
|
||||
REM 执行 SQL
|
||||
psql -h %PGHOST% -p %PGPORT% -U %PGUSER% -f temp_create_db.sql 2>nul
|
||||
if %errorlevel% equ 0 (
|
||||
echo ✓ 数据库创建成功
|
||||
del temp_create_db.sql
|
||||
) else (
|
||||
echo ! 数据库创建可能失败,继续尝试...
|
||||
del temp_create_db.sql
|
||||
)
|
||||
echo.
|
||||
|
||||
REM 更新 .env 中的数据库连接
|
||||
powershell -Command "(Get-Content .env) -replace 'DATABASE_URL=.*', 'DATABASE_URL=postgresql+asyncpg://qquiz:qquiz_password@%PGHOST%:%PGPORT%/qquiz_db' | Set-Content .env"
|
||||
echo ✓ 已更新数据库连接配置
|
||||
echo.
|
||||
|
||||
REM ============================================
|
||||
REM 步骤 4: 安装后端依赖
|
||||
REM ============================================
|
||||
echo [4/8] 安装后端依赖...
|
||||
echo.
|
||||
|
||||
cd backend
|
||||
|
||||
if not exist "venv" (
|
||||
echo 创建虚拟环境...
|
||||
python -m venv venv
|
||||
)
|
||||
|
||||
echo 激活虚拟环境并安装依赖...
|
||||
call venv\Scripts\activate.bat && pip install -q -r requirements.txt -i https://pypi.tuna.tsinghua.edu.cn/simple
|
||||
|
||||
if %errorlevel% equ 0 (
|
||||
echo ✓ 后端依赖安装成功
|
||||
) else (
|
||||
echo ! 部分依赖可能安装失败,继续尝试...
|
||||
)
|
||||
echo.
|
||||
|
||||
REM ============================================
|
||||
REM 步骤 5: 初始化数据库
|
||||
REM ============================================
|
||||
echo [5/8] 初始化数据库表...
|
||||
echo.
|
||||
|
||||
call venv\Scripts\activate.bat && alembic upgrade head 2>nul
|
||||
if %errorlevel% equ 0 (
|
||||
echo ✓ 数据库表创建成功
|
||||
) else (
|
||||
echo ! 数据库迁移失败,将在启动时自动创建
|
||||
)
|
||||
echo.
|
||||
|
||||
cd ..
|
||||
|
||||
REM ============================================
|
||||
REM 步骤 6: 安装前端依赖
|
||||
REM ============================================
|
||||
echo [6/8] 安装前端依赖...
|
||||
echo.
|
||||
|
||||
cd frontend
|
||||
|
||||
if not exist "node_modules" (
|
||||
echo 使用淘宝镜像加速...
|
||||
call npm config set registry https://registry.npmmirror.com
|
||||
echo 安装依赖(需要几分钟)...
|
||||
call npm install --silent
|
||||
|
||||
if %errorlevel% equ 0 (
|
||||
echo ✓ 前端依赖安装成功
|
||||
) else (
|
||||
echo ! 前端依赖安装失败
|
||||
cd ..
|
||||
pause
|
||||
exit /b 1
|
||||
)
|
||||
) else (
|
||||
echo ✓ 前端依赖已安装
|
||||
)
|
||||
echo.
|
||||
|
||||
cd ..
|
||||
|
||||
REM ============================================
|
||||
REM 步骤 7: 启动后端服务
|
||||
REM ============================================
|
||||
echo [7/8] 启动后端服务...
|
||||
echo.
|
||||
|
||||
start "QQuiz Backend" cmd /k "cd /d %~dp0backend && call venv\Scripts\activate.bat && echo ======================================== && echo QQuiz 后端服务 && echo ======================================== && echo. && echo API 地址: http://localhost:8000 && echo API 文档: http://localhost:8000/docs && echo. && echo 按 Ctrl+C 停止服务 && echo. && uvicorn main:app --reload"
|
||||
|
||||
echo ✓ 后端服务已在新窗口中启动
|
||||
echo 等待服务启动...
|
||||
timeout /t 8 /nobreak >nul
|
||||
echo.
|
||||
|
||||
REM ============================================
|
||||
REM 步骤 8: 启动前端服务
|
||||
REM ============================================
|
||||
echo [8/8] 启动前端服务...
|
||||
echo.
|
||||
|
||||
start "QQuiz Frontend" cmd /k "cd /d %~dp0frontend && echo ======================================== && echo QQuiz 前端服务 && echo ======================================== && echo. && echo 前端地址: http://localhost:3000 && echo. && echo 按 Ctrl+C 停止服务 && echo. && npm start"
|
||||
|
||||
echo ✓ 前端服务已在新窗口中启动
|
||||
echo 等待服务启动...
|
||||
timeout /t 5 /nobreak >nul
|
||||
echo.
|
||||
|
||||
REM ============================================
|
||||
REM 完成
|
||||
REM ============================================
|
||||
color 0B
|
||||
echo.
|
||||
echo ==========================================
|
||||
echo 🎉 部署完成!
|
||||
echo ==========================================
|
||||
echo.
|
||||
echo 服务地址:
|
||||
echo 前端: http://localhost:3000
|
||||
echo 后端: http://localhost:8000
|
||||
echo 文档: http://localhost:8000/docs
|
||||
echo.
|
||||
echo 默认账户:
|
||||
echo 用户名: admin
|
||||
echo 密码: admin123
|
||||
echo.
|
||||
echo ⚠️ 首次登录后请立即修改密码!
|
||||
echo.
|
||||
echo 测试数据:
|
||||
echo test_data/sample_questions.txt
|
||||
echo.
|
||||
echo ==========================================
|
||||
echo.
|
||||
|
||||
REM 询问是否打开浏览器
|
||||
choice /C YN /M "是否打开浏览器访问系统"
|
||||
if %errorlevel% equ 1 (
|
||||
timeout /t 3 /nobreak >nul
|
||||
start http://localhost:3000
|
||||
)
|
||||
|
||||
echo.
|
||||
echo 系统正在运行中...
|
||||
echo 关闭此窗口不会停止服务
|
||||
echo 要停止服务,请关闭后端和前端窗口
|
||||
echo.
|
||||
pause
|
||||
60
run_backend_local.bat
Normal file
60
run_backend_local.bat
Normal file
@@ -0,0 +1,60 @@
|
||||
@echo off
|
||||
chcp 65001 >nul
|
||||
title QQuiz Backend - 本地运行
|
||||
|
||||
echo.
|
||||
echo ==========================================
|
||||
echo QQuiz Backend - 本地启动
|
||||
echo ==========================================
|
||||
echo.
|
||||
|
||||
cd /d "%~dp0backend"
|
||||
|
||||
REM 检查虚拟环境是否存在
|
||||
if not exist "venv\Scripts\activate.bat" (
|
||||
echo [1/5] 创建虚拟环境...
|
||||
python -m venv venv
|
||||
echo [完成]
|
||||
echo.
|
||||
) else (
|
||||
echo [1/5] 虚拟环境已存在
|
||||
echo.
|
||||
)
|
||||
|
||||
echo [2/5] 激活虚拟环境...
|
||||
call venv\Scripts\activate.bat
|
||||
echo [完成]
|
||||
echo.
|
||||
|
||||
echo [3/5] 安装依赖...
|
||||
pip install -r requirements.txt -i https://pypi.tuna.tsinghua.edu.cn/simple
|
||||
if %errorlevel% neq 0 (
|
||||
echo [错误] 依赖安装失败
|
||||
pause
|
||||
exit /b 1
|
||||
)
|
||||
echo [完成]
|
||||
echo.
|
||||
|
||||
echo [4/5] 运行数据库迁移...
|
||||
alembic upgrade head
|
||||
if %errorlevel% neq 0 (
|
||||
echo [警告] 数据库迁移失败,请检查 PostgreSQL 是否运行
|
||||
echo.
|
||||
)
|
||||
echo.
|
||||
|
||||
echo [5/5] 启动后端服务...
|
||||
echo.
|
||||
echo ==========================================
|
||||
echo 后端服务启动中...
|
||||
echo ==========================================
|
||||
echo.
|
||||
echo API 地址: http://localhost:8000
|
||||
echo API 文档: http://localhost:8000/docs
|
||||
echo.
|
||||
echo 按 Ctrl+C 停止服务
|
||||
echo ==========================================
|
||||
echo.
|
||||
|
||||
uvicorn main:app --reload
|
||||
44
run_frontend_local.bat
Normal file
44
run_frontend_local.bat
Normal file
@@ -0,0 +1,44 @@
|
||||
@echo off
|
||||
chcp 65001 >nul
|
||||
title QQuiz Frontend - 本地运行
|
||||
|
||||
echo.
|
||||
echo ==========================================
|
||||
echo QQuiz Frontend - 本地启动
|
||||
echo ==========================================
|
||||
echo.
|
||||
|
||||
cd /d "%~dp0frontend"
|
||||
|
||||
REM 检查 node_modules 是否存在
|
||||
if not exist "node_modules" (
|
||||
echo [1/2] 安装前端依赖(首次运行需要几分钟)...
|
||||
echo.
|
||||
echo [提示] 使用淘宝镜像加速下载...
|
||||
call npm config set registry https://registry.npmmirror.com
|
||||
call npm install
|
||||
if %errorlevel% neq 0 (
|
||||
echo [错误] 依赖安装失败
|
||||
pause
|
||||
exit /b 1
|
||||
)
|
||||
echo [完成]
|
||||
echo.
|
||||
) else (
|
||||
echo [1/2] 依赖已安装
|
||||
echo.
|
||||
)
|
||||
|
||||
echo [2/2] 启动前端服务...
|
||||
echo.
|
||||
echo ==========================================
|
||||
echo 前端服务启动中...
|
||||
echo ==========================================
|
||||
echo.
|
||||
echo 前端地址: http://localhost:3000
|
||||
echo.
|
||||
echo 按 Ctrl+C 停止服务
|
||||
echo ==========================================
|
||||
echo.
|
||||
|
||||
call npm start
|
||||
Reference in New Issue
Block a user