準(zhǔn)備環(huán)境
操作系統(tǒng):阿里云Ubuntu16.04
Git雹有、Golang
Docker環(huán)境支持:docker盒犹、docker-compose
Fabric組件Docker鏡像
Fabric源碼庫(kù)
安裝步驟
- 更新系統(tǒng)軟件
sudo apt-get update
安裝Git
sudo apt install git
- 查看git版本信息
git version
安裝docker
參考文檔:
https://docs.docker.com/install/linux/docker-ce/ubuntu/
https://yq.aliyun.com/articles/110806
- 自動(dòng)安裝
curl -fsSL https://get.docker.com | bash -s docker --mirror Aliyun
- 查看docker版本
docker version
docker version
- 設(shè)置阿里云docker鏡像加速器
網(wǎng)址:https://cr.console.aliyun.com/mirrors
安裝docker-compose
參考文檔:
https://docs.docker.com/compose/install/
最新版地址:
https://github.com/docker/compose/releases/
- (官方途徑)下載docker-compose,也可訪問(wèn):https://get.daocloud.io國(guó)內(nèi)高速下載
sudo curl -L "https://github.com/docker/compose/releases/download/1.24.0/docker-compose-$(uname -s)-$(uname -m)" -o /usr/local/bin/docker-compose
- 授權(quán)
sudo chmod +x /usr/local/bin/docker-compose
- 查看版本信息
docker-compose --version
docker-compose --version
- 創(chuàng)建docker用戶(hù)組
sudo groupadd docker
- 將當(dāng)前用戶(hù)添加到用戶(hù)組(${USER}為自己當(dāng)前的用戶(hù)名)
sudo usermod -aG docker ${USER}
- 重啟docker
sudo systemctl restart docker
- 切換或者退出當(dāng)前賬戶(hù)再重新登入
su root #切換到root用戶(hù)
su ${USER} #再切換到原來(lái)的應(yīng)用用戶(hù)以上配置才生效
安裝golang
- 訪問(wèn)國(guó)內(nèi)此網(wǎng)站下載最新Linux穩(wěn)定版的golang
中文社區(qū)網(wǎng)址:https://studygolang.com/dl
獲取安裝包:wget https://dl.google.com/go/go1.11.linux-amd64.tar.gz
- 使用tar命令把安裝包解壓縮/usr/local文件夾下面
tar -zxvf go1.11.linux-amd64.tar.gz -C /usr/local
- 設(shè)置環(huán)境變量
sudo vim /etc/profile
- 添加內(nèi)容啰扛,其中g(shù)o的安裝目錄是/usr/local/go旺嬉,go的工作目錄是/home/go
export GOPATH=/home/go
export GOROOT=/usr/local/go
export PATH=$GOROOT/bin:$PATH
- 使用source命令啃擦,使其配置信息生效
source /etc/profile
- 查看go的版本信息
go version
- 查看go的具體配置信息
go env
- 創(chuàng)建go目錄
mkdir -p /home/go
- 進(jìn)入go項(xiàng)目路徑
cd $GOPATH
Fabric部署
- 在/home/go下創(chuàng)建目錄
mkdir -p /home/go/src/github.com/hyperledger
cd /home/go/src/github.com/hyperledger
- 進(jìn)入 fabric 目錄查看版本分支并切換分支
cd fabric
git branch
此處選擇對(duì)應(yīng)版本或公開(kāi)發(fā)行版,我選擇v1.1.0
git checkout v1.1.0
Fabric的Docker鏡像下載
- 進(jìn)入
fabrci/examples/e2e_cli/
目錄,完成鏡像下載刹枉,執(zhí)行命令:
cd /home/go/src/github.com/hyperledger/fabrci/examples/e2e_cli/
ls
- ls之后顯示叽唱,在官網(wǎng)找對(duì)應(yīng)的docker鏡像版本號(hào)(https://hub.docker.com/u/hyperledger),因?yàn)榘惭b的fabric1.1.0微宝,故我找的是1.1.0棺亭,這一步十分重要
https://hub.docker.com/r/hyperledger/fabric-peer/tags?page=2
image.png
source download-dockerimages.sh -c {tags:輸版本號(hào)} -f {tags:輸版本號(hào)}
source download-dockerimages.sh -c x86_64-1.1.0 -f x86_64-1.1.0
docker images
docker images
啟動(dòng)Fabric并自動(dòng)完成chaincode測(cè)試
- 進(jìn)入剛剛的e2e_cli文件目錄,執(zhí)行
./network_setup.sh up
image
顯示END-E2E表示測(cè)試成功
官方通過(guò)chaincode手動(dòng)測(cè)試Fabric案例
- 重新打開(kāi)一個(gè)窗口蟋软,在fabric目錄下輸入
docker exec -it cli bash
image
- 再輸入
peer chaincode query -C mychannel -n mycc -c '{"Args":["query","a"]}'
- 圖例顯示a結(jié)果90
- a給b轉(zhuǎn)賬50
peer chaincode invoke -o orderer.example.com:7050 --tls true --cafile /opt/gopath/src/github.com/hyperledger/fabric/peer/crypto/ordererOrganizations/example.com/orderers/orderer.example.com/msp/tlscacerts/tlsca.example.com-cert.pem -C mychannel -n mycc -c '{"Args":["invoke","a","b","50"]}'
- 再執(zhí)行查詢(xún)語(yǔ)句镶摘,此時(shí)結(jié)果為40
peer chaincode query -C mychannel -n mycc -c '{"Args":["query","a"]}'
- 最后,如果打算退出網(wǎng)絡(luò)岳守,先執(zhí)行
exit
- 在剛才fabric/examples/e2e_cli目錄下執(zhí)行
./network_setup.sh down
FAQ
- 阿里云服務(wù)器凄敢,Ubuntu 報(bào)錯(cuò) sudo: unable to resolve host
解決方案:https://blog.csdn.net/hhtnan/article/details/79551969
- 編輯
/etc/hosts
vim /etc/hosts
-
結(jié)尾處增加自己的hostname
image.png
- 出現(xiàn)
Error: Error endorsing chaincode: rpc error: code = Unknown desc = error starting container: API error (404): {"message":"network e2ecli_default not found"}
的錯(cuò)誤
!!!!!! Chaincode instantiation on PEER2 on channel 'mychannel' failed !!!!!!!!!!!!!!!!
================== ERROR !!! FAILED to execute End-2-End Scenario ===============
修改peer-base.yaml
- 將將base/peer-base.yaml文件中的
- CORE_VM_DOCKER_HOSTCONFIG_NETWORKMODE=e2ecli_default
- 改為
- CORE_VM_DOCKER_HOSTCONFIG_NETWORKMODE=e2e_cli_default
- 真實(shí)原因是默認(rèn)創(chuàng)建的網(wǎng)絡(luò)名稱(chēng)為:$(目錄名稱(chēng))_default,而我們的這個(gè)示例項(xiàng)目目錄名稱(chēng)為e2e_cli湿痢,因此網(wǎng)絡(luò)名稱(chēng)為e2e_cli_deault涝缝。
- 可通過(guò)下方命令查看網(wǎng)絡(luò)
docker network ls
docker network ls
- 執(zhí)行
./byfn.sh up
運(yùn)行失敗
image.png
(騰訊云不存在這個(gè)問(wèn)題,自己裝ubuntu也不存在這個(gè)問(wèn)題)
/etc/resolv.conf 注釋掉 options timeout:2 attempts:3 rotate single-request-reopen
image.png
重新執(zhí)行
./byfn.sh -m down
./byfn.sh -m up
參考文檔
https://docs.docker.com/install/linux/docker-ce/ubuntu/
https://github.com/docker/compose/releases/
https://docs.docker.com/compose/install/
https://hub.docker.com/u/hyperledger