|
|
|
|
# 环境配置指南
|
|
|
|
|
|
|
|
|
|
## 📋 概述
|
|
|
|
|
|
|
|
|
|
本项目支持通过环境变量和配置文件来管理应用程序配置。配置系统具有以下特性:
|
|
|
|
|
|
|
|
|
|
- 🔧 支持从 `.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)
|