You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

147 lines
11 KiB

AppDebug: true # 设置程序所处的模式debug=true 调试模式,日志优先显示在控制台, debug=false 非调试模式,将写入日志文件
HttpServer:
Api:
Port: ":20191" #门户网站类端口,注意前面有冒号
Web:
Port: ":20201" #后端应用类端口,注意前面有冒号
AllowCrossDomain: true #是否允许跨域,默认 允许更多关于跨域的介绍从参考https://www.yuque.com/xiaofensinixidaouxiang/bkfhct/kxddzd
TrustProxies: #设置gin可以信任的代理服务器(例如 nginx 前置代理服务器),详情参见文档https://www.yuque.com/xiaofensinixidaouxiang/bkfhct/vmobe7
IsOpen: 0 # 可选值0 或者 1,如果 go 服务是被 nginx 代理,建议该值设置为 1将 nginx 代理及机器的ip添加到 ProxyServerList 列表
ProxyServerList:
- "192.168.10.1" # nginx 代理服务器ip地址
- "192.168.10.2"
RSA:
KeySize: 2048
Token:
JwtTokenSignKey: "goskeleton" #设置token生成时加密的签名
JwtTokenOnlineUsers: 10 #一个账号密码允许最大获取几个有效的token当超过这个值第一次获取的token的账号、密码就会失效
JwtTokenCreatedExpireAt: 28800 #创建时token默认有效秒数token生成时间加上该时间秒数算做有效期,3600*8=28800 等于8小时
JwtTokenRefreshAllowSec: 86400 #对于过期的token允许在多少小时之内刷新超过此时间则不允许刷新换取新token86400=3600*24即token过期24小时之内允许换新token
JwtTokenRefreshExpireAt: 36000 #对于过期的token支持从相关接口刷新获取新的token它有效期为10个小时3600*10=36000 等于10小时
BindContextKeyName: "userToken" #用户在 header 头部提交的token绑定到上下文时的键名方便直接从上下文(gin.context)直接获取每个用户的id等信息
IsCacheToRedis: 0 #用户token是否缓存到redis, 如果已经正确配置了redis,建议设置为1, 开启redis缓存token1=用户token缓存到redis; 0=token只存在于mysql
Redis:
Host: "127.0.0.1"
Port: 6379
Auth: ""
MaxIdle: 10
MaxActive: 1000
IdleTimeout: 60
IndexDb: 1 # 注意 redis 默认连接的是 1 号数据库,不是 0号数据库
ConnFailRetryTimes: 3 #从连接池获取连接失败,最大重试次数
ReConnectInterval: 1 # 从连接池获取连接失败,每次重试之间间隔的秒数
Logs:
GinLogName: "/storage/logs/gin.log" #设置 gin 框架的接口访问日志
GoSkeletonLogName: "/storage/logs/goskeleton.log" #设置GoSkeleton项目骨架运行时日志文件名注意该名称不要与上一条重复 ,避免和 gin 框架的日志掺杂一起,造成混乱。
TextFormat: "json" #记录日志的格式参数选项console、json console 表示一般的文本格式
TimePrecision: "millisecond" #记录日志时相关的时间精度该参数选项second 、 millisecond 分别表示 秒 和 毫秒 ,默认为毫秒级别
MaxSize: 10 #每个日志的最大尺寸(以MB为单位 超过该值,系统将会自动进行切割
MaxBackups: 7 #保留旧日志最大个数
MaxAge: 15 #保留旧日志最大天数
Compress: false #日志备份时,是否进行压缩
Websocket: #该服务与Http具有相同的ip、端口因此不需要额外设置端口
Start: 0 #默认不启动该服务1=启动0=不启动)
WriteReadBufferSize: 20480 # 读写缓冲区分配字节,大概能存储 6800 多一点的文字
MaxMessageSize: 65535 # 从消息管道读取消息的最大字节
PingPeriod: 20 #心跳包频率,单位:秒
HeartbeatFailMaxTimes: 4 # 允许心跳失败的最大次数默认设置为PingPeriod=30秒检测一次连续4次没有心跳就会清除后端在线信息
ReadDeadline: 100 # 客户端在线情况下,正常的业务消息间隔秒数必须小于该值,否则服务器将会主动断开,该值不能小于心跳频率*允许失败次数,单位:秒。 0 表示不设限制,即服务器不主动断开不发送任何消息的在线客户端,但会消耗服务器资源
WriteDeadline: 35 # 消息单次写入超时时间,单位:秒
SnowFlake:
SnowFlakeMachineId: 2 #如果本项目同时部署在多台机器并且需要同时使用该算法请为每一台机器设置不同的ID区间范围: [0,1023]
FileUploadSetting:
Size: 32 #设置上传文件的最大值单位M注意 如果go前置nginx服务器nginx 默认限制文件上传大小为 50 M ,用户上传文件限制还需要继续修改 nginx 配置
UploadFileField: "file" #post上传文件时表单的键名
UploadFileSavePath: "/storage/app/uploaded/" #上传文件保存在路径, 该路径与 BasePath 进行拼接使用
UploadFileReturnPath: "/public/storage/uploaded/" # 文件上后返回的路径由于程序会自动创建软连接自动将资源定位到实际路径所有资源的访问入口建议都从public开始
AllowMimeType: #允许的文件mime类型列表
- "image/jpeg" #jpg、jpeg图片格式
- "image/png" #png图片格式
- "image/x-icon" #ico图片
- "image/bmp" #bmp图片
- "application/zip" #xlsx、docx、zip
- "application/x-gzip" #tar.gz
- "text/plain; charset=utf-8" #txt log json等文本文件
- "video/mp4" #视频文件例如mp4
- "audio/mpeg" #音频文件,例如: mp3
# casbin 权限控制api接口
Casbin:
# Casbin打开以后注意事项Mysql/MariDb 低版本数据库如果数据库表的引擎默认是 Myisam
# 程序会报错Specified key was too long; max key length is 1000 bytes
# 请手动复制 database/db_demo_mysql.sql 中创建 tb_auth_casbin_rule 的代码自行创建InnoDb引擎的表重新启动本项目即可
IsInit: 0 # 是否随项目启动同步初始化1=是0=否, 开启 Casbin 前请确保数据库连接配置正确
AutoLoadPolicySeconds: 5 # 扫描数据库策略的频率(单位:秒)
TablePrefix: "tb" # mysql、sqlserver 前缀为 tb postgres 数据库前缀请设置为 web.tb其中 web 是本项目创建的的模式
TableName: "auth_casbin_rule" # 程序最终创建的表为: tb_auth_casbin_rule (即在前缀和名称之间自动添加了下划线 _ )
ModelConfig: | # 竖线 | 表示以下整段文本保持换行格式
[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 = (g(r.sub, p.sub) || p.sub == "*" ) && keyMatch(r.obj , p.obj) && (r.act == p.act || p.act == "*")
RabbitMq:
HelloWorld:
#消息服务器地址、账号、密码, / (斜杠)表示默认的虚拟主机,如果是开发者自己创建的,直接追加在 / (斜杠)后面即可例如amqp://账号:密码@ip地址:5672/ginskeleton
Addr: "amqp://账号:密码@ip地址:5672/"
QueueName: "helloword_queue"
Durable: false #消息是否持久化
ConsumerChanNumber: 2 #消费者通道数量(允许一个消费者使用几个连接通道消费、处理消息)
OffLineReconnectIntervalSec: 5 #消费者掉线后,重连间隔的秒数
RetryCount: 5 #消费者掉线后,尝试重连最大次数
WorkQueue:
Addr: "amqp://账号:密码@ip地址:5672/" #参照前文地址说明
QueueName: "work_queue"
Durable: false #消息是否持久化
ConsumerChanNumber: 2 #消费者通道数量(允许一个消费者使用几个连接通道消费、处理消息)
OffLineReconnectIntervalSec: 5 #消费者掉线后,重连间隔的秒数
RetryCount: 5 #消费者掉线后,尝试重连最大次数
PublishSubscribe:
Addr: "amqp://账号:密码@ip地址:5672/" #消息服务器地址、账号、密码
ExchangeType: "fanout"
ExchangeName: "fanout_exchange" #即时消息队列名称,
DelayedExchangeName: "delayed_fanout_exchange" #延迟消息队列名称必须事先在rabbitmq 服务器管理端手动创建
Durable: false #消息是否持久化,如果初始化的是延迟消息队列,那么该参数会被程序强制设置为 true
QueueName: "" #队列名称,为空 表示所有订阅的消费者consumer都可以接受到同样的消息如果设置名称会导致只有最后一个启动的消费者能接受到消息。
ConsumerChanNumber: 1 #消费者通道数量(发布、订阅模式消费者使用一个通道,避免多个通道重复收到数据)
OffLineReconnectIntervalSec: 10 #消费者掉线后,重连间隔的秒数
RetryCount: 5 #消费者掉线后,尝试重连最大次数
Routing:
Addr: "amqp://账号:密码@ip地址:5672/" #参照前文地址说明
ExchangeType: "direct"
ExchangeName: "direct_exchange"
DelayedExchangeName: "delayed_direct_exchange" #延迟消息队列名称必须事先在rabbitmq 服务器管理端手动创建
Durable: false #消息是否持久化,如果初始化的是延迟消息队列,那么该参数会被程序强制设置为 true
QueueName: ""
OffLineReconnectIntervalSec: 10 #消费者掉线后,重连间隔的秒数
RetryCount: 5 #消费者掉线后,尝试重连最大次数
Topics:
Addr: "amqp://账号:密码@ip地址:5672/" #参照前文地址说明
ExchangeType: "topic"
ExchangeName: "topic_exchange"
DelayedExchangeName: "delayed_topic_exchange" #延迟消息队列名称必须事先在rabbitmq 服务器管理端手动创建
Durable: false #消息是否持久化,如果初始化的是延迟消息队列,那么该参数会被程序强制设置为 true
QueueName: ""
OffLineReconnectIntervalSec: 10 #消费者掉线后,重连间隔的秒数
RetryCount: 5 #消费者掉线后,尝试重连最大次数
#验证码(包括中间件)配置信息
Captcha:
captchaId: "captcha_id" # 验证码id提交时的键名
captchaValue: "captcha_value" #验证码值提交时的键名
length: 4 # 验证码生成时的长度