介绍

Snow 框架的所有配置的数据结构定义都保存在config目录。你可随时查看这些文件并熟悉都有哪些配置选项可供你使用。

环境配置

对于应用程序运行的环境来说,不同的环境有不同的配置通常是很有用的。 例如,你可能希望在本地使用的缓存驱动不同于生产服务器所使用的缓存驱动。

你的 .env 文件不应该提交到应用程序的源代码控制系统中,因为每个使用你的应用程序的开发人员 / 服务器可能需要有一个不同的环境配置。此外,在入侵者获得你的源代码控制仓库的访问权的情况下,这会成为一个安全隐患,因为任何敏感的凭据都被暴露了。

如果是团队开发,则可能希望应用程序中仍包含 .env.example 文件。因为通过在示例配置文件中放置占位值,团队中的其他开发人员可以清楚地看到哪些环境变量是运行应用程序所必需的。你也可以创建一个 .env.testing 文件,当运行单元测试时,加载此配置文件。

文件路径

默认使用根目录的.env配置文件,可以在启动服务时添加命令参数 -c "{path}" 传入配置文件的路径

配置文件格式

目前基于toml的语义化配置文件格式,更多的样例请参考:https://github.com/toml-lang/toml

常用方法

  1. ## 获取启动命令配置
  2. config.GetOptions()
  3. ## 获取全局配置
  4. config.GetConf()
  5. ## 是否开启调试模式
  6. config.IsDebug()
  7. ## 当前环境模式
  8. config.GetEnv()
  9. ## 是否与输入环境模式一致
  10. config.IsEnvEqual(config.ProdEnv)

示例

  1. Debug = true # 调试模式
  2. Env = "local" # local-本地 develop-开发 beta-预发布 production-线上
  3. [Log]
  4. Handler = "file" # 日志输出方式 file表示文件输出 stdout表示标准输出
  5. Dir = "/go/src/github.com/qit-team/snow/logs" # 日志目录
  6. Level = "debug" # 日志等级:只有大于等于此等级的日志才会输出
  7. [Db]
  8. Driver = "mysql" # 数据库驱动
  9. [Db.Option]
  10. MaxConns = 128 # 连接池,最大连接数
  11. MaxIdle = 32 # 最大空闲连接数
  12. IdleTimeout = 180 # 空闲连接回收时间 second
  13. Charset = "utf8mb4" # 字符集
  14. ConnectTimeout = 3 # 连接超时时间 second
  15. [Db.Master]
  16. Host = "127.0.0.1"
  17. Port = 3306
  18. User = "root"
  19. Password = "123456"
  20. DBName = "test"
  21. [[Db.Slaves]] # 从库1 没有从库可不配置
  22. Host = "127.0.0.1"
  23. Port = 3306
  24. User = "root"
  25. Password = "123456"
  26. DBName = "test"
  27. [[Db.Slaves]] # 从库2
  28. Host = "127.0.0.1"
  29. Port = 3306
  30. User = "root"
  31. Password = "123456"
  32. DBName = "test"
  33. [Api]
  34. Host = "0.0.0.0" # HTTP服务监听的地址
  35. Port = 8000 # HTTP服务监听的端口
  36. [Cache]
  37. Driver = "redis" # 默认的缓存驱动类型
  38. [Redis.Master]
  39. Host = "127.0.0.1"
  40. Port = 6379
  41. Password = "" # 密码,没有可配置为空
  42. DB = 0 # 选择几号库 默认为0
  43. [[Redis.Slaves]]
  44. Host = "127.0.0.1"
  45. Port = 6379
  46. Password = ""
  47. DB = 0
  48. [Redis.Option]
  49. MaxIdle = 64 # 最大空闲连接数
  50. MaxConns = 256 # 连接池,最大连接数
  51. IdleTimeout = 180 # 空闲连接回收时间 second
  52. ConnectTimeout = 1 # 连接超时时间
  53. ReadTimeout = 1 # 读超时时间
  54. WriteTimeout = 1 # 写超时时间
  55. [AliMns]
  56. Url = "" # 实例URL
  57. AccessKeyId = "" # ak
  58. AccessKeySecret = "" # sk