1. 已搭好的環境:Linux使用CentOS, Docker 已搭好,Git已安裝
補充docker搭建環境:
我們可以使用阿里提供的鏡像,安裝也非常方便。通過以下命令來安裝Docker
curl -sSL http://acs-public-mirror.oss-cn-hangzhou.aliyuncs.com/docker-engine/internet | sh -
安裝完成後需要修改當前用戶(我使用的用戶叫fabric)權限:
usermod -aG docker fabric
註銷並重新登錄,然後添加阿里雲的Docker Hub鏡像:
mkdir -p /etc/docker tee /etc/docker/daemon.json <<-'EOF' { "registry-mirrors": ["https://obou6wyb.mirror.aliyuncs.com"] } EOF systemctl daemon-reload systemctl restart docker
2. go環境搭建
1)$ curl -O https://www.golangtc.com/static/go/1.9.2/go1.9.2.linux-amd64.tar.gz
下載完成後,減壓目錄,移動到合適位置(推薦爲/usr/local)
$ tar -xvf go1.9.2.linux-amd64.tar.gz
$sudo mv go /usr/local
2) 配置GOPATH 環境變量
export GOPATH=隨便目錄/GO (ps: 隨便目錄可以是自己的任何一個準備編譯Fabric 的目錄,GO 文件夾需要自己創建)
export PATH=$PATH:/usr/local/go/bin:$GOPATH/bin
ps:這種添加方法關閉命令窗口就失敗了,需要重新添加
可以將上面內容添加到 ~/.bashrc 中,每次啓動就不會消失了。
3.Docker-Compose的安裝
安裝Python-pip,運行指令: sudo yum install python-pip
然後安裝docker-compose
sudo curl -L https://github.com/docker/compose/releases/download/1.18.0/docker-compose-`uname -s`-`uname -m` -o /usr/local/bin/docker-compose
sudo chmod +x /usr/local/bin/docker-compose
4. 下載Frabric
在步驟2 的2)中的“隨便目錄”下創建GO目錄(如果沒有創建),GO下創建src/github.com/hyperledger目錄,cd進入hyperledger.執行下面:
git clone https://github.com/hyperledger/fabric.git
#切換到1.0.0 版本 一定要切換,否則後面版本Images 不同導致網絡運行報錯
cd fabric
git checkout v1.0.0
5.編譯configtxgen
工具
cd $GOPATH/src/github.com/hyperledger/fabric
make configtxgen
# 如果出錯:'ltdl.h' file not found 如果是ubuntu
sudo apt install libtool libltdl-dev
#如果是centOS
yum install -y libtool-ltdl*
# 然後再運行make
make configtxgen
編譯成功後輸出:
build/bin/configtxgen
CGO_CFLAGS=" " GOBIN=/Users/johndoe/work/src/github.com/hyperledger/fabric/build/bin go install -ldflags "-X github.com/hyperledger/fabric/common/metadata.Version=1.0.0-snapshot-8d3275f -X github.com/hyperledger/fabric/common /metadata.BaseVersion=0.3.0 -X github.com/hyperledger/fabric/common/metadata.BaseDockerLabel=org.hyperledger.fabric" github.com/hyperledger/fabric/common/configtx/tool/configtxgen
Binary available as build/bin/configtxgen``
編譯後執行文件放在Fabric目錄下的的build/bin/configtxgen
6.執行完整腳本
爲了加快部署過程,我們提供了一個腳本來執行所有任務。執行該腳本會生成配置結果、本地網絡、Chaincode測試。
進入examples/e2e_cli
目錄,首先從Docker Hub拉取鏡像:
source download-dockerimages.sh -c x86_64-1.0.0 -f x86_64-1.0.0
這個過程會需要幾分鐘,腳本執行後輸出:
===> List out hyperledger docker images
hyperledger/fabric-ca latest 35311d8617b4 7 days ago 240 MB
hyperledger/fabric-ca x86_64-1.0.0 35311d8617b4 7 days ago 240 MB
hyperledger/fabric-couchdb latest f3ce31e25872 7 days ago 1.51 GB
hyperledger/fabric-couchdb x86_64-1.0.0 f3ce31e25872 7 days ago 1.51 GB
hyperledger/fabric-kafka latest 589dad0b93fc 7 days ago 1.3 GB
hyperledger/fabric-kafka x86_64-1.0.0 589dad0b93fc 7 days ago 1.3 GB
hyperledger/fabric-zookeeper latest 9a51f5be29c1 7 days ago 1.31 GB
hyperledger/fabric-zookeeper x86_64-1.0.0 9a51f5be29c1 7 days ago 1.31 GB
hyperledger/fabric-orderer latest 5685fd77ab7c 7 days ago 182 MB
hyperledger/fabric-orderer x86_64-1.0.0 5685fd77ab7c 7 days ago 182 MB
hyperledger/fabric-peer latest 784c5d41ac1d 7 days ago 184 MB
hyperledger/fabric-peer x86_64-1.0.0 784c5d41ac1d 7 days ago 184 MB
hyperledger/fabric-javaenv latest a08f85d8f0a9 7 days ago 1.42 GB
hyperledger/fabric-javaenv x86_64-1.0.0 a08f85d8f0a9 7 days ago 1.42 GB
hyperledger/fabric-ccenv latest 91792014b61f 7 days ago 1.29 GB
hyperledger/fabric-ccenv x86_64-1.0.0 91792014b61f 7 days ago 1.29 GB
7. 現在運行完整腳本:
./network_setup.sh up <channel-ID>
如果沒有設置channel-ID
參數,channel名默認是mychannel
。腳本執行成功後輸出:
===================== Query on PEER3 on channel 'mychannel' is successful =====================
===================== All GOOD, End-2-End execution completed =====================
此時,網絡啓動運行並測試成功。
8.手動測試一下Fabric網絡
我們仍然是以現在安裝好的Example02爲例,在官方例子中,channel名字是mychannel,鏈碼的名字是mycc。我們首先進入CLI,我們重新打開一個命令行窗口,輸入:
docker exec -it cli bash
運行以下命令可以查詢a賬戶的餘額:
peer chaincode query -C mychannel -n mycc -c '{"Args":["query","a"]}'
可以看到餘額是90:
一切正常。最後我們要關閉Fabric網絡,首先需要運行exit命令退出cli容器。關閉Fabric的命令與啓動類似,命令爲:
cd ~/go/src/github.com/hyperledger/fabric/examples/e2e_cli ./network_setup.sh down