issue仅用于提交Bug或Feature以及设计相关的内容,其它内容可能会被直接关闭。如果你在使用时产生了疑问,请到Slack或 Gitter 里咨询。
在提交issue之前,请搜索相关内容是否已被提出。
1.2.2PullRequest规范请先fork一份到自己的项目下,不要直接在仓库下建分支。
commit信息要以[文件名]:描述信息 的形式填写,例如 README.md:fixxxxbug。
确保PR是提交到 develop 分支,而不是 master 分支。
如果是修复bug,请在PR中给出描述信息。
合并代码需要两名维护人员参与:一人进行review后approve,另一人再次review,通过后即可合并。
1.3版本列表master:2.0,用于生产环境develop:2.0,用于测试环境gin-vue-admin_v2_dev (v2.0 GormV1版本稳定分支)gva_gormv2_dev (v2.0 GormV2版本开发分支)2.使用说明-node版本>v8.6.0-golang版本>=v1.14-IDE推荐:Goland-gormv2版本初始化数据库可以利用批量创建功能,这里已经写好初始化代码,需要在main.go内打开initialize.Data()的注释即可-替换掉项目中的七牛云公钥,私钥,仓名和默认url地址,以免发生测试文件数据错乱使用docker-compose体验本项目
安装docker-compose 官方文档
#在Linux安装#1.1运行此命令以下载DockerCompose的当前稳定版本sudocurl-L"https://github.com/docker/compose/releases/download/1.26.2/docker-compose-$(uname-s)-$(uname-m)"-o/usr/local/bin/docker-compose#1.2将可执行权限应用于二进制文件sudochmod+x/usr/local/bin/docker-compose#使用Python的pip安装pip3installdocker-compose-ihttps://pypi.tuna.tsinghua.edu.cn/simple使用DockerDesktopWindows: https://hub.docker.com/editions/community/docker-ce-desktop-windowsMac: https://hub.docker.com/editions/community/docker-ce-desktop-mac/使用git克隆本项目
gitclonehttps://github.com/flipped-aurora/gin-vue-admin.git使用docker-composeup一键启动启动项目
#使用docker-compose启动四个容器docker-composeup#如果您修改了某些配置选项,可以使用此命令重新打包镜像docker-composeup--build#使用docker-compose后台启动docker-composeup-dweb项目预览 https://127.0.0.1:8000
swagger文档 https://127.0.0.1:8888/swagger/index.html
如果server的177.7.0.12这个容器内部ip被占用了,需要修改地方为
docker-compose.yaml的第39行的177.7.0.12更换为你想要的ip.docker-compose/nginx/conf.d/my.conf的第20行的177.7.0.12更换为你想要的ipdocker-compose使用自定义的一个docker网络
networks:network:ipam:driver:defaultconfig:-subnet:'177.7.0.0/16'子网地址,默认网关是177.7.0.1(docker-composeV2需要写,V3则不需要),具体信息看官方文档
默认的network名为gin-vue-admin_network,默认是bridge模式
如果修改了子网,对应的每个service的ipv4_address都需要修改,还有.docker-compose/nginx/conf.d/my.conf的第20行的server的ip也需要修改
使用docker-compose进行部署本项目需注意的问题
mysql数据库请使用装在服务器磁盘的本地数据库.避免使用docker容器内的mysql,可能会出现写入的问题,io比宿主机低docker的持久化机制问题init.sql是给docker-compose进行体验本项目的,禁止init.sql使用进行项目数据的初始化,数据库初始化请使用此方法使用init.sql进行初始化出现的所有问题,请自行承担,与本项目无关使用本项目的docker-compose进行部署时,请修改docker-compose.yaml对应的nginx配置,mysql配置,networks配置,redis配置,按需自行更改.2.1web端#clonetheprojectgitclonehttps://github.com/piexlmax/gin-vue-admin.git#entertheprojectdirectorycdweb#installdependencynpminstall#developnpmrunserve2.2server端#使用go.mod#安装go依赖包golist(gomodtidy)#编译gobuildZap日志库使用指南&&配置指南
Zap日志库的配置选择在config.yaml下的zap#zaploggerconfigurationzap:level:'debug'format:'console'prefix:'[GIN-VUE-ADMIN]'director:'log'link_name:'latest_log'show_line:trueencode_level:'LowercaseColorLevelEncoder'stacktrace_key:'stacktrace'log_in_console:true配置名配置的类型说明levelstringlevel的模式的详细说明,请看zap官方文档info:info模式,无错误的堆栈信息,只输出信息debug:debug模式,有错误的堆栈详细信息warn:warn模式error:error模式,有错误的堆栈详细信息dpanic:dpanic模式panic:panic模式fatal:fatal模式formatstringconsole:控制台形式输出日志json:json格式输出日志prefixstring日志的前缀directorstring存放日志的文件夹,修改即可,不需要手动创建link_namestring在server目录下会生成一个link_name的软连接文件,链接的是director配置项的最新日志文件show_linebool显示行号,默认为true,不建议修改encode_levelstringLowercaseLevelEncoder:小写LowercaseColorLevelEncoder:小写带颜色CapitalLevelEncoder:大写CapitalColorLevelEncoder:大写带颜色stacktrace_keystring堆栈的名称,即在json格式输出日志时的josn的keylog_in_consolebool是否输出到控制台,默认为true开发环境||调试环境配置建议level:debugformat:consoleencode_level:LowercaseColorLevelEncoder或者encode_leve:CapitalColorLevelEncoder部署环境配置建议level:errorformat:jsonencode_level:LowercaseLevelEncoder 或者 encode_level:CapitalLevelEncoderlog_in_console:false建议只是建议,按照自己的需求进行即可,给出建议仅供参考2.3swagger自动化API文档2.3.1安装swagger(1)可以翻墙
goget-ugithub.com/swaggo/swag/cmd/swag(2)无法翻墙
由于国内没法安装go.org/x包下面的东西,推荐使用 goproxy.io如果您使用的Go版本是1.13及以上(推荐)#启用GoModules功能goenv-wGO111MODULE=on#配置GOPROXY环境变量goenv-wGOPROXY=https://goproxy.io,direct#使用如下命令下载swaggoget-ugithub.com/swaggo/swag/cmd/swag2.3.2生成API文档cdserverswaginit执行上面的命令后,server目录下会出现docs文件夹,登录https://localhost:8888/swagger/index.html,即可查看swagger文档3.技术选型前端:用基于vue的Element-UI构建基础页面。后端:用Gin快速搭建基础restful风格API,Gin是一个go语言编写的Web框架。数据库:采用MySql(5.6.44)版本,使用gorm实现对数据库的基本操作,已添加对sqlite数据库的支持。缓存:使用Redis实现记录当前活跃用户的jwt令牌并实现多点登录限制。API文档:使用Swagger构建自动化文档。配置文件:使用fsnotify和viper实现yaml格式的配置文件。日志:使用go-logging实现日志记录。4.项目架构4.1系统架构图4.2前端详细设计图(提供者:baobeisuper)4.3目录结构├─server(后端文件夹)│├─api(API)│├─config(配置包)│├─core(內核)│├─docs(swagger文档目录)│├─global(全局对象)│├─initialiaze(初始化)│├─middleware(中间件)│├─model(结构体层)│├─resource(资源)│├─router(路由)│├─service(服务)│└─utils(公共功能)└─web(前端文件)├─public(发布模板)└─src(源码包)├─api(向后台发送ajax的封装层)├─assets(静态文件)├─components(组件)├─router(前端路由)├─store(vuex状态管理仓)├─style(通用样式文件)├─utils(前端工具库)└─view(前端页面)5.主要功能权限管理:基于jwt和casbin实现的权限管理文件上传下载:实现基于七牛云的文件上传操作(为了方便大家测试,我公开了自己的七牛测试号的各种重要token,恳请大家不要乱传东西)分页封装:前端使用mixins封装分页,分页方法调用mixins即可用户管理:系统管理员分配用户角色和角色权限。角色管理:创建权限控制的主要对象,可以给角色分配不同api权限和菜单权限。菜单管理:实现用户动态菜单配置,实现不同角色不同菜单。api管理:不同用户可调用的api接口的权限不同。配置管理:配置文件可前台修改(测试环境不开放此功能)。富文本编辑器:MarkDown编辑器功能嵌入。条件搜索:增加条件搜索示例。restful示例:可以参考用户管理模块中的示例API。前端文件参考:src\view\superAdmin\api\api.vue后台文件参考:model\dnModel\api.go多点登录限制:需要在config.yaml中把system中的useMultipoint修改为true(需要自行配置Redis和Config中的Redis参数,测试阶段,有bug请及时反馈)。分片长传:提供文件分片上传和大文件分片上传功能示例。表单生成器:表单生成器借助 @form-generator。代码生成器:后台基础逻辑以及简单curd的代码生成器。
评论