gRPC学习之二:GO的gRPC开发环境准备
gRPC学习之二:GO的gRPC开发环境准备
欢迎访问我的GitHub
这里分类和汇总了欣宸的全部原创(含配套源码):https://github.com/zq2599/blog_demos
gRPC学习系列文章链接
在CentOS7部署和设置GO
GO的gRPC开发环境准备
初试GO版gRPC开发
实战四类服务方法
gRPC-Gateway实战
gRPC-Gateway集成swagger
本篇概览
本文《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/bashmkdir ~/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"