# WWJCloud Backend 配置设置指南

## 📋 概述

本文档说明如何设置 WWJCloud Backend 的环境变量配置。

## 🚀 快速开始

### 1. 复制配置文件

```bash
# 复制示例配置文件
cp env.example .env

# 或者复制特定环境的配置
cp env.development .env  # 开发环境
cp env.production .env   # 生产环境
```

### 2. 修改配置

根据你的实际环境修改 `.env` 文件中的配置项。

## 📁 配置文件说明

### 配置文件类型

- `env.example` - 配置示例文件（包含所有配置项）
- `env.development` - 开发环境配置
- `env.production` - 生产环境配置
- `.env` - 实际使用的配置文件（需要手动创建）

### 配置优先级

1. **环境变量** (最高优先级)
2. **默认配置** (最低优先级)

## 🔧 必需配置项

### 应用基础配置

```bash
# 应用名称
APP_NAME=WWJCloud Backend

# 应用端口
PORT=3000

# 运行环境
NODE_ENV=development  # development, production, test
```

### 数据库配置

```bash
# 数据库主机
DB_HOST=localhost

# 数据库端口
DB_PORT=3306

# 数据库用户名
DB_USERNAME=root

# 数据库密码
DB_PASSWORD=your_password

# 数据库名称
DB_DATABASE=wwjcloud

# 是否同步数据库结构（生产环境必须为 false）
DB_SYNC=false

# 是否启用数据库日志
DB_LOGGING=false
```

### Redis 配置

```bash
# Redis 主机
REDIS_HOST=localhost

# Redis 端口
REDIS_PORT=6379

# Redis 密码
REDIS_PASSWORD=

# Redis 数据库编号
REDIS_DB=0

# Redis 键前缀
REDIS_KEY_PREFIX=wwjcloud:
```

### JWT 配置

```bash
# JWT 密钥（生产环境必须修改）
JWT_SECRET=your-super-secret-jwt-key

# JWT 过期时间
JWT_EXPIRES_IN=7d

# JWT 算法
JWT_ALGORITHM=HS256
```

## 🌍 环境特定配置

### 开发环境

```bash
# 复制开发环境配置
cp env.development .env

# 主要特点：
# - 启用详细日志 (LOG_LEVEL=debug)
# - 启用数据库日志 (DB_LOGGING=true)
# - 使用本地服务 (localhost)
# - 启用调试工具 (DEBUG_ENABLED=true)
```

### 生产环境

```bash
# 复制生产环境配置
cp env.production .env

# 主要特点：
# - 关闭详细日志 (LOG_LEVEL=warn)
# - 关闭数据库日志 (DB_LOGGING=false)
# - 使用生产服务器
# - 关闭调试工具 (DEBUG_ENABLED=false)
# - 启用监控 (PROMETHEUS_ENABLED=true)
```

## 🔐 安全配置

### 生产环境安全要求

1. **修改所有密钥**
   ```bash
   JWT_SECRET=your-super-secret-jwt-key-at-least-32-characters
   SESSION_SECRET=production-session-secret-key
   COOKIE_SECRET=production-cookie-secret-key
   ```

2. **设置强密码**
   ```bash
   DB_PASSWORD=your-strong-database-password
   REDIS_PASSWORD=your-strong-redis-password
   ```

3. **配置 CORS**
   ```bash
   CORS_ORIGIN=https://your-domain.com
   ```

4. **设置域名白名单**
   ```bash
   ALLOWED_DOMAINS=your-domain.com,api.your-domain.com
   ```

## 📊 监控配置

### 启用监控

```bash
# 启用指标收集
METRICS_ENABLED=true
METRICS_PORT=9090

# 启用 Prometheus 监控
PROMETHEUS_ENABLED=true

# 启用健康检查
HEALTH_CHECK_ENABLED=true
HEALTH_CHECK_INTERVAL=30000
```

### 追踪配置

```bash
# 启用分布式追踪
TRACING_ENABLED=true

# Jaeger 端点
JAEGER_ENDPOINT=http://jaeger:14268/api/traces
```

## 🔄 动态配置

### 启用动态配置

```bash
# 启用动态配置功能
ENABLE_DYNAMIC_CONFIG=true

# 配置缓存时间
CONFIG_CACHE_TTL=300
```

### 动态配置示例

通过 API 接口管理动态配置：

```bash
# 设置邮件配置
curl -X POST http://localhost:3000/adminapi/config/dynamic \
  -H "Content-Type: application/json" \
  -H "Authorization: Bearer your-token" \
  -d '{
    "key": "email.smtp",
    "value": {
      "host": "smtp.gmail.com",
      "port": 587,
      "secure": false
    },
    "description": "SMTP 服务器配置",
    "category": "email",
    "isPublic": false
  }'
```

## 🧪 测试配置

### 验证配置

```bash
# 启动应用后访问配置验证接口
curl http://localhost:3000/adminapi/config/validate

# 查看系统配置
curl http://localhost:3000/adminapi/config/system
```

### 配置检查清单

- [ ] 数据库连接正常
- [ ] Redis 连接正常
- [ ] JWT 密钥已设置
- [ ] 日志级别合适
- [ ] 文件上传路径存在
- [ ] 第三方服务配置正确

## 🚨 常见问题

### 1. 配置不生效

**问题**：修改了 `.env` 文件但配置没有生效

**解决**：
- 确保 `.env` 文件在项目根目录
- 重启应用
- 检查环境变量名称是否正确

### 2. 数据库连接失败

**问题**：无法连接到数据库

**解决**：
- 检查 `DB_HOST`、`DB_PORT`、`DB_USERNAME`、`DB_PASSWORD`
- 确保数据库服务正在运行
- 检查防火墙设置

### 3. Redis 连接失败

**问题**：无法连接到 Redis

**解决**：
- 检查 `REDIS_HOST`、`REDIS_PORT`、`REDIS_PASSWORD`
- 确保 Redis 服务正在运行
- 检查 Redis 配置

### 4. JWT 错误

**问题**：JWT 相关错误

**解决**：
- 确保 `JWT_SECRET` 已设置且足够复杂
- 检查 `JWT_EXPIRES_IN` 格式
- 验证 `JWT_ALGORITHM` 设置

## 📚 相关文档

- [配置中心使用指南](../src/config/README.md)
- [API 文档](http://localhost:3000/docs)
- [健康检查](http://localhost:3000/health)

## 🤝 支持

如果遇到配置问题，请：

1. 检查本文档的常见问题部分
2. 查看应用日志
3. 使用配置验证接口检查配置
4. 联系技术支持团队 