# 配置管理说明 ## 概述 本项目采用分层配置管理,支持多环境部署。配置系统基于Flask的配置机制,通过环境变量和配置文件实现灵活的配置管理。 ## 配置结构 ``` config/ ├── __init__.py # 配置工厂和映射 ├── base.py # 基础配置类 ├── development.py # 开发环境配置 ├── production.py # 生产环境配置 ├── testing.py # 测试环境配置 └── local.py # 本地配置(git忽略) ``` ## 环境变量文件 ``` env.example # 环境变量示例 env.test # 测试环境变量 env.production # 生产环境变量 .env # 本地环境变量(git忽略) ``` ## 使用方法 ### 1. 设置环境变量 复制环境变量示例文件: ```bash cp env.example .env ``` 编辑 `.env` 文件,设置实际的环境变量值。 ### 2. 在应用中使用配置 ```python from config import get_config # 获取当前环境的配置类 config_class = get_config() # 在Flask应用中使用 app.config.from_object(config_class) ``` ### 3. 切换环境 通过设置 `FLASK_ENV` 环境变量切换环境: ```bash # 开发环境 export FLASK_ENV=development # 生产环境 export FLASK_ENV=production # 测试环境 export FLASK_ENV=testing # 本地环境 export FLASK_ENV=local ``` ## 配置项说明 ### 必需配置项 - `SECRET_KEY`: Flask应用密钥 - `DATABASE_URL`: 数据库连接URL - `LLM_API_URL`: OpenAI兼容API基础URL - `LLM_API_KEY`: OpenAI兼容API密钥 - `WX_APPID`: 微信小程序AppID - `WX_SECRET`: 微信小程序Secret ### 可选配置项 - `FLASK_ENV`: 应用环境(默认:development) - `CORS_ORIGINS`: 跨域域名(默认:*) - `LOG_LEVEL`: 日志级别(默认:INFO) - `CACHE_TYPE`: 缓存类型(默认:simple) - `SESSION_LIFETIME_HOURS`: 会话生命周期(默认:24小时) ## 环境特定配置 ### 开发环境 (development) - 启用调试模式 - 使用SQLite数据库(如果未设置DATABASE_URL) - 关闭CSRF保护 - 详细的日志输出 ### 生产环境 (production) - 关闭调试模式 - 启用CSRF保护 - 使用Redis缓存 - 邮件错误报告 - 严格的跨域控制 ### 测试环境 (testing) - 使用内存数据库 - 关闭CSRF保护 - 使用测试密钥 - 最短的缓存时间 ### 本地环境 (local) - 继承开发环境配置 - 可自定义本地特定设置 - 不会被提交到版本控制 ## 安全注意事项 1. **敏感信息保护** - 不要在代码中硬编码敏感信息 - 使用环境变量管理所有敏感配置 - 确保 `.env` 文件不被提交到版本控制 2. **生产环境安全** - 使用强密码和密钥 - 设置具体的跨域域名 - 启用所有安全功能 3. **配置验证** - 应用启动时会验证必需配置项 - 缺少必需配置项会抛出异常 ## 最佳实践 1. **环境分离** - 不同环境使用不同的配置 - 避免在代码中硬编码环境特定配置 2. **配置文档** - 及时更新配置说明 - 记录配置项的用途和影响 3. **配置测试** - 在测试环境中验证配置 - 确保配置变更不会影响功能 4. **配置备份** - 备份重要的配置文件 - 记录配置变更历史 ## 故障排除 ### 常见问题 1. **配置加载失败** - 检查环境变量是否正确设置 - 确认配置文件路径正确 2. **敏感信息泄露** - 检查是否有硬编码的敏感信息 - 确认 `.env` 文件在 `.gitignore` 中 3. **环境切换失败** - 检查 `FLASK_ENV` 环境变量 - 确认对应的配置类存在 ### 调试技巧 1. **查看当前配置** ```python from config import get_config config = get_config() print(config.__dict__) ``` 2. **检查环境变量** ```python import os print(os.environ.get('FLASK_ENV')) ``` 3. **验证配置项** ```python # 在应用启动时检查配置 app.logger.info(f"当前环境: {app.config['ENV']}") app.logger.info(f"调试模式: {app.config['DEBUG']}") ```