Files
aitsc/config/README.md

185 lines
4.0 KiB
Markdown
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
# 配置管理说明
## 概述
本项目采用分层配置管理支持多环境部署。配置系统基于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']}")
```