第一、安装 Golang
MAC版安装go环境:
1、安装命令:
brew install go
2、检查:
输入brew info go或者go env即可查看当前安装的golang版本信息
3、配置go路径环境
主要是GOROOT和GOPATH
GOROOT:就是go的安装环境
GOPATH:作为编译后二进制的存放目的地和import包时的搜索路径。其实说通俗点就是你的go项目工作目录。通常情况下GOPATH包含三个目录:bin、pkg、src。
src目录下主要存放go的源文件
pkg目录存放编译好的库文件,主要是*.a文件;
bin目录主要存放可执行文件
注意:千万不要把GOPATH设置成go的安装路径,可以自己在用户目录下创建一个目录,例如mygo
一般安装好go之后,使用go env查看一下当前环境。此时显示出来的GOROOT就是你使用brew安装go的安装目录,这个路径要记下来。接下来要在bash_profile文件中进行配置。
使用vim ~/.bash_profile
然后在这个文件中进行编辑,下面以我的电脑为例,路径这种要根据不同人的情况而定
GOROOT=/usr/local/Cellar/go/1.10.1/libexec
export GOROOT
export GOPATH=/Users/xxx/mygo
export GOBIN=
G
O
P
A
T
H
/
b
i
n
e
x
p
o
r
t
P
A
T
H
=
GOPATH/bin export PATH=
GOPATH/binexportPATH=PATH:
G
O
B
I
N
:
GOBIN:
GOBIN:GOROOT/bin
GOROOT: go安装目录
GOPATH:go工作目录
GOBIN:go可执行文件目录
PATH:将go可执行文件加入PATH中,使GO命令与我们编写的GO应用可以全局调用
编辑完之后退出保存文件,然后使用
source ~/.bash_profile
使之生效,然后再使用go env查看当前环境,可以发现已经是你配置文件中设置的路径环境了
Linux版安装GO环境:
下载最新版本的 Golang 安装包
gRPC 依赖于 1.6 以上版本,如果对其他版本有诉求可以在 https://golang.org/dl/ 选择下载
$ wget https://dl.google.com/go/go1.11.2.linux-amd64.tar.gz
解压安装包
$ tar zxvf go1.11.2.linux-amd64.tar.gz
配置环境变量
$ mkdir /home/dc2-user/gopath
$ sudo vim /etc/profile.d/go.sh
export GOROOT=/home/dc2-user/go
export GOPATH=/home/dc2-user/gopath
export PATH=$GOROOT/bin:$GOPATH/bin:$PATH
$ source /etc/profile.d/go.sh
检查安装结果
$ go version && go env
出现以下信息则表明安装成功
go version go1.11.2 linux/amd64
GOARCH=“amd64”
GOBIN=“”
GOCACHE=“/home/dc2-user/.cache/go-build”
GOEXE=“”
GOFLAGS=“”
GOHOSTARCH=“amd64”
GOHOSTOS=“linux”
GOOS=“linux”
GOPATH=“/home/dc2-user/gopath”
GOPROXY=“”
GORACE=“”
GOROOT=“/home/dc2-user/go”
GOTMPDIR=“”
GOTOOLDIR=“/home/dc2-user/go/pkg/tool/linux_amd64”
GCCGO=“gccgo”
CC=“gcc”
CXX=“g++”
CGO_ENABLED=“1”
GOMOD=“”
CGO_CFLAGS=“-g -O2”
CGO_CPPFLAGS=“”
CGO_CXXFLAGS=“-g -O2”
CGO_FFLAGS=“-g -O2”
CGO_LDFLAGS=“-g -O2”
PKG_CONFIG=“pkg-config”
GOGCCFLAGS=“-fPIC -m64 -pthread -fmessage-length=0 -fdebug-prefix-map=/tmp/go-build425133327=/tmp/go-build -gno-record-gcc-switches”
先配置环境再下载安装:
export GOPATH=/home/op/mygo
export GOROOT=/home/op/go1.12.5
export GOBIN=$GOPATH/bin
export PATH=$PATH:$GOBIN:$GOROOT/bin:$GOPATH/bin
第二、安装 Protocol Buffers
下载最新版本的 Protobuf 安装包
$ wget https://github.com/protocolbuffers/protobuf/releases/download/v3.6.1/protobuf-all-3.6.1.tar.gz
解压安装包
$ tar zxvf protobuf-all-3.6.1.tar.gz
安装 Protobuf
$ cd protobuf-3.6.1/
$ ./configure && make && sudo make install
安装 Protobuf Golang 插件
$ go get -u -v github.com/golang/protobuf/protoc-gen-go
检查安装结果
$ protoc --version && which protoc-gen-go
libprotoc 3.7.1
/Users/xueqiu/Downloads/mygo/bin/protoc-gen-go
第三、安装 gRPC
方案一:(首选方案)
golang安装gRpc
https://www.jianshu.com/p/dba4c7a6d608
安装官方安装命令:
go get google.golang.org/grpc
是安装不起的,会报错:
package google.golang.org/grpc: unrecognized import path "google.golang.org/grpc"(https fetch: Get https://google.golang.org/grpc?go-get=1: dial tcp 216.239.37.1:443: i/o timeout)
原因是这个代码已经转移到github上面了,但是代码里面的包依赖还是没有修改,还是google.golang.org这种,
所以不能使用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
go get -u github.com/golang/protobuf/{proto,protoc-gen-go}
git clone https://github.com/google/go-genproto.git $GOPATH/src/google.golang.org/genproto
cd $GOPATH/src/
go install google.golang.org/grpc
方案二:(备选方案)
网络环境允许的同学安装 gRPC 非常方便,直接执行以下命令即可安装完成:
$ go get -u -v google.golang.org/grpc
Fetching https://google.golang.org/grpc?go-get=1
https fetch failed: Get https://google.golang.org/grpc?go-get=1: dial tcp 216.239.37.1:443: i/o timeout
package google.golang.org/grpc: unrecognized import path "google.golang.org/grpc" (https fetch: Get https://google.golang.org/grpc?go-get=1: dial tcp 216.239.37.1:443: i/o timeout)
如果出现以上问题,则可以按照下面的方式进行安装:
在 GOPATH 下创建 google.golang.org 目录
$ mkdir -p $GOPATH/src/google.golang.org/
$ cd $GOPATH/src/google.golang.org/
下载 gRPC 最新代码并解压
$ wget https://github.com/grpc/grpc-go/archive/master.tar.gz
$ tar zxvf master.tar.gz
$ mv grpc-go-master/ grpc
安装 gRPC
$ go install google.golang.org/grpc
grpc/internal/transport/controlbuf.go:27:2: cannot find package "golang.org/x/net/http2" in any of:
/home/dc2-user/go/src/golang.org/x/net/http2 (from $GOROOT)
/home/dc2-user/gopath/src/golang.org/x/net/http2 (from $GOPATH)
grpc/internal/transport/controlbuf.go:28:2: cannot find package "golang.org/x/net/http2/hpack" in any of:
/home/dc2-user/go/src/golang.org/x/net/http2/hpack (from $GOROOT)
/home/dc2-user/gopath/src/golang.org/x/net/http2/hpack (from $GOPATH)
grpc/server.go:36:2: cannot find package "golang.org/x/net/trace" in any of:
/home/dc2-user/go/src/golang.org/x/net/trace (from $GOROOT)
/home/dc2-user/gopath/src/golang.org/x/net/trace (from $GOPATH)
grpc/internal/channelz/types_linux.go:26:2: cannot find package "golang.org/x/sys/unix" in any of:
/home/dc2-user/go/src/golang.org/x/sys/unix (from $GOROOT)
/home/dc2-user/gopath/src/golang.org/x/sys/unix (from $GOPATH)
grpc/status/status.go:37:2: cannot find package "google.golang.org/genproto/googleapis/rpc/status" in any of:
/home/dc2-user/go/src/google.golang.org/genproto/googleapis/rpc/status (from $GOROOT)
/home/dc2-user/gopath/src/google.golang.org/genproto/googleapis/rpc/status (from $GOPATH)
如果在安装过程中出现以上错误,表明 gRPC 依赖的库缺失,则需按照错误提示逐步补全安装其依赖库
安装 golang.org/x/*
golang.org/x/ 在 github.com/golang/ 下均有 mirror,利用这个我们可以以 GitHub 为跳板来安装相应依赖。执行以下脚本则可以自动完成 golang.org/x/* 的安装
#!/bin/bash
MODULES="crypto net oauth2 sys text tools"
for module in ${MODULES}
do
wget https://github.com/golang/${module}/archive/master.tar.gz -O ${GOPATH}/src/golang.org/x/${module}.tar.gz
cd ${GOPATH}/src/golang.org/x && tar zxvf ${module}.tar.gz && mv ${module}-master/ ${module}
done
安装 google.golang.org/genproto
google.golang.org/genproto 在GitHub 上的 mirror 地址为:github.com/google/go-genproto
$ wget https://github.com/google/go-genproto/archive/master.tar.gz -O ${GOPATH}/src/google.golang.org/genproto.tar.gz
$ cd ${GOPATH}/src/google.golang.org && tar zxvf genproto.tar.gz && mv go-genproto-master genproto
依赖安装完毕后再次执行 go install google.golang.org/grpc 即可完成 gRPC 的安装,自此环境相关的准备工作完成。
第四、安装 gRPC-gateway
go get -v -u github.com/grpc-ecosystem/grpc-gateway/protoc-gen-grpc-gateway
cd $GOPATH/src/github.com/grpc-ecosystem/grpc-gateway/protoc-gen-grpc-gateway
go build
go install
第五、保证编译生成的二进制文件在 G O P A T H / b i n 目 录 中 , 然 后 把 GOPATH/bin目录中,然后把 GOPATH/bin目录中,然后把GOPATH/bin放入$PATH中。
第六、配置idea环境
如果你在mac上运行,需要配置以下操作:
1、升级mac自带的bash版本
mac自带的bash为3.2版本,而最新的bash是4.9,需要升级了,才能支持关联数组等新特性。
1、brew install bash
2、安装到/usr/local/bin/bash里面。可以通过修改/etc/shells文件,来完成开机使用新版本的bash
3、但是,无法改变/bin/bash的版本,这里仍旧为3.2版本,这给使用脚本带来不便,因为默认都是#!/bin/bash
4、细查后,发现原来mac系统禁止更改系统目录的权限,引入sip机制,需要先关闭,修改,再打开这一系列操作。
5、下面是打开和关闭sip的步骤。
(1)重启OSX系统,然后按住Command+R
(2)出现界面之后,选择Utilities menu中Terminal
(3)在Terminal中输入csrutil disable关闭SIP(csrutil enable打开SIP)
(4)重启reboot OSX
6、关闭sip后,加入软连接,在打开sip
sudo mv /bin/bash /bin/bash.origin sudo ln -s /usr/local/bin/bash /bin/bash
1、配置gsed:
brew install gnu-sed
系统环境变量加入:
alias sed=gsed
2、安装BashSupport插件并配置:
setttings->plugins→下载安装BashSupport
3、修改系统默认shell /bin/bash
chsh -s /bin/bash
第七、运行:有两种方式
方式一:以BashSupport插件方式右键运行shell脚本
方式二:终端方式运行,运行命令:/bin/bash grpcautotestfordic.sh
备注:命令前面一定以 /bin/bash运行。