Hyperledger Fabric1.4環境搭建及範例測試

2020-09-19 16:00:10

基於興趣,有幸接觸到區塊鏈,對區塊鏈也有一定的認識。之前搭建過Fabric1.1版本,這次搭建1.4版本並寫下了這篇博文,其中有我個人踩坑的解決方案和思考。學識尚淺,有誤的地方歡迎指正交流

安裝前說明

Centos7 64位元作業系統。
需要安裝3個基本環境Docker、Docker-Compose、Go語言環境安裝,之後下載Fabric原始碼,最後測試網路
檢查伺服器核心版本,要在3以上

uname -r

在這裡插入圖片描述

一.安裝Dokcer

1.刪除舊Docker

如果以前安裝過docker,刪除原來的

yum remove docker \docker-client \docker-client-latest \docker-common \docker-latest \docker-latest-logrotate \docker-logrotate \docker-engine

2.安裝軟體包

//新增docker yum 源
yum-config-manager --add-repo https://download.docker.com/linux/centos/docker-ce.repo
//安裝軟體包
yum install -y yum-utils device-mapper-persistent-data lvm2

3.執行docker

systemctl start docker
docker -version         //檢視版本

在這裡插入圖片描述

二.安裝Docker-Compose

1.下載docker-compose到指定目錄

下載到/usr/local/bin/docker-compose目錄下。
docker compose 官方推薦的下載方式是這樣:

curl -L
「https://github.com/docker/compose/releases/download/1.24.0/docker-compose- ( u n a m e − s ) − (uname -s)- (unames)(uname -m)」 -o /usr/local/bin/docker-compose

上面的方法下載太慢了,不推薦

推薦使用國內地址

curl -L https://get.daocloud.io/docker/compose/releases/download/1.24.1/docker-compose-`uname -s`-`uname -m`  > /usr/local/bin/docker-compose

在這裡插入圖片描述

2設定docker-compose目錄的許可權

chmod +x /usr/local/bin/docker-compose

3.檢查是否安裝成功

docker-compose --version

在這裡插入圖片描述

三.Go語言安裝

1.從國內站點下載安裝包,版本在1.11.x以上

wget https://studygolang.com/dl/golang/go1.12.4.linux-amd64.tar.gz

在這裡插入圖片描述

2.解壓到/usr/local/go目錄下

-C :表示指定解壓目錄

tar -zxvf go1.12.4.linux-amd64.tar.gz -C /opt

在/opt下會自動建立一個go目錄,無需自己建立

3.設定環境變數

在/etc/profile檔案末尾新增環境變數

// 建立go工作目錄
mkdir /opt/gopath
vi /etc/profile               //在檔案末尾新增
export GOPATH=/opt/gopath
export GOROOT=/opt/golang/go
export PATH=$GOROOT/bin:$PATH

在這裡插入圖片描述
使其立即生效

source /etc/profile

4.檢視版本

go version

四.Fabric安裝

1.建立目錄並進入

mkdir -p $GOPATH/src/github.com/hyperledger
cd $GOPATH/src/github.com/hyperledger

還需要藉助git工具,因此還要下載git

yum install git

2.下載原始碼

方法一:(不推薦)直接下載github上的原始碼

git clone https://github.com/hyperledger/fabric.git

可能下載失敗,出現RPC failed錯誤,原因是git的curl的postBuffer預設值較小。解決方法:修改git傳輸位元組限制,再重新下載

//修改git傳輸位元組限制
git config –global http.postBuffer 524288000

方法二:(推薦)通過碼雲地址下載

用自己的碼雲從github賬號上匯入,具體方法見:https://blog.csdn.net/weixin_44732379/article/details/108639787
這裡可以直接用我的地址,下載到完成不過一分鐘

git clone https://gitee.com/firefly_ignition/fabric-samples.git

在這裡插入圖片描述

3.檢視並切換當前分支,我選擇的是1.4.0版本

cd ./fabric
git branch -a  
git checkout v1.4.0

五.安裝Fabbric-sample範例

方法一.指令碼下載

進入fabric/scripts目錄可以看到一個bootstrap.sh指令碼
在這裡插入圖片描述
直接執行bootstrap.sh指令碼

bash bootstrap.sh

此處執行時間比較久,中間可能會斷開,參考過其他一些文章說重新執行,親測無效,如下圖。
在這裡插入圖片描述
其實指令碼幫我們幹了幾件事:

  • 從 github.com 克隆 hyperledger/fabric-samples 儲存庫
  • 使用 checkout 簽出對應指定的版本標籤;
  • 將二進位制檔案(bin)和組態檔(config)安裝到 fabric-samples 儲存庫的根目錄中;
  • 下載指定版本的 Hyperledger Fabric Docker 映象檔案,將下載的 Docker 映象檔案標記為 「lastest"。

方法二.(推薦) 手動下載

通過對指令碼的分析我們可以手動下載,主要完成三個步驟
1.下載fabric-sample
與下載fabric原始碼同理,這裡我使用自己的碼雲地址

git clone -b v1.4.0  https://gitee.com/firefly_ignition/fabric-samples.git
cd fabric-samples
git checkout v1.4.0  //切換版本

注意: fabric-sample目錄與fabric目錄同級!
2.下載二進位制檔案
需要下載兩個壓縮包,選擇相應版本下載,我的網路硬碟連結:
https://pan.baidu.com/s/1xrLOnGIRUMiRVODW1WpDDQ
提取碼:j60x
壓縮檔案hyperledger-fabric-linux-amd64-1.4.0.tar包含bin和 config 兩個資料夾
hyperledger-fabric-ca-linux-amd64-1.4.0.tar包含bin資料夾
將壓縮包上傳並解壓到fabric-sample目錄下

tar -zxvf hyperledger-fabric-linux-amd64-1.4.0.tar
tar -zxvf hyperledger-fabric-ca-linux-amd64-1.4.0.tar

在這裡插入圖片描述
3.下載映象
先設定加速鏡,不然下載很慢

# mkdir -p /etc/docker
# tee /etc/docker/daemon.json <<-'EOF'
{
"registry-mirrors": ["https://8w1wqmsz.mirror.aliyuncs.com"]
}
EOF
# systemctl daemon-reload
# systemctl restart docker

fabric/scripts 目錄下的 bootstrap.sh 指令碼,複製到fabric-sample目錄下
刪除 bootstrap.sh檔案中的samplesInstallbinariesInstall 步驟,保留映象下載的步驟。
執行 bootstrap.sh 指令碼:

$ ./bootstrap.sh 1.4.0 1.4.0 0.4.15

下載好了會列出映象:
在這裡插入圖片描述

測試網路

1.4版本的e2e案例被移除,所以測試網路使用fabric-samples 中的 first-network
啟動網路

cd ./fabric-samples/first-network/
./byfn.sh up

在這裡插入圖片描述
在這裡插入圖片描述
出現以上結果表示網路測試成功
docker ps命令可以檢視到節點的啟動情況
最後別忘了關閉網路

./byfn.sh down

參考文章:
[1]https://www.icode9.com/content-1-180278.html
[2]作者:靈·龍 https://www.cnblogs.com/llongst/p/9482038.html
[3]作者:zongmin https://blog.csdn.net/qq_34680444/article/details/87257141