GIN-VUE-ADMIN后臺管理系統(tǒng)
項(xiàng)目文檔
在線文檔 : https://www.gin-vue-admin.com/
開發(fā)教學(xué) (貢獻(xiàn)者: LLemonGreen And Fann)
- 前端UI框架:element-ui
- 后臺框架:gin
1. 基本介紹
1.1 項(xiàng)目介紹
測試用戶名:admin
測試密碼:123456
1.2 貢獻(xiàn)指南
Hi! 首先感謝你使用 gin-vue-admin。
Gin-vue-admin 是一套為后臺管理平臺準(zhǔn)備的一整套前后端分離架構(gòu)式的開源框架,旨在快速搭建后臺管理系統(tǒng)。
Gin-vue-admin 的成長離不開大家的支持,如果你愿意為 gin-vue-admin 貢獻(xiàn)代碼或提供建議,請閱讀以下內(nèi)容。
1.2.1 Issue 規(guī)范
-
issue 僅用于提交 Bug 或 Feature 以及設(shè)計(jì)相關(guān)的內(nèi)容,其它內(nèi)容可能會被直接關(guān)閉。如果你在使用時(shí)產(chǎn)生了疑問,請到 Slack 或 Gitter 里咨詢。
-
在提交 issue 之前,請搜索相關(guān)內(nèi)容是否已被提出。
1.2.2 Pull Request 規(guī)范
-
請先 fork 一份到自己的項(xiàng)目下,不要直接在倉庫下建分支。
-
commit 信息要以
[文件名]: 描述信息的形式填寫,例如README.md: fix xxx bug。 -
確保 PR 是提交到
develop分支,而不是master分支。 -
如果是修復(fù) bug,請?jiān)?PR 中給出描述信息。
-
合并代碼需要兩名維護(hù)人員參與:一人進(jìn)行 review 后 approve,另一人再次 review,通過后即可合并。
1.3 版本列表
- master: 2.0, 用于生產(chǎn)環(huán)境
- develop: 2.0, 用于測試環(huán)境
- gin-vue-admin_v2_dev (v2.0 GormV1版本穩(wěn)定分支)
- gva_gormv2_dev (v2.0 GormV2版本開發(fā)分支)
2. 使用說明
- node版本 > v8.6.0 - golang版本 >= v1.14 - IDE推薦:Goland - gormv2版本初始化數(shù)據(jù)庫可以利用批量創(chuàng)建功能,這里已經(jīng)寫好初始化代碼,需要在main.go內(nèi)打開 initialize.Data() 的注釋即可 - 替換掉項(xiàng)目中的七牛云公鑰,私鑰,倉名和默認(rèn)url地址,以免發(fā)生測試文件數(shù)據(jù)錯(cuò)亂
使用docker-compose體驗(yàn)本項(xiàng)目
-
安裝 docker-compose 官方文檔
-
# 在Linux安裝 # 1.1 運(yùn)行此命令以下載Docker Compose的當(dāng)前穩(wěn)定版本 sudo curl -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 將可執(zhí)行權(quán)限應(yīng)用于二進(jìn)制文件 sudo chmod +x /usr/local/bin/docker-compose
-
# 使用Python的pip安裝 pip3 install docker-compose -i https://pypi.tuna.tsinghua.edu.cn/simple
- 使用 Docker Desktop
-
-
使用git克隆本項(xiàng)目
-
git clone https://github.com/flipped-aurora/gin-vue-admin.git
-
-
使用docker-compose up一鍵啟動啟動項(xiàng)目
-
# 使用docker-compose啟動四個(gè)容器 docker-compose up # 如果您修改了某些配置選項(xiàng),可以使用此命令重新打包鏡像 docker-compose up --build # 使用docker-compose 后臺啟動 docker-compose up -d
-
web項(xiàng)目預(yù)覽 http://127.0.0.1:8000
-
swagger文檔 http://127.0.0.1:8888/swagger/index.html
-
-
如果server的177.7.0.12這個(gè)容器內(nèi)部ip被占用了,需要修改地方為
- docker-compose.yaml的第39行的177.7.0.12更換為你想要的ip
- .docker-compose/nginx/conf.d/my.conf的第20行的177.7.0.12更換為你想要的ip
-
docker-compose使用自定義的一個(gè)docker網(wǎng)絡(luò)
-
networks: network: ipam: driver: default config: - subnet: '177.7.0.0/16' -
子網(wǎng)地址, 默認(rèn)網(wǎng)關(guān)是177.7.0.1(docker-compose V2需要寫,V3則不需要),具體信息看官方文檔
-
默認(rèn)的network名為gin-vue-admin_network,默認(rèn)是bridge模式
-
如果修改了子網(wǎng),對應(yīng)的每個(gè)service的ipv4_address都需要修改,還有.docker-compose/nginx/conf.d/my.conf的第20行的server的ip也需要修改
-
使用docker-compose進(jìn)行部署本項(xiàng)目需注意的問題
- mysql數(shù)據(jù)庫請使用裝在服務(wù)器磁盤的本地?cái)?shù)據(jù)庫.
- 避免使用docker容器內(nèi)的mysql,可能會出現(xiàn)寫入的問題, io比宿主機(jī)低 docker的持久化機(jī)制問題
- init.sql是給docker-compose進(jìn)行體驗(yàn)本項(xiàng)目的, 禁止init.sql使用進(jìn)行項(xiàng)目數(shù)據(jù)的初始化, 數(shù)據(jù)庫初始化請使用此方法
- 使用init.sql進(jìn)行初始化出現(xiàn)的所有問題,請自行承擔(dān),與本項(xiàng)目無關(guān)
- 使用本項(xiàng)目的docker-compose進(jìn)行部署時(shí),請修改docker-compose.yaml對應(yīng)的nginx配置,mysql配置,networks配置,redis配置,按需自行更改.
2.1 web端
# clone the project git clone https://github.com/piexlmax/gin-vue-admin.git # enter the project directory cd web # install dependency npm install # develop npm run serve
2.2 server端
# 使用 go.mod # 安裝go依賴包 go list (go mod tidy) # 編譯 go build
Zap日志庫使用指南&&配置指南
Zap日志庫的配置選擇在config.yaml下的zap
# zap logger configuration zap: level: 'debug' format: 'console' prefix: '[GIN-VUE-ADMIN]' director: 'log' link_name: 'latest_log' show_line: true encode_level: 'LowercaseColorLevelEncoder' stacktrace_key: 'stacktrace' log_in_console: true
| 配置名 | 配置的類型 | 說明 |
|---|---|---|
| level | string | level的模式的詳細(xì)說明,請看zap官方文檔 info: info模式,無錯(cuò)誤的堆棧信息,只輸出信息 debug:debug模式,有錯(cuò)誤的堆棧詳細(xì)信息 warn:warn模式 error: error模式,有錯(cuò)誤的堆棧詳細(xì)信息 dpanic: dpanic模式 panic: panic模式 fatal: fatal模式 |
| format | string | console: 控制臺形式輸出日志 json: json格式輸出日志 |
| prefix | string | 日志的前綴 |
| director | string | 存放日志的文件夾,修改即可,不需要手動創(chuàng)建 |
| link_name | string | 在server目錄下會生成一個(gè)link_name的軟連接文件,鏈接的是director配置項(xiàng)的最新日志文件 |
| show_line | bool | 顯示行號, 默認(rèn)為true,不建議修改 |
| encode_level | string | LowercaseLevelEncoder:小寫 LowercaseColorLevelEncoder:小寫帶顏色 CapitalLevelEncoder: 大寫 CapitalColorLevelEncoder: 大寫帶顏色 |
| stacktrace_key | string | 堆棧的名稱,即在json格式輸出日志時(shí)的josn的key |
| log_in_console | bool | 是否輸出到控制臺,默認(rèn)為true |
- 開發(fā)環(huán)境 || 調(diào)試環(huán)境配置建議
level:debugformat:console-
encode_level:LowercaseColorLevelEncoder或者encode_leve:CapitalColorLevelEncoder
- 部署環(huán)境配置建議
level:errorformat:json-
encode_level: LowercaseLevelEncoder或者encode_level:CapitalLevelEncoder log_in_console: false
- 建議只是建議,按照自己的需求進(jìn)行即可,給出建議僅供參考
2.3 swagger自動化API文檔
2.3.1 安裝 swagger
(1)可以翻墻
go get -u github.com/swaggo/swag/cmd/swag
(2)無法翻墻
由于國內(nèi)沒法安裝 go.org/x 包下面的東西,推薦使用 goproxy.io
如果您使用的 Go 版本是 1.13 及以上(推薦) # 啟用 Go Modules 功能 go env -w GO111MODULE=on # 配置 GOPROXY 環(huán)境變量 go env -w GOPROXY=https://goproxy.io,direct # 使用如下命令下載swag go get -u github.com/swaggo/swag/cmd/swag
2.3.2 生成API文檔
cd server swag init
執(zhí)行上面的命令后,server目錄下會出現(xiàn)docs文件夾,登錄http://localhost:8888/swagger/index.html,即可查看swagger文檔
3. 技術(shù)選型
- 前端:用基于
vue的Element-UI構(gòu)建基礎(chǔ)頁面。 - 后端:用
Gin快速搭建基礎(chǔ)restful風(fēng)格API,Gin是一個(gè)go語言編寫的Web框架。 - 數(shù)據(jù)庫:采用
MySql(5.6.44)版本,使用gorm實(shí)現(xiàn)對數(shù)據(jù)庫的基本操作,已添加對sqlite數(shù)據(jù)庫的支持。 - 緩存:使用
Redis實(shí)現(xiàn)記錄當(dāng)前活躍用戶的jwt令牌并實(shí)現(xiàn)多點(diǎn)登錄限制。 - API文檔:使用
Swagger構(gòu)建自動化文檔。 - 配置文件:使用
fsnotify和viper實(shí)現(xiàn)yaml格式的配置文件。 - 日志:使用
go-logging實(shí)現(xiàn)日志記錄。
4. 項(xiàng)目架構(gòu)
4.1 系統(tǒng)架構(gòu)圖
4.2 前端詳細(xì)設(shè)計(jì)圖 (提供者:baobeisuper)
4.3 目錄結(jié)構(gòu)
├─server (后端文件夾)
│ ├─api (API)
│ ├─config (配置包)
│ ├─core (內(nèi)核)
│ ├─docs (swagger文檔目錄)
│ ├─global (全局對象)
│ ├─initialiaze (初始化)
│ ├─middleware (中間件)
│ ├─model (結(jié)構(gòu)體層)
│ ├─resource (資源)
│ ├─router (路由)
│ ├─service (服務(wù))
│ └─utils (公共功能)
└─web (前端文件)
├─public (發(fā)布模板)
└─src (源碼包)
├─api (向后臺發(fā)送ajax的封裝層)
├─assets (靜態(tài)文件)
├─components(組件)
├─router (前端路由)
├─store (vuex 狀態(tài)管理倉)
├─style (通用樣式文件)
├─utils (前端工具庫)
└─view (前端頁面)
5. 主要功能
- 權(quán)限管理:基于
jwt和casbin實(shí)現(xiàn)的權(quán)限管理 - 文件上傳下載:實(shí)現(xiàn)基于七牛云的文件上傳操作(為了方便大家測試,我公開了自己的七牛測試號的各種重要token,懇請大家不要亂傳東西)
- 分頁封裝:前端使用mixins封裝分頁,分頁方法調(diào)用mixins即可
- 用戶管理:系統(tǒng)管理員分配用戶角色和角色權(quán)限。
- 角色管理:創(chuàng)建權(quán)限控制的主要對象,可以給角色分配不同api權(quán)限和菜單權(quán)限。
- 菜單管理:實(shí)現(xiàn)用戶動態(tài)菜單配置,實(shí)現(xiàn)不同角色不同菜單。
- api管理:不同用戶可調(diào)用的api接口的權(quán)限不同。
- 配置管理:配置文件可前臺修改(測試環(huán)境不開放此功能)。
- 富文本編輯器:MarkDown編輯器功能嵌入。
- 條件搜索:增加條件搜索示例。
- restful示例:可以參考用戶管理模塊中的示例API。
前端文件參考: src\view\superAdmin\api\api.vue 后臺文件參考: model\dnModel\api.go
- 多點(diǎn)登錄限制:需要在
config.yaml中把system中的useMultipoint修改為true(需要自行配置Redis和Config中的Redis參數(shù),測試階段,有bug請及時(shí)反饋)。 - 分片長傳:提供文件分片上傳和大文件分片上傳功能示例。
- 表單生成器:表單生成器借助 @form-generator。
- 代碼生成器:后臺基礎(chǔ)邏輯以及簡單curd的代碼生成器。
