Files
aitsc/config

配置管理说明

概述

本项目采用分层配置管理支持多环境部署。配置系统基于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: 数据库连接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. 查看当前配置

    from config import get_config
    config = get_config()
    print(config.__dict__)
    
  2. 检查环境变量

    import os
    print(os.environ.get('FLASK_ENV'))
    
  3. 验证配置项

    # 在应用启动时检查配置
    app.logger.info(f"当前环境: {app.config['ENV']}")
    app.logger.info(f"调试模式: {app.config['DEBUG']}")