Mac下Fabric环境搭建

Go环境搭建

下载GoLang的安装包:https://dl.google.com/go/go1.10.2.darwin-amd64.pkg
下载完后点击安装,程序包默认会安装在 /usr/local/go 目录下

配置环境变量:

1
vi ~/.bash_profile

在配置文件中新增以下环境变量:

1
2
3
4
5
6
7
export GOPATH=/Users/daizhiqing/workspace_go
export GOBIN=$GOPATH/bin
export PATH=$PATH:$GOBIN
```
其中GOPATH为你任意指定的Go工作空间,随便目录可以是自己的任何一个准备编译Fabric的目录,workspace_go文件夹需要自己创建,名字也而已自定义,后续源码级第三方依赖都将在这个工作目录下展开操作。
``` bash
go version

验证是否安装成功

初始化工作空间:

在GOPATH目录下新建以下子文件夹

  • src 包含 Go 源代码文件, 源代码文件组织成 packages (one package per directory)
  • bin 包含 可执行的命令 command(可执行的二进制文件)
  • pkg 包含 package objects (二进制的包)
    go build 编译源代码文件(source packages),并且将 resulting binaries 安装在 pkg 和 bin 目录下面。

src 目录下面包含多个 版本控制的仓库, (比如 Git 或者 Mercurial) 用来 跟踪一个或者多个 source package的开发进度。

下面给一个真实环境中的 workspace_go 是什么样子的:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
bin/
hello # 可执行的命令
outyet # 可执行的命令
pkg/
linux_amd64/
github/golang/example/
stringutil.a # pakcage objects
src/
github.com/golang/example/
.git/ # git repository metadata
hello/
hello.go # command source
outyet/
main.go # command source
main_test.go # test source
stringuitl/
reverse.go # package source
reverse_test.go # test source

bin/ 中命令的名字,pkg/中库的名字 都是文件夹的文字。 src/中包的名字和你 import 时候的名字不一定一样,这一点要区别。

Docker/Compose环境搭建

详细步骤可参考在mac上安装docker,及docker-compose

下载Frabric

在上面新建好的 GOPATH 目录下新建 src/github.com/hyperledger目录,cd进入hyperledger.执行下面:

1
2
3
git clone https://github.com/hyperledger/fabric.git
cd fabric
git check v1.1.0

目前最新版本 v1.1.0

编译configtxgen工具

1
2
cd $GOPATH/src/github.com/hyperledger/fabric  
make configtxgen

编译成功后输出:

1
2
3
4
DaiZhiqing-Pro:fabric daizhiqing$ make configtxgen
build/bin/configtxgen
CGO_CFLAGS=" " GOBIN=/Users/daizhiqing/workspace_go/src/github.com/hyperledger/fabric/build/bin go install -tags "nopkcs11" -ldflags "-X github.com/hyperledger/fabric/common/tools/configtxgen/metadata.Version=1.1.0" github.com/hyperledger/fabric/common/tools/configtxgen
Binary available as build/bin/configtxgen

编译后执行文件放在fabric目录下的的 build/bin/configtxgen

执行完整脚本

为了加快部署过程,fabric提供了一个脚本来执行所有任务。执行该脚本会生成配置结果、本地网络、Chaincode测试。

进入fabric目录下 examples/e2e_cli 目录,首先从Docker Hub拉取镜像:

1
2
3
4
# 使脚本可执行
chmod +x download-dockerimages.sh
# 执行脚本
./download-dockerimages.sh

然后我们就默默的等待镜像下载完毕吧~,这个过程会需要几分钟,脚本执行后输出:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
===> List out hyperledger docker images
hyperledger/fabric-tools latest ae6b0f53cb70 11 months ago 1.32GB
hyperledger/fabric-tools x86_64-1.0.0-beta ae6b0f53cb70 11 months ago 1.32GB
hyperledger/fabric-couchdb latest 31bbbec3d853 11 months ago 1.48GB
hyperledger/fabric-couchdb x86_64-1.0.0-beta 31bbbec3d853 11 months ago 1.48GB
hyperledger/fabric-kafka latest c4ac1c9a4797 11 months ago 1.3GB
hyperledger/fabric-kafka x86_64-1.0.0-beta c4ac1c9a4797 11 months ago 1.3GB
hyperledger/fabric-zookeeper latest 2c4ebacb6f00 11 months ago 1.31GB
hyperledger/fabric-zookeeper x86_64-1.0.0-beta 2c4ebacb6f00 11 months ago 1.31GB
hyperledger/fabric-orderer latest 11ff350dd297 11 months ago 179MB
hyperledger/fabric-orderer x86_64-1.0.0-beta 11ff350dd297 11 months ago 179MB
hyperledger/fabric-peer latest e01c2b645f11 11 months ago 182MB
hyperledger/fabric-peer x86_64-1.0.0-beta e01c2b645f11 11 months ago 182MB
hyperledger/fabric-javaenv latest 61c188dca542 11 months ago 1.42GB
hyperledger/fabric-javaenv x86_64-1.0.0-beta 61c188dca542 11 months ago 1.42GB
hyperledger/fabric-ccenv latest 7034cca1918d 11 months ago 1.29GB
hyperledger/fabric-ccenv x86_64-1.0.0-beta 7034cca1918d 11 months ago 1.29GB
hyperledger/fabric-ca latest e549e8c53c2e 11 months ago 238MB
hyperledger/fabric-ca x86_64-1.0.0-beta e549e8c53c2e 11 months ago 238MB

现在运行完整脚本:

1
./network_setup.sh up <channel-ID>

如果没有设置 channel-ID 参数,channel名默认是 mychannel 。脚本执行成功后输出:

1
2
3
===================== Query on PEER3 on channel 'mychannel' is successful =====================

===================== All GOOD, End-2-End execution completed =====================

此时,网络启动运行并测试成功。