Files
aitsc/config/README.md

185 lines
4.0 KiB
Markdown
Raw Permalink Normal View History

# 配置管理说明
## 概述
本项目采用分层配置管理支持多环境部署。配置系统基于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']}")
```