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