同步操作将从 张奇峰/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服务器 |
性能指标监控 |
2 | 其他指标(作为了解即可) |
mysql监控 redis指标 nginx指标 go应用程序指标 |
1.开发之初,我们的目标就是追求极致的高性能,因此在项目整体功能越来越趋于完善之时,我们现将进行一次全面的性能分析评测.
2.通过执行相关代码, 跟踪 cpu 耗时 和 内存占用 来分析各个部分的性能,CPU耗时越短性、内存占用越低能越优秀,反之就比较垃圾.
序号 | 分析对象 | 文档地址 |
---|---|---|
1 | 项目骨架主线逻辑 | 主线分析报告 |
2 | 操作数据库代码段 | 操作数据库代码段分析报告 |
序号 | 分析对象 | 文档地址 |
---|---|---|
1 | 操作数据库代码段 | 操作数据库代码段 |
1.本系统是基于 GinSkeleton(v1.5.10) + Iview(v4.5.0) 开发而成的企业级项目后台骨架.
2.在线演示系统相比本地运行的版本收缩了修改、删除 数据的权限.
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.历史日志
此处可能存在不合适展示的内容,页面不予展示。您可通过相关编辑功能自查并修改。
如您确认内容无涉及 不当用语 / 纯广告导流 / 暴力 / 低俗色情 / 侵权 / 盗版 / 虚假 / 无价值内容或违法国家有关法律法规的内容,可点击提交进行申诉,我们将尽快为您处理。