同步操作将从 张奇峰/GinSkeleton 强制同步,此操作会覆盖自 Fork 仓库以来所做的任何修改,且无法恢复!!!
确定后同步将在后台操作,完成时将刷新页面,请耐心等待。
1.这是一个基于go语言gin框架的web项目骨架,专注于前后端分离的业务场景,其目的主要在于将web项目主线逻辑梳理清晰,最基础的东西封装完善,开发者更多关注属于自己的的业务即可。
2.本项目骨架封装了以tb_users
表为核心的全部功能(主要包括用户相关的接口参数验证器、注册、登录获取token、刷新token、CURD以及token鉴权等),开发者拉取本项目骨架,在此基础上就可以快速开发自己的项目。
3.本项目骨架请使用master
分支版本即可, 该分支是最新稳定分支 .
4.本项目骨架从V1.4.00开始,要求go语言版本必须 >=1.15,才能稳定地使用gorm v2读写分离方案,go1.15下载地址:https://studygolang.com/dl
1.提交问题请在项目顶栏的
issue
直接添加问题,基本上都是每天处理当天上报的问题。
2.本项目优先关注 Gitee Issue 仓库的所有问题, github 太卡严重影响效率。
// 1.安装的go语言版本必须>=1.15 .
// 2.配置go包的代理,打开你的终端(cmd黑窗口)并执行以下命令(windwos系统)
// 其他操作系统自行参见:https://goproxy.cn
go env -w GO111MODULE=on
go env -w GOPROXY=https://goproxy.cn,direct
// 3.下载本项目依赖库
使用 goland(>=2019.3版本) 打开本项目,打开 goland 底部的 Terminal ,执行 go mod tidy 下载本项目依赖库
// 1.Mysql 数据库用户
// mysql数据库是默认数据库,使用相关的客户端还原即可
找到`database/db_demo_mysql.sql`导入数据库,
// 2.SqlServer 数据库用户
1.找到`database/db_demo_sqlserver.sql`,复制内容,在相关的客户端窗口界面一次性执行即可,
2.在 app/model 目录内,使用 users_for_sqlserver.txt 的内容覆盖同目录的 users.go 已有内容
3.在 config/gorm_v2.yml 中,修改 UseDbType:sqlserver
// 3.PostgreSql 数据库用户
1.首先使用相关的客户端软件,手动创建数据 db_goskeleton,选择该数据库.
2.找到`database/db_demo_postgre.sql`,复制内容,在相关的客户端窗口界面一次性执行即可,
3.在 app/model 目录内,使用 users_for_postgres.txt 的内容覆盖同目录的 users.go 已有内容
4.在 config/gorm_v2.yml 中,修改 UseDbType:postgresql
// 4.完成以上三者中的其中一个之后,
在 config/gorm_v2.yml 选择您需要使用的数据库类型、配置账号、密码、端口等。
// 1.启动项目
使用goland打开本项目,在根目录手动更新项目依赖,执行命令: go mod tidy
双击`cmd/(web|api|cli)/main.go`,进入代码界面,找到 `main` 函数左侧,鼠标点击 `run`即可启动,此外鼠标右键`run`也可以启动.
// goland 终端底栏打开`terminal`, 依次执行以下命令,设置编译前的参数
// 特别注意: 以下三个命令执行时,前后不要有空格,否则最后编译可能会报错,无法编译出最终可执行文件
# 追加 env -w 表示将值写入环境变量,否则每次只是临时生效,
# 对于运行在linux服务器的程序后续编译就不需要重复设置编译前的参数,如果程序最终运行在windows,则编译参数 GOOS=windows
go env -w GOARCH=amd64 // cpu架构
go env -w GOOS=linux // 程序运行的最终系统,linux、windows、darwin(苹果macos系统)
go env -w CGO_ENABLED=0 // window编译设置Cgo模块关闭,因为windows上做cgo开发太麻烦,如果引用了Cgo库库,那么请在linux环境开发、编译
// 编译出最终可执行文件,进入根目录(GinSkeleton所在目录,也就是 go.mod 所在的目录)
// 编译时建议追加参数:-ldflags "-w -s" ,-w 表示去除调试信息,禁止gdb调试,-s 表示去除符号表(符号表在链接时起着按符号寻址的作用,静态编译后用不到)
// 追加参数编译后的程序体积也会比原来减少25%左右.
// web|api|cli 三个目录选择其一即可,表示编译的入口目录
go build -o demo_goskeleton -ldflags "-w -s" cmd/(web|api|cli)/main.go
这部分主要介绍了
项目初始化流程
、路由
、表单参数验证器
、控制器
、model
、service
以及websocket
为核心的主线逻辑.
进入主线逻辑文档
随着项目不断完善以下列表模块会陆续增加, 虽然数目可能看起来会比较多,但是您只需要选择自己所需要的搭配主线使用即可.
只要掌握主线逻辑,结合以下模块,会让整个项目的操作更加流畅、简洁.
序号 | 功能模块 | 文档地址 |
---|---|---|
1 | 全局变量(日志、gorm、配置模块、雪花算法) | 清单一览 |
2 | 表单参数验证器语法 | validator |
3 | 复杂表单参数提交 | 复杂表单参数提交文档 |
4 | 消息队列 | rabbitmq文档 |
5 | cli命令 | cobra文档 |
6 | goCurl、httpClient | httpClient客户端 |
7 | websocket js客户端 | websocket服务端 |
8 | 控制器aop切面编程 | Aop切面编程 |
9 | redis | redis使用示例 |
10 | gorm_v2 CURD 操作精华版 | gorm+ginskeleton 增删改查精华 |
11 | gorm_v2操作(mysql、sqlserver、postgreSql) | gorm v2 更多测试用例 |
12 | 多源数据库的操作 | 同时连接多台服务器的mysql、sqlserver、postgresql操作 |
13 | gorm_v2 Scan Find函数查询结果一键树形化 | sql结果树形化反射扫描器 |
14 | 日志记录 | zap高性能日志 |
15 | ELK 项目日志顶级解决方案 |
elk 7.13.3 推荐使用 |
16 | 验证码(captcha)以及验证码中间件 | 验证码使用详情 |
17 | nginx配置(https、负载均衡) | nginx配置详情 |
18 | 主线解耦 | 对验证器与控制器进行解耦 |
19 | Casbin 接口访问权限管控 | Casbin使用介绍 |
20 | Mysql主从同步(旨在实现读写分离) | 使用docker-compose快速搭建 |
序号 | 部署办法 | 文档地址 |
---|---|---|
1 | 开发、调试环境 | 最简单的 nohup |
2 | 生产环境之supervisor进程守护 | 稳定可靠的进程守护方案 |
3 | 生产环境之docker部署方案 | 稳定可靠、版本回滚、扩容非常灵活的方案 |
序号 | 运维模块 | 文档地址 |
---|---|---|
1 | linux服务器 |
性能指标监控 |
1.开发之初,我们的目标就是追求极致的高性能,因此在项目整体功能越来越趋于完善之时,我们现将进行一次全面的性能分析评测.
2.通过执行相关代码, 跟踪 cpu 耗时 和 内存占用 来分析各个部分的性能,CPU耗时越短性、内存占用越低能越优秀,反之就比较垃圾.
序号 | 分析对象 | 文档地址 |
---|---|---|
1 | 项目骨架主线逻辑 | 主线分析报告 |
2 | 操作数据库代码段 | 操作数据库代码段分析报告 |
序号 | 分析对象 | 文档地址 |
---|---|---|
1 | 操作数据库代码段 | 操作数据库代码段 |
1.本系统是基于 GinSkeleton(v1.5.10) + Iview(v4.5.0) 开发而成的企业级项目后台骨架.
2.在线演示系统相比本地运行的版本收缩了修改、删除 数据的权限.
AppDebug
设置为 false
时,gin 路由默认启用 release
模式,并且不会记录接口访问日志,生产环境请使用 nginx
代理,也方便实现负载均衡.cli
模式执行操作数据库命令时支持 created_at
和 updated_at
字段自动赋值.gorm v2
接入层 utils
增加 Create
函数的参数类型非指针时拦截检查逻辑, 避免发生 panic
,该函数官方没有针对数据类型做安全检查.gorm v2
接入层 utils
增加 Save、Update
函数的参数类型非指针时拦截检查逻辑,以便支持 gorm
的所有回调函数.gorm
函数 Create 、Save、Update
时请统一传递指针类型的参数, 如果老项目直接合并 ginskeleton
的代码, 原来调用 Save、Update
函数的参数需要手动修改为指针类型.gorm
包相关的接入层(utils)日志部分也同步更新.linux
环境启动时,如果 public
目录内有从 windows
环境复制过来的软连接无法删除的问题.token
刷新路由与其他路由逻辑分离.≤ V1.5.24
包括此版本 token
认证中间件存在被恶意构造特殊 token
绕过的风险,请尽快升级到最新版.app/http/middleware/authorization/auth.go
替换 V1.5.24
以及之前的版本同位置代码即可.app/model/users.go
中,操作数据库的函数参数,个别使用了 float64
,全部统一为 int
系列,避免给开发者带来不必要的困扰.app/model/users_for_postgres.txt
中一处bug,登陆后,登陆次数+1时sql语句报错.http://github.com/casbin/gorm-adapter
依赖包提交pr,由于官方已经合并,此包更新至最新版,解决postgresql创建索引报错的bug.docker-compose.yml
集成环境快速部署脚本,详情参见常用开发模块第 13 项.V 1.1.xx - 1.4.xx 版本日志
1.历史日志
此处可能存在不合适展示的内容,页面不予展示。您可通过相关编辑功能自查并修改。
如您确认内容无涉及 不当用语 / 纯广告导流 / 暴力 / 低俗色情 / 侵权 / 盗版 / 虚假 / 无价值内容或违法国家有关法律法规的内容,可点击提交进行申诉,我们将尽快为您处理。