真香系列之 Golang 升級
- 2019 年 11 月 28 日
- 筆記
Golang 以前的依賴管理一直飽受詬病,社區的方案也層出不窮,比如 vendor, glide, godep 等。之前的依賴管理一直是依靠 GOPATH 或者將依賴代碼下載到本地,這種方式都有劣勢。另外由於特殊的網絡環境,導致谷歌的大部分包都沒有辦法下載。從 Golang 1.11 開始,官方已內置了更為強大的 Go modules 來一統多年來 Go 包依賴管理混亂的局面,從 1.13 開始將成為默認配置。配合 Goproxy 來使用來說,真香。這次配合我之前的 Golang 開源項目 GShark 升級到 1.13,升級花費的時間不超過 5 分鐘,體驗優秀。
升級 Golang 版本
其實升級 Golang 版本是非常簡單的,只要移除之前的 Golang,然後複製新版本的 Golang 就可以了。以我之前的 VPS 為例(CentOS,親測蘋果系統可以使用同樣的方式升級),之前安裝的 Golang 版本是 1.9。
1.移除舊版本 Golang
rm -rf /usr/local/go
2.安裝新版本 Golang
wget https://dl.google.com/go/go1.13.linux-amd64.tar.gztar -C /usr/local -xzf go1.13.linux-amd64.tar.gz
3.配置 Golang 環境
如果你之前配置過 Golang 的環境,那麼你可以找直接升級。主要只是需要配置 GOROOT 以及 GOPATH 即可,對於 1.13 其實這兩個變量已經不是必要的了。不過我發現我在安裝的依賴的時候,出現報錯信息,通過配置 GOROOT 為 /usr/loca/go
即可解決。但有一個配置很重要,就是將 goproxy 設置為國內的代理(這裡使用的是七牛雲的代理),這樣你就能體驗飛一般的暢快。
export GOPROXY=https://goproxy.cn,direct
原有代碼升級
之前 gshark 沒有使用任何的依賴管理,完全是通過 GOPATH 存放依賴。這有一個問題,就是項目的依賴做出了不兼容的版本升級,最終導致項目構建失敗。通過 Go modules 可以鎖定依賴版本,從而避免這個問題。以 gshark(https://github.com/neal1991/gshark) 為例進行 Go modules 的升級。
1.mod 初始化
cd 到項目文件夾中
go mod init github.com/neal1991/gshark
2.查找依賴
go get ./...
只需要兩部就可以升級使用 Go modules 就可以了。
GShark
GShark 是我之前開源的一款 Github 敏感信息監測的系統,之前也有寫過文章介紹這個項目。這個工具應該目前有一些同學在使用,可能使用過程中最大的問題就是項目的構建。因為可能有的同學之前不是特別熟悉 Golang 語言,覺得部署起來很麻煩。但其實 Golang 項目的構建特別方便,之前不方便主要還是由於項目的依賴比較難下。可是如果 Golang 升級到 1.13 之後,項目構建僅僅需要幾步。
1.下載代碼
git clone https://github.com/neal1991/gshark
2.下載依賴
go get ./...
3.編譯
go build main.go
4.運行
運行之前需要把 conf 文件夾裏面的 app-template.ini 重命名為 app.ini,使用自己的配置即可。
// 啟動 web 服務./main web // 啟動爬蟲./main scan
通過上面幾步就可以啟動 GShark 服務了。
總結
雖然說 gorpoxy 以及 modules 都不是 1.13 版本才有的。但是目前這些特性在 1.13 版本已經穩定運行。總的來說,升級到 Go 1.13,真香。