# 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