1.golang语言的安装
为了简化安装过程,使用yum方式进行快速安装
1.1通过命令查看当前yum中golang的版本信息:
yum info golang
1.2 使用yum命令安装golang:
yum install golang
1.3 验证安装成功的信息
go env
1.4 在环境变量中增加golang的GOROOT和GOPATH路径,将GOPATH设置成项目的实际路径
vi /etc/profile
在文件末尾添加如下
# GOROOT
export GOROOT=/usr/lib/golang
# GOPATH
export GOPATH=/root/work/programmer/go/gopath/
# GOPATH bin
export PATH=$PATH:$GOROOT/bin:$GOPATH/bin
配置生效:
source /etc/profile
验证生效后的配置
2.安装grpc
官方安装命令: go get -u google.golang.org/grpc
由于google无法访问,虽然github上有grpc的代码,但是包依赖没有修改,所以不能go get安装,需要手动安装。
git clone https://github.com/grpc/grpc-go.git $GOPATH/src/google.golang.org/grpc
git clone https://github.com/golang/net.git $GOPATH/src/golang.org/x/net
git clone https://github.com/golang/text.git $GOPATH/src/golang.org/x/text
git clone https://github.com/golang/sys.git $GOPATH/src/golang.org/x/sys
git clone https://github.com/google/go-genproto.git $GOPATH/src/google.golang.org/genproto
go get -u github.com/golang/protobuf/protoc-gen-go
go get -u github.com/golang/protobuf/protoc-gen-go timeout解决之道:
首先给源码准备一个正确的地方 :
mkdir -p $GOPATH/src/google.golang.org
cd $GOPATH/src/google.golang.org
克隆源码 https://gitee.com/lengaoxingchen/protobuf/protoc-gen-go
cd $GOPATH/src/
go install google.golang.org/grpc
$GOPATH替换为环境变量的实际路径。
3.编译.proto文件
protoc --go_out=plugins=grpc:. x.proto(以后会用到)
4.初体验grpc
在前面安装好的grpc的包中有需要官方demo,下面以helloworld为例:
$ cd $GOPATH/src/google.golang.org/grpc/examples/helloworld
greeter_client:grpc客户端代码
greeter_server:grpc服务端代码
helloworld:.proto文件所在位置以及protoc生成的文件的路径
syntax = "proto3";//声明proto的版本 只能 是3,才支持 grpc //声明 包名 package pro; //声明grpc服务 service Greeter { /* 声名一个 sayhello 接口 它的参数 是 HelloRequest 它的返回参数是 HelloReply */ rpc SayHello (HelloRequest) returns (HelloReply) {} } //参数结构 message HelloRequest { string name = 1; } //参数结构 message HelloReply { string message = 1; } //protoc --go_out=plugins=grpc:. helloworld.proto
运行服务端:
[root@iZ2zegaforshlunfo6xw8qZ helloworld]# go run server greeter_server/main.go
2020/06/23 16:37:04 Received: world
运行客户端
[root@iZ2zegaforshlunfo6xw8qZ helloworld]# go run greeter_client/main.go
2020/06/23 16:37:04 Greeting: Hello world
上面在运行的时候会报(timeout):
[root@iZ2zegaforshlunfo6xw8qZ helloworld]# go run greeter_client/main.go
go: golang.org/x/oauth2@v0.0.0-20180821212333-d2e6202438be: unrecognized import path "golang.org/x/oauth2" (https fetch: Get https://golang.org/x/oauth2?go-get=1: dial tcp 216.239.37.1:443: i/o timeout)
解决之道:
https://goproxy.io 是一个goproxy.io这个开源项目提供的公开代理服务 ,下面是官网给的参考意见
如果您使用的 Go 版本是 1.13 及以上 (推荐)
go env -w GO111MODULE=on
go env -w GOPROXY=https://goproxy.io,direct
# 设置不走 proxy 的私有仓库,多个用逗号相隔(可选)
go env -w GOPRIVATE=*.corp.example.com
# 设置不走 proxy 的私有组织(可选) go env -w GOPRIVATE=example.com/org_name
设置完上面几个环境变量后,您的 go 命令将从公共代理镜像中快速拉取您所需的依赖代码了。
如果您使用的 Go 版本是 1.12 及以下Bash (Linux or macOS)
# 启用 Go Modules 功能
export GO111MODULE=on
# 配置 GOPROXY 环境变量
export GOPROXY=https://goproxy.io
有疑问加站长微信联系(非本文作者)