配置对象

配置对象定义:https://godoc.org/github.com/gogf/gf/net/ghttp#ServerConfig

方法列表:

简要说明:

  1. 可以通过SetConfigSetConfigWithMap来设置。
  2. 也可以使用Server对象的Set*/Enable*方法进行特定配置的设置。
  3. 主要注意的是,配置项在Server执行Start之后便不能再修改,以便产生并发安全问题。

我们可以使用SetConfigWithMap方法通过Key-Value键值对来设置/修改Server的特定配置,其余的配置使用默认配置即可。其中Key的名称即是ServerConfig这个struct中的属性名称,并且不区分大小写,单词间也支持使用-/_/空格符号连接,具体可参考【gconv.Struct转换规则】章节。

其中ServerRoot的键名也可以使用serverRoot, server-root, server_root, server root,其他配置属性以此类推。

一个比较完整的示例:

  1. s.SetConfigWithMap(g.Map{
  2. "Address": ":80",
  3. "ServerRoot": "/var/www/Server",
  4. "IndexFiles": g.Slice{"index.html", "main.html"},
  5. "ErrorLogEnabled": true,
  6. "PProfEnabled": true,
  7. "LogPath": "/var/log/ServerLog",
  8. "SessionIdName": "MySessionId",
  9. "SessionPath": "/tmp/MySessionStoragePath",
  10. "SessionMaxAge": 24 * time.Hour,
  11. "DumpRouterMap": false,
  12. })
  13. s.Run()

配置文件

GF v1.10版本开始,Server对象也支持通过配置文件进行便捷的配置。支持的配置选项以及配置说明请查看接口文档说明,文档中有详细说明,以下章节不会对配置选项作介绍。

当使用g.Server(单例名称)获取Server单例对象时,将会自动通过默认的配置管理对象获取对应的Server配置。默认情况下会读取server.单例名称配置项,当该配置项不存在时,将会读取server配置项。

多个Server的配置示例:

  1. Address = ":80"
  2. ServerRoot = "/var/www/Server"
  3. [server.server1]
  4. Address = ":8080"
  5. [server.server2]
  6. Address = ":8088"
  7. ServerRoot = "/var/www/Server2"

我们可以通过单例对象名称获取对应配置的Server单例对象:

比如上一个章节的示例,对应的配置文件如下:

  1. [server]
  2. Address = ":8199"
  3. ServerRoot = "/var/www/Server"
  4. IndexFiles = ["index.html", "main.html"]
  5. AccessLogEnabled = true
  6. ErrorLogEnabled = true
  7. PProfEnabled = true
  8. LogPath = "/var/log/ServerLog"
  9. SessionIdName = "MySessionId"
  10. SessionPath = "/tmp/MySessionStoragePath"
  11. SessionMaxAge = "24h"

同理,配置属性项的名称也不区分大小写,单词间也支持使用-/_符号连接。也就是说以下配置文件效果和上面的配置文件一致: