Hyperledger Fabric 在Ubuntu上的環境搭建
首先在VMware Workstation虛擬機器上安裝Ubuntu,配置好環境,調好中文語言、解析度後,開啟終端。
PS:在安裝Ubuntu系統後如果發現與Windows系統的檔案不能相互複製,網上查了很多教程,發現都是不能用的,能實現的方法如下所示:
開啟終端,輸入:
1:sudo apt-get autoremove open-vm-tools
2:sudo apt-get install open-vm-tools-desktop
然後重啟
接下來,就正式開始Fabric的部署了:
第一步:配置好基本的Ubuntu環境
安裝 Vim:
sudo apt-get install vim
安裝Curl:
1:sudoapt-get update
2:sudoapt install curl
安裝Git:
sudo apt-get install git
第二步:安裝go語言和搭配環境變數
安裝go語言:
sudo apt-getinstall golang
查看go語言的版本:
go version
查看go的安裝路徑、環境變數:
go env
在安裝好go語言之後,還需要配置go語言的環境變數:
Vi ~/.profile //編輯目前使用者的環境變數
在 profile的最後添加以下內容
export PATH=$PATH:/usr/local/go/bin (根據自己的情況而定) //設定為你自己的go安裝目錄
export GOROOT=/usr/local/go
exportGOPATH=$HOME/go
exportPATH=$PATH:$HOME/go/bin
第三步:安裝docker。
Ubuntu有內建的docker:
sudo apt-get update
sudo apt-get install -y docker.io
sudo ln -sf /usr/bin/docker.io /usr/local/bin/docker
測試:sudo docker info
如果遇到問題,可以停用、啟動docker。
停用:sudo service docker stop
啟用:sudo service docker start
然後修改目前使用者的許可權:
sudo usermod -aG docker $USER
添加鏡像加速:
建立docker檔案
sudo mkdir -p /etc/docker
sudo gedit /etc/docker/daemon.json
在daemon.json檔案中加入如下資訊:
{ "registry-mirrors":["https://registry.docker-cn.com"] }
Docker-Compose的安裝
運行以下命令下載最新版本的docker-compose:
sudo curl -Lhttps://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
測試安裝:
docker-compose –version
第四步,Fabric源碼下載
在go的環境變數下建立檔案夾,切換到該檔案夾下:
cd ~/go/src/github.com/hyperledger
用git命令下載完整源碼
git clone https://github.com/hyperledger/fabric.git
由於我們只是在搭建環境。不需要最新的代碼,所以只需要切換到v1.0.0大版本就行。
cd ~/go/src/github.com/hyperledger/fabric //進入fabric目錄git checkout v1.0.0
Fabric源碼下載完成!!
第五步,Fabric Docker鏡像的下載
切換到fabric的examples檔案下:
cd ~/go/src/github.com/hyperledger/fabric/examples/e2e_cli/
運行命令下載鏡像:
source download-dockerimages.sh -c x86_64-1.0.0 -f x86_64-1.0.0
下載完畢後,我們運行以下命令檢查下載的鏡像列表:
docker images
第六步,啟動Fabric網路並完成ChainCode的測試
切換到examples/e2e_cli檔案下,啟動測試例子:
cd ~/go/src/github.com/hyperledger/fabric/examples/e2e_cli
啟動:./network_setup.sh up
關閉:./network_setup.shdown
執行./byfn.sh -m up 時,出錯資訊如下,
ERROR: for orderer.example.comCannot create container for service orderer.example.com: Conflict. Thecontainer name “/orderer.example.com” is already in use by container“d6621116cf0d1ab108277893178ba29aCreating peer0.org1.example.com … error
解決方案:這是因為之前異常終止了,現在再次啟動並執行時候,命名衝突導致的。知道問題了,解決起來就沒有那麼難了。首先輸入docker ps -a檢查是是不是真的命名衝突,如果是,docker ps -qa | xargs docker rm把命名衝突的刪除掉即可。再次輸入./byfn.sh -m up,等待一會,就和官網上一樣了。