Files
weibo_signin/LOCAL_SETUP.md
2026-03-09 16:10:29 +08:00

254 lines
5.4 KiB
Markdown
Raw Permalink Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
# 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