歡迎訪問我的GitHub
這裡分類和彙總了欣宸的全部原創(含配套原始碼):https://github.com/zq2599/blog_demos
gRPC學習系列文章連結
本篇概覽
- 本文《gRPC學習》系列的第二篇,前文在CentOS7環境裝好了GO,接下來要把gRPC開發環境準備好,總的來說一共三步:
安裝protoc
- protoc是編譯工具,安裝方式是下載二進位制檔案,直接複製貼上以下命令執行即可:
mkdir -p $GOPATH/bin \
&& mkdir ~/temp-protoc-download \
&& wget https://github.com/protocolbuffers/protobuf/releases/download/v3.14.0/protoc-3.14.0-linux-x86_64.zip -O ~/temp-protoc-download/protoc.zip \
&& cd ~/temp-protoc-download \
&& unzip protoc.zip \
&& cp ./bin/protoc $GOPATH/bin/ \
&& cd ~/ \
&& rm -rf ~/temp-protoc-download
- 執行protoc --version檢查protoc安裝是否成功:
[golang@centos7 ~]$ protoc --version
libprotoc 3.14.0
安裝protoc-gen-go和grpc包遇到的問題
- 實際證明,用go get命令安裝protoc-gen-go和grpc包的時候經常提示網路錯誤,於是我寫了個shell指令碼,將protoc-gen-go和grpc包的原始碼從GitHub下載下來,在本地編譯構建,達到go get安裝相同的效果;
- 使用git clone命令下載原始碼比較耗時(檔案數量太多),因此我寫的指令碼是下載對應的原始碼包(zip檔案),再解壓,和git clone效果相同但是耗時減少很多;
- 因此,接下來的操作是一個指令碼完成protoc-gen-go和grpc包的安裝;
安裝protoc-gen-go和grpc包
- 執行以下命令即可完成protoc-gen-go和grpc包的安裝:
curl -o install-grpc.sh \
https://raw.githubusercontent.com/zq2599/blog_demos/master/files/install-grpc.sh \
&& chmod a+x ./install-grpc.sh \
&& ./install-grpc.sh
- 控制檯輸出以下資訊,無錯誤,表示安裝成功:
...
install protoc-gen-go
go: downloading google.golang.org/protobuf v1.23.0
install grpc
clear resource
install finish
- 在$GOPATH/bin目錄可見protoc-gen-go:
[golang@centos7 ~]$ cd $GOPATH/bin
[golang@centos7 bin]$ ls
protoc protoc-gen-go
-
- 至此,gRPC開發環境已經準備完畢,下一篇可以開始實戰了;
安裝指令碼一覽
protoc-gen-go和grpc包的安裝過程都在install-grpc.sh中完成,該指令碼內容如下所示,可見都是些很簡單的操作:下載原始碼、解壓、構建
#!/bin/bash
mkdir ~/temp-grpc-install
echo "clear old files"
rm -rf $GOPATH/src/google.golang.org/grpc
rm -rf $GOPATH/src/golang.org/x
rm -rf $GOPATH/src/google.golang.org/protobuf
rm -rf $GOPATH/src/github.com/golang/protobuf
rm -rf $GOPATH/src/google.golang.org/genproto
echo "create directory"
mkdir -p $GOPATH/src/google.golang.org/
mkdir -p $GOPATH/src/golang.org/x
mkdir -p $GOPATH/src/github.com/golang/
echo "1. grpc"
cd ~/temp-grpc-install
wget https://github.com/grpc/grpc-go/archive/master.zip -O grpc-go.zip
unzip grpc-go.zip -d $GOPATH/src/google.golang.org/
cd $GOPATH/src/google.golang.org/
mv grpc-go-master grpc
echo "2. x/net"
cd ~/temp-grpc-install
wget https://github.com/golang/net/archive/master.zip -O net.zip
unzip net.zip -d $GOPATH/src/golang.org/x/
cd $GOPATH/src/golang.org/x/
mv net-master net
echo "3. x/text"
cd ~/temp-grpc-install
wget https://github.com/golang/text/archive/master.zip -O text.zip
unzip text.zip -d $GOPATH/src/golang.org/x/
cd $GOPATH/src/golang.org/x/
mv text-master text
echo "4. protobuf-go"
cd ~/temp-grpc-install
wget https://github.com/protocolbuffers/protobuf-go/archive/master.zip -O protobuf-go.zip
unzip protobuf-go.zip -d $GOPATH/src/google.golang.org/
cd $GOPATH/src/google.golang.org/
mv protobuf-go-master protobuf
echo "5. protobuf"
cd ~/temp-grpc-install
wget https://github.com/golang/protobuf/archive/master.zip -O protobuf.zip
unzip protobuf.zip -d $GOPATH/src/github.com/golang/
cd $GOPATH/src/github.com/golang/
mv protobuf-master protobuf
echo "6. go-genproto"
cd ~/temp-grpc-install
wget https://github.com/google/go-genproto/archive/master.zip -O go-genproto.zip
unzip go-genproto.zip -d $GOPATH/src/google.golang.org/
cd $GOPATH/src/google.golang.org/
mv go-genproto-master genproto
echo "7. x/sys"
cd ~/temp-grpc-install
wget https://github.com/golang/sys/archive/master.zip -O sys.zip
unzip sys.zip -d $GOPATH/src/golang.org/x/
cd $GOPATH/src/golang.org/x
mv sys-master sys
echo "install protoc-gen-go"
cd $GOPATH/src/github.com/golang/protobuf/protoc-gen-go/
go build
go install
echo "install grpc"
cd $GOPATH/src/
go install google.golang.org/grpc
echo "clear resource"
cd ~/
rm -rf ~/temp-grpc-install
echo "install finish"
你不孤單,欣宸原創一路相伴
歡迎關注公眾號:程式設計師欣宸
微信搜尋「程式設計師欣宸」,我是欣宸,期待與您一同暢遊Java世界...
https://github.com/zq2599/blog_demos