环境提前准备
- vagrant 1.7.4 或以上
预备好golang/x/tools 库
在执行vagrant up
过程中,会执行fabric/devenv
目录下的setup.sh
脚本,其中有一项make clean gotools
,会去go get
golang/x/tools
下的一些库,这些库无法下载,可使用github上的替换。
修改setup.sh
,在83行下增加
#down x/tools first
cat << EOF
down x/tools first
EOF
tools=$GOPATH'/src/github.com/golang/tools'
echo "tools path "$tools
if [ ! -d "$tools" ]
then
cd $GOPATH/src/github.com/golang
git clone https://github.com/golang/tools.git
else
echo "x/tools already exist"
fi
修改 fabric
目录下Makefile,在175行下添加
-v /opt/gopath:/opt/gopath \
修改 fabric/gotools
目录下的Makefile,在44行下方增加
gotool.goimports:
@echo "Building golang.org/x/tools/cmd/goimports -> goimports"
@GOPATH=$(abspath $(TMP_GOPATH)) go install golang.org/x/tools/cmd/goimports
在 $(GOBIN)/%:
下增加
@echo "copy x/tools resource"
@mkdir -p $(TMP_GOPATH)/src/golang.org/x
@cp -R $(GOPATH)/src/github.com/golang/tools $(TMP_GOPATH)/src/golang.org/x
下载fabric和fabric-ca
fabric 代码托管在gerrit 上,登录需要一个Linux Foundation ID。注册地址 https://identity.linuxfoundation.org/
在我的windows上安装好git,clone 代码选择clone with commit-msg hook,选择ssh方式。其中LFD是Linux Foundation ID账号。
git config --global core.autocrlf false
git clone ssh://LFID@gerrit.hyperledger.org:29418/fabric && scp -p -P 29418 shiyouRan@gerrit.hyperledger.org:hooks/commit-msg fabric/.git/hooks/
git clone ssh://LFID@gerrit.hyperledger.org:29418/fabric-ca && scp -p -P 29418 shiyouRan@gerrit.hyperledger.org:hooks/commit-msg fabric-ca/.git/hooks/
进入到fabric/devenv
目录 vagrant up
, 会显示下载fabric的virtualbox.box,下载速度非常慢,可事先用其它下载工具把该box下载下来,下载地址就是上面显示的地址。
如果使用单独下载的box,完成后添加box到本地 vagrant box add $box_path
,$box_path
是下载的virtualbox.box的路径, 同时需要设置环境变量USE_LOCAL_BASEIMAGE=1
。
vagrant up
再次启动。最后执行成功,在虚拟机环境没有 /etc/motd
这个文件。
配置docker环境
docker version
查看版本是1.13,需要配置docker的配置文件路径:
vi /lib/systemd/system/docker.service
,在 [Service]
下增加
EnvironmentFile=/etc/default/docker
ExecStart=/usr/bin/dockerd -H fd:// $DOCKER_OPTS
修改vi /etc/default/docker
,设置
DOCKER_OPTS="$DOCKER_OPTS -H tcp://0.0.0.0:2375 -H unix:///var/run/docker.sock --api-cors-header='*'"
重启docker
sudo systemctl daemon-reload
sudo systemctl restart docker
编译
cd /opt/gopath/src/github.com/hyperledger/fabric
make all
cd /opt/gopath/src/github.com/hyperledger/fabric-ca
make all
如果中途下载基础镜像不成功,包括 hyperledger/fabric-baseimage
, hyperledger/fabric-baseos
,则把镜像名和tag粘贴下来,先直接docker pull
把他们下载下来,再继续 make all
。
成功之后会得到所有的镜像
hyperledger/fabric-testenv-orderer
hyperledger/fabric-ca
hyperledger/fabric-couchdb
hyperledger/fabric-kafka
hyperledger/fabric-zookeeper
hyperledger/fabric-testenv
hyperledger/fabric-buildenv
hyperledger/fabric-orderer
hyperledger/fabric-peer
hyperledger/fabric-javaenv
hyperledger/fabric-ccenv
整个开发环境就搭建好了。
附录
参考 http://hyperledger-fabric.readthedocs.io/en/latest/dev-setup/devenv.html