Skip to content

项目配置文档

1. 项目概述

1.1 项目结构

本项目采用微服务架构,分为管理系统与API系统两部分:

  • 管理系统:提供后台管理功能,包括系统配置、用户管理、数据监控、权限控制等
  • API系统:提供对外接口服务,处理客户端请求,实现业务逻辑

1.2 技术栈

  • 后端语言:Go 语言
  • 数据库:MySQL
  • 缓存:Redis
  • 文件存储:支持 S3 协议的对象存储
  • 认证:JWT (JSON Web Token)
  • 权限控制:Casbin

2. 核心配置项

2.1 基本服务配置

yaml
# 服务基本信息
Name: upgradelink-admin  # 服务名称,用于标识不同的服务实例
Host: 0.0.0.0            # 服务监听地址,0.0.0.0表示监听所有网络接口
Port: 9110               # 服务监听端口

# 服务性能配置
Timeout: 300000          # 请求超时时间(毫秒)
MaxBytes: 1073741824     # 最大请求体大小(字节),此处为1GB

2.2 运行环境配置

yaml
Mode: dev                # 运行模式:dev(开发)、test(测试)、prod(生产)

2.3 文件存储配置

文件存储支持 S3 协议的对象存储服务,配置完成后可在后台系统(云文件管理 -> 上传)进行测试上传。

yaml
UploadConf:
  Bucket:       # 存储桶名称
  SecretID:     # 存储桶访问密钥ID
  SecretKey:    # 存储桶访问密钥
  Endpoint:     # 存储桶endpoint
  Folder:       # 存储桶文件夹
  Region:       # 存储桶区域
  CdnUrl:       # CDN域名,配置后会替换对象存储URL前缀

注意:配置 CdnUrl 后,系统会自动将对象存储的 URL 前缀替换为 CDN 域名,并将替换后的 URL 存入数据库,从而使用 CDN 加速文件访问。

2.4 认证配置

yaml
Auth:
  AccessSecret: jS6VKDtsJf3z1n2VKDtsJf3z  # JWT访问密钥,用于签名和验证令牌
  AccessExpire: 259200                     # JWT令牌过期时间(秒),此处为3天

2.5 跨域配置

yaml
CROSConf:
  Address: '*'  # 允许的跨域来源,*表示允许所有来源

2.6 日志配置

yaml
Log:
  ServiceName: UpgradeLink-admin  # 日志服务名称
  Mode: file                      # 日志输出模式:console(控制台)或file(文件)
  Encoding: json                  # 日志编码格式:json或console
  TimeFormat: "2006-01-02 15:04:05.000"  # 日志时间格式
  Path: "./logs"                  # 日志文件存储路径
  Level: debug                    # 日志级别:debug, info, warn, error
  KeepDays: 3                     # 日志文件保留天数
  Rotation: daily                 # 日志轮转方式:daily(按天)或size(按大小)

2.7 权限控制配置

使用 Casbin 实现基于 RBAC (基于角色的访问控制) 的权限管理:

yaml
CasbinConf:
  ModelText: |
    [request_definition]
    r = sub, obj, act
    [policy_definition]
    p = sub, obj, act
    [role_definition]
    g = _, _
    [policy_effect]
    e = some(where (p.eft == allow))
    [matchers]
    m = r.sub == p.sub && keyMatch2(r.obj,p.obj) && r.act == p.act

2.8 数据库配置

yaml
DatabaseConf:
  Type: mysql                    # 数据库类型
  Host: 127.0.0.1                # 数据库主机地址
  Port: 3306                     # 数据库端口
  DBName: upgrade                # 数据库名称
  Username: root                 # 数据库用户名
  Password: Rootroot123!         # 数据库密码
  MaxOpenConn: 100               # 最大打开连接数
  SSLMode: disable               # SSL模式:disable(禁用)或require(要求)
  CacheTime: 5                   # 缓存时间(秒)
  MysqlConfig: "&loc=Asia%2FShanghai"  # MySQL额外配置,此处设置时区为上海

2.9 Redis配置

yaml
RedisConf:
  Host: 127.0.0.1:6379  # Redis主机地址和端口
  Db: 0                 # Redis数据库编号
  Pass: a123456         # Redis密码

3. 配置管理最佳实践

3.1 环境分离

  • 开发环境:使用本地数据库和Redis,开启详细日志
  • 测试环境:使用测试数据库,模拟生产环境配置
  • 生产环境:使用正式数据库,关闭调试日志,增强安全配置

3.2 安全注意事项

  • 敏感信息(如密码、密钥)不应硬编码在配置文件中,建议使用环境变量或配置中心
  • 生产环境应使用 HTTPS 协议
  • 定期更新密钥和密码
  • 限制数据库和Redis的访问范围

3.3 性能优化

  • 根据服务负载调整 MaxOpenConn 参数
  • 合理设置缓存时间,减少数据库访问
  • 优化日志级别,生产环境避免使用 debug 级别
  • 定期清理日志文件,避免磁盘空间不足