254 lines
5.4 KiB
Markdown
254 lines
5.4 KiB
Markdown
# Weibo-HotSign 本地开发环境配置指南
|
||
|
||
## 快速开始
|
||
|
||
### 1. 环境要求
|
||
|
||
- Python 3.8+
|
||
- Windows 操作系统
|
||
- (可选)Redis(如果需要完整功能)
|
||
|
||
### 2. 一键启动
|
||
|
||
```bash
|
||
# 双击运行或在命令行执行
|
||
start_all.bat
|
||
```
|
||
|
||
这个脚本会自动:
|
||
- 检查 Python 环境
|
||
- 创建 SQLite 数据库(包含测试用户)
|
||
- 安装所有依赖
|
||
- 启动所有服务
|
||
|
||
### 3. 访问应用
|
||
|
||
启动成功后,浏览器会自动打开:
|
||
- **前端界面**: http://localhost:5000
|
||
- **API Service**: http://localhost:8000
|
||
- **Auth Service**: http://localhost:8001
|
||
|
||
### 4. 测试账号
|
||
|
||
数据库初始化时会自动创建一个测试用户:
|
||
|
||
```
|
||
用户名: admin
|
||
邮箱: admin@example.com
|
||
密码: Admin123!
|
||
```
|
||
|
||
你也可以通过注册页面创建新用户。
|
||
|
||
### 5. 停止服务
|
||
|
||
```bash
|
||
# 双击运行或在命令行执行
|
||
stop_all.bat
|
||
```
|
||
|
||
## 配置说明
|
||
|
||
### 数据库配置
|
||
|
||
默认使用 SQLite 数据库,无需额外配置。数据库文件位于项目根目录:
|
||
```
|
||
weibo_hotsign.db
|
||
```
|
||
|
||
如需使用 MySQL,修改 `backend/.env.local`:
|
||
```env
|
||
DATABASE_URL=mysql+aiomysql://user:password@localhost/weibo_hotsign
|
||
```
|
||
|
||
### Redis 配置(可选)
|
||
|
||
本地开发默认**不需要 Redis**,系统会使用内存存储。
|
||
|
||
如需启用 Redis(用于生产环境或测试分布式功能),修改 `backend/.env.local`:
|
||
```env
|
||
USE_REDIS=true
|
||
REDIS_URL=redis://localhost:6379
|
||
```
|
||
|
||
### 环境变量
|
||
|
||
#### 后端配置 (`backend/.env.local`)
|
||
|
||
```env
|
||
# 数据库
|
||
DATABASE_URL=sqlite+aiosqlite:///./weibo_hotsign.db
|
||
|
||
# Redis(可选)
|
||
USE_REDIS=false
|
||
# REDIS_URL=redis://localhost:6379
|
||
|
||
# JWT 配置
|
||
JWT_SECRET_KEY=dev-secret-key-change-in-production
|
||
JWT_ALGORITHM=HS256
|
||
JWT_ACCESS_TOKEN_EXPIRE_MINUTES=60
|
||
|
||
# Cookie 加密密钥
|
||
COOKIE_ENCRYPTION_KEY=dev-cookie-encryption-key-32b
|
||
|
||
# 服务端口
|
||
AUTH_SERVICE_PORT=8001
|
||
API_SERVICE_PORT=8000
|
||
|
||
# 环境
|
||
ENVIRONMENT=development
|
||
```
|
||
|
||
#### 前端配置 (`frontend/.env`)
|
||
|
||
```env
|
||
FLASK_ENV=development
|
||
FLASK_DEBUG=True
|
||
SECRET_KEY=dev-flask-secret-key-change-in-production
|
||
|
||
# 后端服务地址
|
||
API_BASE_URL=http://localhost:8000
|
||
AUTH_BASE_URL=http://localhost:8001
|
||
|
||
# Session 配置
|
||
SESSION_TYPE=filesystem
|
||
```
|
||
|
||
## 手动启动(高级)
|
||
|
||
如果需要单独启动某个服务:
|
||
|
||
### 1. 创建数据库
|
||
|
||
```bash
|
||
python create_sqlite_db.py
|
||
```
|
||
|
||
### 2. 安装后端依赖
|
||
|
||
```bash
|
||
cd backend
|
||
python -m venv venv
|
||
venv\Scripts\activate
|
||
pip install -r requirements.txt
|
||
```
|
||
|
||
### 3. 启动 Auth Service
|
||
|
||
```bash
|
||
cd backend
|
||
venv\Scripts\activate
|
||
set PYTHONPATH=%CD%
|
||
python -m uvicorn auth_service.app.main:app --host 0.0.0.0 --port 8001 --reload
|
||
```
|
||
|
||
### 4. 启动 API Service
|
||
|
||
```bash
|
||
cd backend
|
||
venv\Scripts\activate
|
||
set PYTHONPATH=%CD%
|
||
python -m uvicorn api_service.app.main:app --host 0.0.0.0 --port 8000 --reload
|
||
```
|
||
|
||
### 5. 启动 Frontend
|
||
|
||
```bash
|
||
cd frontend
|
||
python -m venv venv
|
||
venv\Scripts\activate
|
||
pip install -r requirements.txt
|
||
python app.py
|
||
```
|
||
|
||
## 常见问题
|
||
|
||
### Q: 启动失败,提示找不到模块
|
||
|
||
A: 确保设置了 PYTHONPATH:
|
||
```bash
|
||
set PYTHONPATH=%CD%
|
||
```
|
||
|
||
### Q: 数据库连接失败
|
||
|
||
A: 检查 `backend/.env.local` 中的 `DATABASE_URL` 配置是否正确。
|
||
|
||
### Q: 端口被占用
|
||
|
||
A: 修改 `.env` 文件中的端口配置,或关闭占用端口的程序。
|
||
|
||
### Q: Redis 连接失败
|
||
|
||
A: 本地开发不需要 Redis。如果看到 Redis 警告,可以忽略,系统会自动使用内存存储。
|
||
|
||
### Q: 如何重置数据库
|
||
|
||
A: 删除 `weibo_hotsign.db` 文件,然后重新运行 `python create_sqlite_db.py`。
|
||
|
||
## 开发建议
|
||
|
||
### 1. 使用虚拟环境
|
||
|
||
每个服务都应该在独立的虚拟环境中运行,避免依赖冲突。
|
||
|
||
### 2. 查看日志
|
||
|
||
每个服务启动时会打开独立的命令行窗口,可以在窗口中查看实时日志。
|
||
|
||
### 3. 热重载
|
||
|
||
开发模式下,修改代码后服务会自动重启(`--reload` 参数)。
|
||
|
||
### 4. API 文档
|
||
|
||
- Auth Service: http://localhost:8001/docs
|
||
- API Service: http://localhost:8000/docs
|
||
|
||
## 项目结构
|
||
|
||
```
|
||
weibo-hotsign/
|
||
├── backend/ # 后端服务
|
||
│ ├── shared/ # 共享模块
|
||
│ ├── auth_service/ # 认证服务
|
||
│ ├── api_service/ # API 服务
|
||
│ ├── task_scheduler/ # 任务调度(需要 Celery)
|
||
│ ├── signin_executor/ # 签到执行(需要 Celery)
|
||
│ └── requirements.txt # 后端依赖
|
||
├── frontend/ # Flask 前端
|
||
│ ├── templates/ # HTML 模板
|
||
│ ├── app.py # Flask 应用
|
||
│ └── requirements.txt # 前端依赖
|
||
├── weibo_hotsign.db # SQLite 数据库(自动生成)
|
||
├── create_sqlite_db.py # 数据库初始化脚本
|
||
├── init-db-sqlite.sql # SQLite 建表脚本
|
||
├── start_all.bat # 一键启动脚本
|
||
├── stop_all.bat # 停止所有服务
|
||
└── LOCAL_SETUP.md # 本文档
|
||
```
|
||
|
||
## 生产环境部署
|
||
|
||
生产环境建议:
|
||
- 使用 MySQL 数据库
|
||
- 启用 Redis
|
||
- 使用 Nginx 反向代理
|
||
- 使用 Docker Compose 部署
|
||
- 配置 HTTPS
|
||
- 修改所有默认密钥
|
||
|
||
参考 `docker-compose.yml` 进行容器化部署。
|
||
|
||
## 技术栈
|
||
|
||
- **后端**: Python 3.11 + FastAPI + SQLAlchemy (async)
|
||
- **前端**: Flask + Jinja2 + 原生 CSS
|
||
- **数据库**: SQLite (开发) / MySQL (生产)
|
||
- **缓存**: 内存 (开发) / Redis (生产)
|
||
- **任务队列**: Celery + Redis (可选)
|
||
|
||
## 许可证
|
||
|
||
MIT
|