基於gin架構快速開發應用(實戰類型項目)
來源:互聯網
上載者:User
### 技術選型架構: ginTlog: zaporm: gorm優雅重啟HTTP服務: gracehttp測試架構: ginkgo### 介面風格 RESTFUL### 項目結構* api - handler函數* route - 路由註冊* model - 資料模型以及資料庫操作* doc - 介面文檔* log - Tlog* config - 設定檔* tools - 公用工具類* vendor - 項目依賴其他開源項目目錄* dist - 打包產生安裝包的存放路徑* main.go - 程式執行入口* Makefile 提供編譯、打包、測試等功能的指令檔* ginkgo 二進位檔案,容器內執行測試案例的時候需要使用的命令,請勿移除* junit.xml 測試報告* coverprofile.txt 通過的測試的覆蓋率的概要### 語法檢查 make govet### 檢查是否符合官方統一標準的風格 make gofmt### 編譯 make build### 打包 make package### 測試#### 先建立一個新的Docker網路 docker network create -d bridge my-net#### 執行測試案例建立mysql容器執行個體會佔用3306,確保該連接埠未被其他應用使用 make test最後產生的測試報告junit.xml和覆蓋率coverprofile.txt檔案在對應package的目錄下make test包括下面三個步驟* 移除容器,排除曆史測試資料幹擾 make clean-docker* 啟動docker,建立一個mysql容器執行個體 make start-docker* 開始執行測試案例 make test-server### 測試案例覆蓋率可視化 go tool cover -html=coverprofile.txt -o coverprofile.html 可以很清楚地看到測試案例覆蓋的代碼和未曾覆蓋到的代碼### 管理依賴包工具(Vendor Tool)govendor是依賴管理利器 ##### install govendorgo get -u github.com/kardianos/govendor##### command通過指定包類型,可以過濾僅對指定包進行操作。| 命令| 功能 ||-------| --------|| govendor init |初始化 vendor 目錄 || govendor list |列出所有的依賴包 || govendor add |添加包到 vendor 目錄,如 govendor add +external 添加所有外部包 || govendor add PKG_PATH |添加指定的依賴包到 vendor 目錄|| govendor update |從 $GOPATH 更新依賴包到 vendor 目錄|| govendor remove |從 vendor 管理中刪除依賴 || govendor status |列出所有缺失、到期和修改過的包 || govendor fetch |添加或更新包到本地 vendor 目錄 || govendor sync | 本地存在 vendor.json 時候拉去依賴包,匹配所記錄的版本 || govendor get |類似 go get 目錄,拉取依賴包到 vendor 目錄 |### Create Database* 以root使用者登入MySQL mysql -u root -p* 建立luckgo使用者'luckgo' mysql> create user 'luckgo'@'%' identified by 'luckgo-password'; 其中%表示網上的所有機器都可以串連上,使用具體的IP地址更安全點 mysql> create user 'luckgo'@'0.0.0.0' identified by 'luckgo-password';* 建立critic資料庫 mysql> create database luckgo;* 允許luckgo使用者的存取權限 mysql> grant all privileges on luckgo.* to 'luckgo'@'%';* 退出MySQL mysql> exit ### 平滑升級 kill -USR2 PID### 應用日誌切割使用Linux系統預設安裝的logrotate工具,在目錄/etc/logrotate.d/下增加設定檔luckgo.conf /path/to/log1 /path/to/log2 { compress dateext maxage 365 rotate 60 size = 10M notifempty missingok create 644 copytruncate }[項目地址](https://github.com/KenmyZhang/luckgo)221 次點擊