ubuntu18.04搭建Hyperledger-fabric 1.1.0開發環境
Hyperledger-fabric 1.1.0更新已經兩三個月了,ubuntu18.04也更新了快一個月了。今天在ubuntu18. 04上進行了Hyperledger-fabric 1.1.0的環境搭建,現在把過程記錄下來。
Go語言環境
下載Go環境的壓縮包,這裡可以自己線上下載點選進入官網下載,然後手動解壓後複製到/usr/local
路徑下。這裡需要超級許可權開啟資料夾才可以複製進去,ubuntu輸入sudo nautilus
,Linux-mint輸入sudo caja
即可開啟。
wget https://storage.googleapis.com/golang/go1.9.linux-amd64.tar .gz
sudo tar -C /usr/local -xzf go1.9.linux-amd64.tar.gz
編輯環境變數,之前我編輯的環境變數都只是當前使用者的,以至於root
許可權下沒有Go環境,這次我修改的是全域性的配置檔案,對所有使用者都生效。依次輸入下面指令。username為你的使用者名稱
sudo setfacl -m u:username:rwx /home
mkdir /home/gopath
sudo gedit /etc/profile
將下面資訊追加到文字的末端
export GOROOT=/usr/local/go
export GOARCH=amd64
export GOOS=linux
export GOPATH=/home/gopath
export GOBIN=$GOROOT/bin
export PATH=$GOPATH/bin:$GOROOT/bin:$PATH
export GOPATH=/home/gopath
這一句尤為重要,這是你自己建立的Go的工作路徑,換句話說你的fabric
原始碼得安裝到這個路徑下。
修改完之後要登出登出,source /etc/profile
這個命令只對當前終端Go環境有效,重新開啟終端是識別不出Go環境的。
登出重新登陸後,開啟終端輸入:go version
出現:go version go1.9 linux/amd64
說明配置成功,你還可以使用roo
輸入:
sudo chmod -R 777 /home
mkdir /home/gopath
安裝docker
這裡本人是參照官網安裝的,不過官網是英文,這裡還是給出相關步驟吧。
解除安裝舊版本的Docker,沒安裝的就跳過此步。
sudo apt-get remove docker docker-engine docker.io
開始安裝
sudo apt-get update
sudo apt-get install \
apt-transport-https \
ca-certificates \
curl \
software-properties-common
curl -fsSL https://download.docker.com/linux/ubuntu/gpg | sudo apt-key add -
sudo add-apt-repository \
"deb [arch=amd64] https://download.docker.com/linux/ubuntu \
$(lsb_release -cs) \
stable"
sudo apt-get update
sudo apt-get install docker-ce
完成上面操作之後輸入:docker version
出現下面內容:
Client:
Version: 18.03.1-ce
API version: 1.37
Go version: go1.9.5
Git commit: 9ee9f40
Built: Wed Jun 20 21:43:51 2018
OS/Arch: linux/amd64
Experimental: false
Orchestrator: swarm
Got permission denied..............
此時已經安裝號Docker了,但是還需要一些小操作。
sudo usermod -aG docker XXX(XXX是當前使用者名稱)
下面新增阿里雲的Docker映象:
輸入:sudo mkdir -p /etc/docker
輸入:sudo gedit /etc/docker/daemon.json
將以下內容寫入文字:
{
"registry-mirrors": ["https://obou6wyb.mirror.aliyuncs.com"]
}
輸入:sudo systemctl daemon-reload
輸入:sudo systemctl restart docker
再次輸入:docer version
如果還有許可權不足提示,輸入:sudo chmod -R 777 /var/run/docker.sock
就可以了。
正確的返回應該是下面這樣:
Client:
Version: 18.03.1-ce
API version: 1.37
Go version: go1.9.5
Git commit: 9ee9f40
Built: Wed Jun 20 21:43:51 2018
OS/Arch: linux/amd64
Experimental: false
Orchestrator: swarm
Server:
Engine:
Version: 18.03.1-ce
API version: 1.37 (minimum version 1.12)
Go version: go1.9.5
Git commit: 9ee9f40
Built: Wed Jun 20 21:42:00 2018
OS/Arch: linux/amd64
Experimental: false
安裝docker-compose
sudo apt-get install python-pip
sudo pip install docker-compose
輸入:docker-compose -version
出現:docker-compose version 1.17.1, build unknown
即可。
Fabric原始碼下載
這裡使用的是1.1.0版本。
mkdir -p /home/gopath/src/github.com/hyperledger
cd /home/gopath/src/github.com/hyperledger
git clone https://github.com/hyperledger/fabric.git
cd /home/gopath/src/github.com/hyperledger/fabric
git checkout v1.1.0
這裡的路徑尤為重要,還記得export GOPATH=/home/gopath
,建立路徑的時候千萬要一致。
如果這裡下載有問題,可以前往github上字形下載原始碼包。放到對應的目錄就可以了。
需要注意的是,普通使用者對home目錄是沒有寫許可權的,為了方便你需要修改一下許可權:sudo chmod -R 777 /home
這裡千萬要注意,很多朋友沒有成功編譯出cryptgen檔案就是路徑的問題!!!!
下載docker映象
cd /home/gopath/src/github.com/hyperledger/fabric/examples/e2e_cli/
source download-dockerimages.sh
git clone https://github.com/hyperledger/fabric-samples/tree/release-1.0
cd /home/gopath/src/github.com/hyperledger/fabric/examples/e2e_cli/fabric-samples/scripts
source bootstrap.sh
這裡需要耐心的等待!
想必大家也注意到了,samples都整合過來了。
輸入:docker images
出現如下:
REPOSITORY TAG IMAGE ID CREATED SIZE
hyperledger/fabric-ca 1.2.0-rc1 708a0286b4ac 3 days ago 248MB
hyperledger/fabric-ca latest 708a0286b4ac 3 days ago 248MB
hyperledger/fabric-tools 1.2.0-rc1 cc581750db33 4 days ago 1.51GB
hyperledger/fabric-tools latest cc581750db33 4 days ago 1.51GB
hyperledger/fabric-ccenv 1.2.0-rc1 e1046545b08e 4 days ago 1.42GB
hyperledger/fabric-ccenv latest e1046545b08e 4 days ago 1.42GB
hyperledger/fabric-orderer 1.2.0-rc1 d1b2eedd73b3 4 days ago 147MB
hyperledger/fabric-orderer latest d1b2eedd73b3 4 days ago 147MB
hyperledger/fabric-peer 1.2.0-rc1 1be334200880 4 days ago 154MB
hyperledger/fabric-peer latest 1be334200880 4 days ago 154MB
hyperledger/fabric-zookeeper 0.4.8 1ffd64c98bad 8 weeks ago 1.43GB
hyperledger/fabric-zookeeper latest 1ffd64c98bad 8 weeks ago 1.43GB
hyperledger/fabric-kafka 0.4.8 12d61042b176 8 weeks ago 1.44GB
hyperledger/fabric-kafka latest 12d61042b176 8 weeks ago 1.44GB
hyperledger/fabric-couchdb 0.4.8 12eb8cf6aba1 8 weeks ago 1.6GB
hyperledger/fabric-couchdb latest 12eb8cf6aba1 8 weeks ago 1.6GB
hyperledger/fabric-baseos amd64-0.4.8 83b7b016c8e5 8 weeks ago 128MB
hyperledger/fabric-tools x86_64-1.0.0-beta ae6b0f53cb70 12 months ago 1.32GB
hyperledger/fabric-couchdb x86_64-1.0.0-beta 31bbbec3d853 12 months ago 1.48GB
hyperledger/fabric-kafka x86_64-1.0.0-beta c4ac1c9a4797 12 months ago 1.3GB
hyperledger/fabric-zookeeper x86_64-1.0.0-beta 2c4ebacb6f00 12 months ago 1.31GB
hyperledger/fabric-orderer x86_64-1.0.0-beta 11ff350dd297 12 months ago 179MB
hyperledger/fabric-peer x86_64-1.0.0-beta e01c2b645f11 12 months ago 182MB
hyperledger/fabric-javaenv latest 61c188dca542 12 months ago 1.42GB
hyperledger/fabric-javaenv x86_64-1.0.0-beta 61c188dca542 12 months ago 1.42GB
hyperledger/fabric-ccenv x86_64-1.0.0-beta 7034cca1918d 12 months ago 1.29GB
hyperledger/fabric-ca x86_64-1.0.0-beta e549e8c53c2e 12 months ago 238MB
例項演示
這想必是最精彩的環節了!開始吧。
cd /home/gopath/src/github.com/hyperledger/fabric/examples/e2e_cli/fabric-samples/first-network
./byfn.sh -m generate
如果這裡提示你/opt/gopath/src/github.com/hyperledger/fabric...........
沒有這個檔案或目錄,那就輸入sudo ln -s /home/gopath /opt/gopath
建立一個軟連線就可以了。
然後會問你:輸入y
即可,如下:
Generating certs and genesis block for channel 'mychannel' with CLI timeout of '10' seconds and CLI delay of '3' seconds
Continue? [Y/n] y
稍等一會,你會看到:
#################################################################
####### Generating anchor peer update for Org2MSP ##########
#################################################################
+ configtxgen -profile TwoOrgsChannel -outputAnchorPeersUpdate ./channel-artifacts/Org2MSPanchors.tx -channelID mychannel -asOrg Org2MSP
2018-06-26 07:58:30.055 CST [common/tools/configtxgen] main -> INFO 001 Loading configuration
2018-06-26 07:58:30.065 CST [common/tools/configtxgen] doOutputAnchorPeersUpdate -> INFO 002 Generating anchor peer update
2018-06-26 07:58:30.066 CST [common/tools/configtxgen] doOutputAnchorPeersUpdate -> INFO 003 Writing anchor peer update
+ res=0
+ set +x
等上面這段完成之後,接著輸入:./byfn.sh -m up
.
同樣會問你,輸入y
即可。然後出現下面:
===================== Query successful on peer1.org2 on channel 'mychannel' =====================
========= All GOOD, BYFN execution completed ===========
_____ _ _ ____
| ____| | \ | | | _ \
| _| | \| | | | | |
| |___ | |\ | | |_| |
|_____| |_| \_| |____/
完美,接著輸入:docker exec -it cli bash
執行cli容器。
輸入:peer chaincode query -C mychannel -n mycc -c '{"Args":["query","a"]}'
顯示如下:
90
就說明a的餘額為90。
成功了,這裡有一些小小的收穫。
- 部署合約的時候看到
peer chaincode install -n mycc -v 1.0 -l golang -p github.com/chaincode/chaincode_example02/go/
,其實這個合約就是e2e_cli使用的智慧合約。