You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
spiderman/CONFIG_GUIDE.md

213 lines
4.6 KiB

# 环境配置指南
## 📋 概述
本项目支持通过环境变量和配置文件来管理应用程序配置。配置系统具有以下特性:
- 🔧 支持从 `.env``config.env` 文件加载配置
- 🌍 环境变量优先级高于配置文件
- 🎯 针对开发和生产环境的不同配置
- 📚 完整的配置文档和示例
## 🚀 快速开始
### 1. 设置配置文件
```bash
# 复制示例配置文件
cp config.env.example config.env
# 或使用Makefile
make env-setup
```
### 2. 编辑配置
编辑 `config.env` 文件,根据您的环境调整配置:
```bash
# 服务器配置
PORT=8080
# Fabric配置
MSP_ID=Org1MSP
CRYPTO_PATH=../../test-network/organizations/peerOrganizations/org1.example.com
CHANNEL_NAME=mychannel
CHAINCODE_NAME=basic
# 日志配置
LOG_LEVEL=info
LOG_FORMAT=text
# 环境配置
ENVIRONMENT=development
```
### 3. 运行应用
```bash
# 开发环境
make run-dev
# 生产环境
make run-prod
# 或直接运行
make run
```
## 📖 配置选项
### 服务器配置
| 变量 | 默认值 | 描述 |
|------|--------|------|
| `PORT` | `8080` | HTTP服务器端口 |
### Hyperledger Fabric配置
| 变量 | 默认值 | 描述 |
|------|--------|------|
| `MSP_ID` | `Org1MSP` | MSP身份ID |
| `CRYPTO_PATH` | `../../test-network/organizations/...` | 加密材料基础路径 |
| `CERT_PATH` | `{CRYPTO_PATH}/users/.../signcerts` | 证书路径 |
| `KEY_PATH` | `{CRYPTO_PATH}/users/.../keystore` | 私钥路径 |
| `TLS_CERT_PATH` | `{CRYPTO_PATH}/peers/.../tls/ca.crt` | TLS证书路径 |
| `PEER_ENDPOINT` | `dns:///localhost:7051` | Peer节点gRPC端点 |
| `GATEWAY_PEER` | `peer0.org1.example.com` | 网关Peer名称 |
| `CHANNEL_NAME` | `mychannel` | 区块链通道名称 |
| `CHAINCODE_NAME` | `basic` | 链码名称 |
### 日志配置
| 变量 | 默认值 | 可选值 | 描述 |
|------|--------|--------|------|
| `LOG_LEVEL` | `info` | `panic`, `fatal`, `error`, `warn`, `info`, `debug`, `trace` | 日志级别 |
| `LOG_FORMAT` | `text` | `text`, `json` | 日志格式 |
### 环境配置
| 变量 | 默认值 | 可选值 | 描述 |
|------|--------|--------|------|
| `ENVIRONMENT` | `development` | `development`, `production` | 运行环境 |
| `API_TIMEOUT` | `30` | 数字 | API超时时间(秒) |
| `DB_TIMEOUT` | `10` | 数字 | 数据库超时时间(秒) |
## 🔧 配置优先级
配置加载优先级(从高到低):
1. **环境变量** - 系统环境变量
2. **config.env** - 项目配置文件
3. **默认值** - 代码中定义的默认值
## 💡 使用示例
### 开发环境配置
```bash
# config.env for development
ENVIRONMENT=development
LOG_LEVEL=debug
LOG_FORMAT=text
PORT=8080
```
### 生产环境配置
```bash
# config.env for production
ENVIRONMENT=production
LOG_LEVEL=warn
LOG_FORMAT=json
PORT=80
```
### Docker环境配置
```bash
# 通过环境变量传递
docker run -p 8080:8080 \
-e ENVIRONMENT=production \
-e LOG_FORMAT=json \
-e LOG_LEVEL=info \
spiderman
```
## 🎯 环境特定功能
### 开发环境
- ✅ Swagger文档可用 (`/swagger/`)
- 📊 详细的调试日志
- 🔧 热重载支持
### 生产环境
- 🚫 Swagger文档关闭
- 📈 JSON格式日志
- ⚡ 优化的性能设置
## 🛠 Makefile命令
```bash
# 环境配置
make env-setup # 设置配置文件
make show-config # 显示当前配置
# 运行命令
make run # 使用配置文件运行
make run-dev # 开发环境运行
make run-prod # 生产环境运行
# Docker命令
make docker-run # Docker运行
make docker-run-dev # Docker开发环境运行
```
## 🔍 配置验证
检查当前配置:
```bash
make show-config
```
运行时配置验证:
```bash
# 启动应用时会显示加载的配置
make run-dev
```
## 🚨 安全注意事项
1. **不要提交包含敏感信息的配置文件到版本控制**
2. **生产环境使用环境变量而不是配置文件**
3. **定期轮换证书和密钥**
4. **使用适当的文件权限保护配置文件**
## 🔧 故障排除
### 常见问题
**Q: 配置文件没有生效?**
A: 检查文件名是否正确(`config.env`),环境变量优先级更高
**Q: Fabric连接失败?**
A: 检查 `CRYPTO_PATH` 和相关证书路径是否正确
**Q: 日志级别没有改变?**
A: 确保 `LOG_LEVEL` 值正确,重启应用程序
### 调试配置
启用调试模式查看配置加载过程:
```bash
LOG_LEVEL=debug make run
```
## 📚 参考资料
- [Go环境变量最佳实践](https://12factor.net/config)
- [Hyperledger Fabric配置文档](https://hyperledger-fabric.readthedocs.io/)
- [项目结构说明](./PROJECT_STRUCTURE.md)