李林超博客
首页
归档
留言
友链
动态
关于
归档
留言
友链
动态
关于
首页
GO
正文
04.Beego框架参数配置
Leefs
2022-07-30 PM
2024℃
0条
[TOC] ### 前言 beego 目前支持 INI、XML、JSON、YAML 格式的配置文件解析,但是默认采用了 INI 格式解析,用户可以通过简单的配置就可以获得很大的灵活性。 ### 一、概述 beego 默认使用了 INI 格式解析配置文件,通常在项目中会存在很多系统参数、业务参数配置,这些参数通常都是通过配置文件进行配置,而且不是写死在代码里面。 例如: mysql 账号密码之类的系统参数,如果写死在代码里面,每次修改参数都得重新打包升级,非常不灵活。使用配置文件就比较方便,无需重新编译代码。 *注意:修改配置文件后,需要重启应用,配置才生效,即使使用bee run运行项目也得重启。* ### 二、Beego系统参数 beego 默认会解析当前应用下的 `conf/app.conf` 文件。 通过这个文件可以初始化很多 beego 的默认参数: ```ini #应用名称 appname = go_project # 应用监听端口 httpport = 8080 # 运行模式,常用的运行模式有dev, test, prod runmode ="dev" # 是否模板自动渲染,默认值为 true autorender = false # 是否异常恢复,默认值为 true recoverpanic = false # 模板路径,默认值是 views viewspath = "myview" ``` **beego常用配置** | 参数名 | 默认值 | 说明 | | :-------------------- | :------------- | :----------------------------------------------------------- | | AppName | beego | 应用名称,通过 `bee new` 创建的是创建的项目名 | | RunMode | dev | 程序运行模式,常用模式有dev、test、prod,一般用于区分不同的运行环境 | | RouterCaseSensitive | true | 是否路由忽略大小写匹配 | | ServerName | beego | beego 服务器默认在请求的时候输出 server 头的值。 | | RecoverPanic | true | 是否异常恢复,默认值为 true,即当应用出现异常的情况,通过 recover 恢复回来,而不会导致应用异常退出。 | | EnableGzip | false | 是否开启 gzip 支持 | | MaxMemory | 64M | 文件上传默认内存缓存大小,单位是字节 | | AutoRender | true | 是否模板自动渲染,对于 API 类型的应用,应用需要把该选项设置为 false,不需要渲染模板。 | | StaticDir | static | 静态文件目录设置 | | ViewsPath | views | 模板路径 | | Graceful | false | 是否开启热升级,默认是 false,关闭热升级。 | | ServerTimeOut | 0 | 设置 HTTP 的超时时间,默认是 0,不超时。 | | HTTPAddr | | 应用监听地址,默认为空,监听所有的网卡 IP。 | | HTTPPort | 8080 | 应用监听端口 | | EnableHTTPS | false | 是否启用 HTTPS,默认是 false 关闭。当需要启用时,先设置 EnableHTTPS = true,并设置 HTTPSCertFile 和 HTTPSKeyFile | | HTTPSAddr | | https应用监听地址,默认为空,监听所有的网卡 IP。 | | HTTPSPort | 10443 | https应用监听端口 | | HTTPSCertFile | | 开启 HTTPS 后,ssl 证书路径 | | HTTPSKeyFile | | 开启 HTTPS 之后,SSL 证书 keyfile 的路径。 | | EnableAdmin | false | 是否开启进程内监控模块,默认 false 关闭。 | | AdminAddr | localhost | 监控程序监听的地址。 | | AdminPort | 8088 | 监控程序监听的地址。 | | SessionOn | false | session 是否开启 | | SessionProvider | memory | session 的引擎, 详情参考session章节的教程 | | SessionName | beegosessionID | 存在客户端的 cookie 名称。 | | SessionGCMaxLifetime | 3600 | session 过期时间, 单位秒。 | | SessionProviderConfig | | 配置信息,根据不同的session引擎设置不同的配置信息,详细的配置请参考session章节的教程 | | SessionCookieLifeTime | 3600 | session 默认存在客户端的 cookie 的时间, 单位秒。 | | SessionDomain | | session cookie 存储域名。 | *注意:参数名不区分大小写。* ### 三、自定义参数 除了beego系统自带的配置,也可以自定义配置,然后通过`beego.AppConfig`对象的函数读取配置。 **示例** 在配置文件`app.conf`增加下面自定义配置 ```ini # 下面是关于mysql数据库的配置参数 mysql_user = "root" mysql_password = "123456" mysql_host = "127.0.0.1:3306" mysql_dbname = "test" ``` **下面是读取配置代码** ```go beego.AppConfig.String("mysql_user") beego.AppConfig.String("mysql_password") beego.AppConfig.String("mysql_host") beego.AppConfig.String("mysql_dbname") ``` `beego.AppConfig`对象,定义了一些常用的函数,用于读取配置。 **常用的函数:** | 函数名 | 说明 | | :----- | :------------------------ | | String | 以字符串的方式返回参数 | | Int | 以int类型的方式返回参数 | | Int64 | 以Int64类型的方式返回参数 | | Bool | 以Bool类型的方式返回参数 | | Float | 以Float类型的方式返回参数 | *提示: 以上函数,只有一个参数,就是配置的名字* 如果配置项的参数为空,希望返回默认值,可以使用下面的函数: | 函数名 | 说明 | | :------------ | :------------------------ | | DefaultString | 以字符串的方式返回参数 | | DefaultInt | 以int类型的方式返回参数 | | DefaultInt64 | 以Int64类型的方式返回参数 | | DefaultBool | 以Bool类型的方式返回参数 | | DefaultFloat | 以Float类型的方式返回参数 | *提示: 以上函数,只有两个参数,第一个参数是配置项名字,第二个参数是默认值* **示例** ```go // 如果mysql_port配置项的参数为空,则返回3306 beego.AppConfig.DefaultInt("mysql_port", 3306) ``` ### 四、不同运行级别的参数 前面提到 runmode 参数可以设置不同的运行级别,我们一般用来区分不同的运行环境,例如: prod、dev、test等等。 如果希望数据库配置在不同环境,账号密码都不一样,可以使用如下配置方式: ```ini # 配置运行级别 runmode = test [dev] mysql_user = "root" mysql_password = "123456" mysql_host = "127.0.0.1:3306" mysql_dbname = "test1" [test] mysql_user = "root" mysql_password = "654321" mysql_host = "192.168.129.101:3306" mysql_dbname = "test2" [prod] mysql_user = "root" mysql_password = "741852" mysql_host = "192.168.129.102:3306" mysql_dbname = "test3" ``` 上面的例子,为dev,test,prod三个环境配置了不同的数据库参数,当通过`beego.AppConfig`读取参数的时候,由runmode决定读取哪个环境的参数。 ```go s := beego.AppConfig.String("mysql_password") fmt.Println(s) //123456 ``` ### 五、使用多个配置文件 在实际项目中,一般都使用多个配置文件管理配置,多个配置文件也方便模块化管理配置。 例如新建一个`app-dev.conf`配置文件,用来保存数据库、Redis等非公共连接配置: ```ini mysql_user = "root" mysql_password = "123456" mysql_host = "127.0.0.1:3306" mysql_dbname = "test" #redis 模式 #server: 单机服务模式 cluster:集群模式 redis_mode= "server" #redis 数据库 redis_db =0 #redis主机地址 redis_addr = "127.0.0.1:6379" #redis密码 redis_password ="123456" ``` 然后在conf/app.conf主配置文件中,通过include 将`app-dev.conf`配置文件包含进去。 ```ini appname = go_project httpport = 8080 runmode = dev # 包含app-dev配置 include "app-dev.conf" ``` 这种通过include包含其他配置文件的方式,跟把所有配置都写在一个配置文件的效果是一样的, 区别就是使用多个配置文件,各个模块的配置更加清晰。 *说明: 无论是使用include包含配置文件,还是直接将所有配置都写在一个配置文件,读取配置的方式都一样。* ### 六、 支持环境变量配置 到目前为止,我们的配置参数都是通过ini配置文件进行配置,如果想通过环境变量进行配置怎么办?在docker容器环境运行,通常都需要通过环境变量配置应用参数。 beego支持优先从环境变量中读取参数, 只要在ini配置文件中通过 **${环境变量名}**,定义配置项的值。 **示例** ```ini runmode = "${APP_RUN_MODE || dev}" httpport = "${APP_PORT || 9090}" ``` **说明** + 如果环境变量`APP_RUN_MODE`值不为空,runmode配置的参数就等于`APP_RUN_MODE`环境变量的值,如果为空,则使用dev作为默认参数。 + 同理`APP_PORT`为空,则使用9090作为默认值,否则使用`APP_PORT`的值。 *附原文链接地址* *http://www.codebaoku.com/beego/beego-config.html*
标签:
Beego
非特殊说明,本博所有文章均为博主原创。
如若转载,请注明出处:
https://lilinchao.com/archives/2284.html
上一篇
03.Beego框架快速入门
下一篇
05.Beego路由配置
评论已关闭
栏目分类
随笔
2
Java
326
大数据
229
工具
31
其它
25
GO
47
NLP
4
标签云
JavaSE
GET和POST
Spark Streaming
Kafka
排序
高并发
RSA加解密
递归
Typora
Ubuntu
数据结构和算法
LeetCode刷题
设计模式
Http
JavaWeb
栈
SQL练习题
Linux
Shiro
序列化和反序列化
工具
DataWarehouse
链表
pytorch
Elastisearch
字符串
Map
Java工具类
数据结构
HDFS
友情链接
申请
范明明
庄严博客
Mx
陶小桃Blog
虫洞
评论已关闭