環境提前準備
- 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