|
|
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,允许在多少小时之内刷新,超过此时间则不允许刷新换取新token,86400=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缓存token,(1=用户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 # 验证码生成时的长度
|
|
|
|
|
|
|
|
|
BaiduCE:
|
|
|
ApiKey: "AR1SUIjaKSsCcDjj11QzHDOc" # 生成鉴权签名时使用的 API_KEY
|
|
|
SecretKey: "zvEb5CzpuGCZNdQC1TPmDh3IOWn5aWDT" # 生成鉴权签名时使用的 SECRET_KEY
|
|
|
QianFanAccessKey: "ALTAKOxb5YvHncyFr7Qbuv1cK0" # 访问千帆sdk 时用的 AccessKey
|
|
|
QianFanSecretKey: "1edf17c358574e75b9913ebff7d95b61" # 访问千帆sdk 时用的 SecretKey
|