Fabric2.0部署學習系列文章目錄
1.《在本機上安裝VMWare詳細圖文程序》
https://blog.csdn.net/weixin_44750512/article/details/108309291
2.《VMware安裝64位Ubuntu-20.04.1-live-server-amd64(服務器版)并開啟SSH服務進行遠程登錄,詳細圖文程序》
https://blog.csdn.net/weixin_44750512/article/details/108351803
3.VMware安裝64位Ubuntu-20.04.1桌面版(desktop)、VMware Tools安裝、更換虛擬機下載服務器,詳細圖文程序,
https://blog.csdn.net/weixin_44750512/article/details/108310906
4.《Fabric2.0部署學習進階教程》
5.《解決運行Fabric2.0中first-network時,byfn.sh 180: go:command not found;error getting chaincode bytes: failed to calculate dependencies: incomplete package兩處錯誤》
https://blog.csdn.net/weixin_44750512/article/details/108313214
目錄
系列文章目錄
前言
1、資源環境
2、依賴安裝
2.2.1 curl安裝
2.2.2 git安裝
2.2.3 jq安裝
2.2.4 golang安裝與配置
2.2.5 Docker安裝
1.安裝https訪問依賴包
2.添加docker官方GPG key
3.設定Docker穩定版倉庫
4.更新源
5.安裝Docker
2.2.6 Docker鏡像加速設定
2.2.7 Docker Compose安裝
三、鏡像部署網路、啟動first-network
3.1 下載Fabric原始碼
3.2 下載Fabric的docker鏡像
3.3 下載Fabric示例代碼
3.4 下載Fabric部署所需的二進制檔案
3.5 下載Fabric-ca二進制檔案
3.6 啟動first-network網路
1.目錄切換
2.啟動網路
?3.7 解決辦法
?
總結
前言
在端對Fabric2.0進行學習時,跟隨教程《Fabric2.0學習進階——搭建環境準備(一)》、《Fabric2.0學習進階——鏡像部署網路(二》,但是在部署程序中,因為自己本機服務版本的原因出現錯誤,本篇博文主要是在按照上述教程進行部署程序中遇到的問題以及輸入指令正確的安裝程序進行完善和補充,并且按照上述教程中進行配置的程序中遇到的問題進行詳細的說明,希望對初學Fabric部署以及啟動first-network遇到問題的學習者有所幫助,以下為原文博客地址:https://www.jianshu.com/p/9d4ebf3392cc,
1、資源環境
Fabric推薦安裝系統為Linux和Mac,本文的安裝環境為安裝Ubuntu系統的虛擬機,記憶體設定為4G,本文使用的系統安裝包為ubuntu-20.04.1-desktop-amd64.iso,VMware的安裝以及虛擬機的創建程序,請參考以前的博客,
VMware的下載與安裝:https://blog.csdn.net/weixin_44750512/article/details/108309291
VMware安裝64位Ubuntu-20.04.1桌面版(desktop)詳細程序:https://blog.csdn.net/weixin_44750512/article/details/108310906
2、依賴安裝
在已經準備好服務器或虛擬機的前提下,本節主要介紹Fabric平臺安裝部署程序中所需要的軟體安裝,這些軟體包括:
-
curl:下載工具,版本latest
-
git:代碼克隆工具,版本latest
-
golang:Fabric很多組件基于Go編程開發,版本1.13
-
jq:JSON決議器,版本latest
-
Docker:容器,版本18.06.3-ce
-
Docker Compose:容器管理工具,版本1.25.5
Ubuntu系統提供的軟體安裝命令是apt-get,在進行軟體安裝之前,需要把資源串列進行更新,保證下載到最新的軟體版本,執行如下命令實作資源串列更新:
sudo apt update -y --fix-missing
2.2.1 curl安裝
執行以下命令完成curl的安裝:
sudo apt install -y curl
查看安裝結果,執行命令:
curl -V
如下圖所示,命令正常執行將顯示版本號,發布時間等資訊,表示安裝成功,

2.2.2 git安裝
執行以下命令完成git的安裝:
sudo apt install -y git
查看安裝結果,執行命令:
git version
如下圖所示,命令正常執行將顯示版本資訊,表示安裝成功,
![]()
2.2.3 jq安裝
執行以下命令完成jq的安裝:
sudo apt install -y jq
查看安裝結果,執行命令:
jq --version
如下圖所示,命令正常執行將顯示版本資訊,表示安裝成功,
![]()
2.2.4 golang安裝與配置
Golang的安裝比較簡單,可以指定下載的版本,本次實驗使用的是1.13版本的Golang,
sudo curl -O https://dl.google.com/go/go1.13.linux-amd64.tar.gz
將壓縮包下載到/usr/local目錄下,直接下載解壓即可,執行如下命令:
#解壓安裝到/usr/local目錄
sudo tar -xvf go1.13.linux-amd64.tar.gz -C /usr/local
接下創建Go的作業目錄,執行如下命令:
sudo mkdir -p /opt/goworkspace/bin
sudo mkdir -p /opt/goworkspace/src
sudo mkdir -p /opt/goworkspace/pkg
設定Go相關的環境變數:
# 設定環境變數
sudo vim /etc/profile
# 將以下內容追加到檔案末尾
export GOROOT=/usr/local/go
export GOPATH=/opt/goworkspace
export PATH=$GOROOT/bin:$PATH
# 使環境變數生效
source /etc/profile
Go設定代理:由于go一些依賴包被墻,所以需要設定代理,輸入 go env 查看關于go的環境,
尚未設定代理之前的DOPROXY:

輸入以下指令對go進行代理的設定
go env -w GO111MODULE=on
go env -w GOPROXY=https://goproxy.cn,direct
指令執行之后:

查看安裝結果,執行命令:
go version
如下圖所示,命令正常執行將顯示版本資訊,表示安裝成功,
![]()
2.2.5 Docker安裝
在線安裝Docker之前,需要進行如下準備作業:
1.安裝https訪問依賴包,執行如下命令:
sudo apt-get install apt-transport-https ca-certificates software-properties-common
2.添加docker官方GPG key:
curl -fsSL https://download.docker.com/linux/ubuntu/gpg | sudo apt-key add -
添加成功之后會顯示ok
![]()
3.設定Docker穩定版倉庫:
# 備份/etc/apt/sources.list
sudo cp /etc/apt/sources.list /etc/apt/sources.list.bak
# 編輯/etc/apt/sources.list
sudo vim /etc/apt/sources.list
# 將以下內容添加到檔案最后
deb [arch=amd64] https://download.docker.com/linux/ubuntu bionic stable
添加之后的檔案:

4.更新源
# 更新源
sudo apt-get update
更新程序,由于在Ubuntu中設定了aliyun的鏡像,所以加載起來很快,關于鏡像的設定在安裝桌面版的Ubuntu中有過講解,
5.安裝Docker:
如果需要安裝指定版本,可以先查看版本串列,執行如下命令:
sudo apt-cache madison docker-ce
顯示結果如下圖所示:

按照版本要求,本文指定安裝版本號為18.06.3ce3-0~ubuntu的docker-ce,執行如下命令:
sudo apt-get install -y docker-ce=18.06.3~ce~3-0~ubuntu
查看安裝結果,執行命令:
docker -v
如下圖所示,命令正常執行將顯示版本資訊,表示安裝成功,
![]()
如果是想要安裝docker-ce(Docker的社區版)最新版,可以通過如下命令:
# 默認安裝最新版本
sudo apt-get install -y docker-ce
2.2.6 Docker鏡像加速設定
在目錄/etc/docker中創建檔案daemon.json,如果/etc/中沒有docker檔案夾,新建即可,將如下內容寫入該檔案:
{
"registry-mirrors": ["https://rl4uepop.mirror.aliyuncs.com","http://f1361db2.m.daocloud.io","https://hub-mirror.c.163.com","https://xsoeja86.mirror.aliyuncs.com","https://reg-mirror.qiniu.com/","https://hub-mirror.c.163.com/"]
}
如果在虛擬機中新建不了Json檔案,下面是daemon.json的百度網盤鏈接,可以下載之后,傳到虛擬機上,
鏈接:https://pan.baidu.com/s/1rGJhHuzLGQMuyum5uHgUaQ
提取碼:slry
重新加載組態檔并重啟docker,執行如下命令:
sudo systemctl daemon-reload
sudo systemctl restart docker
2.2.7 Docker Compose安裝
Docker Compose是一個用于定義和運行多容器的Docker的應用程式工具,可以高效、輕松的管理Docker容器,另外可以加速下載docker-compose的方法是從國內鏡像上下載,
# 下載
sudo curl -L https://get.daocloud.io/docker/compose/releases/download/1.25.5/docker-compose-`uname -s`-`uname -m` -o /usr/local/bin/docker-compose
# 設定權限
sudo chmod +x /usr/local/bin/docker-compose
# 查看是否安裝成功
docker-compose -v

如下圖所示,命令正常執行將顯示版本資訊,表示安裝成功,
![]()
三、鏡像部署網路、啟動first-network
3.1 下載Fabric原始碼
創建原始碼存放的目錄,本文將原始碼存放在/usr/local/src/hyperleger目錄中,執行以下命令手動創建:
sudo mkdir -p /usr/local/src/hyperleger
進入到該目錄,使用git從github上下載fabric的原始碼,并切換到release-2.0的分支,
cd /usr/local/src/hyperleger
sudo git clone https://github.com/hyperledger/fabric.git
sudo git checkout release-2.0
下載程序:

切換分支:在切換分支時,要先進入到剛才下載的fabric檔案夾下進行切換,否則會報錯誤,

3.2 下載Fabric的docker鏡像
本文將以docker的形式啟動fabric平臺,因此這里需要下載fabric網路各組件的docker鏡像,
Fabric的docker鏡像下載我們這里仍然使用bootstrap.sh腳本實作(如果對docker操作熟悉的同學也可以直接使用docker命令下載),通過腳本引數設定使該腳本只下載Fabric的docker鏡像,執行如下命令:
cd /usr/local/src/hyperleger/fabric/scripts
sudo ./bootstrap.sh 2.0.0 -b -s
下載程序較為漫長:

查看安裝結果,執行命令:
docker images

3.3 下載Fabric示例代碼
Fabric的示例代碼包含:測驗鏈碼、first-network和test-network兩個測驗網路及其對應的組態檔和啟動腳本,非常具有參考意義,本節將啟動first-network網路,
Fabric的示例代碼使用git命令下載,
cd /usr/local/src/hyperleger/fabric/scripts
sudo git clone https://github.com/hyperledger/fabric-samples.git
# 切換版本
sudo git checkout v2.0.0
下載程序:

切換版本:

下載成功后,scripts目錄下將生成一個fabric-samples目錄,如下圖所示:

3.4 下載Fabric部署所需的二進制檔案
本節所需的二進制檔案實際是可以通過編譯fabric原始碼獲得,bootstrap.sh則是直接從github下載壓縮包,無論是編譯還是從github下載,失敗率較高,下面是百度網盤地址,供以下載,
地址:https://pan.baidu.com/s/1pX8Y9p3eBIK6GWi5ISNEZw,提取碼:ba2k
由于本次實驗使用的是桌面版的Ubuntu,并且安裝了VMware Tools,拖拽檔案可以實作本機與虛擬機之間的檔案傳輸,VMware Tools的安裝程序可以查看https://blog.csdn.net/weixin_44750512/article/details/108310906,在拖拽檔案不成功時,是因為沒有足夠的權限,在終端輸入sudo -i 即可,

把下載的檔案解壓到/usr/local/src/hyperleger/fabric/scripts/fabric-samples目錄中,如果此時的權限已經是root則執行命令:
tar -zxvf hyperledger-fabric-linux-amd64-2.0.0.tar.gz -C /usr/local/src/hyperleger/fabric/scripts/fabric-samples/
如果現在還是用戶登錄,則需要在命令前面加sudo:
sudo tar -zxvf hyperledger-fabric-linux-amd64-2.0.0.tar.gz -C /usr/local/src/hyperleger/fabric/scripts/fabric-samples/
否則則會爆出以下錯誤:

獲取root權限之后的運行程序:

解壓成功后fabric-samples目錄將生成bin和config兩個目錄,如下圖所示:

bin目錄中包含7個可執行程式,當fabric網路啟動時將被呼叫,

config目錄包含3個組態檔,用于對fabric網路的配置,

3.5 下載Fabric-ca二進制檔案
本節所需的二進制檔案實際是可以通過編譯fabric原始碼獲得,bootstrap.sh則是直接從github下載壓縮包,無論是編譯還是從github下載,失敗率較高,這里提供百度網盤地址,供以下載,
地址:https://pan.baidu.com/s/1pX8Y9p3eBIK6GWi5ISNEZw,提取碼:ba2k

把下載的檔案解壓到/usr/local/src/hyperleger/fabric/scripts/fabric-samples目錄中,執行命令:

如果執行程序中出現權限不夠的問題,請獲取root權限:方法1.sudo +解壓命令;方法2.命令列輸入sudo -i 獲得root權限再輸入解壓命令,
解壓成功后bin目錄中將增加2個可執行程式,如下圖所示:

將上述bin目錄加入環境變數中:
# 設定環境變數
sudo vim /etc/profile
# 將以下內容追加到檔案末尾
export FABRIC_SAMPLE=/usr/local/src/hyperleger/fabric/scripts/fabric-samples
export PATH=$GOROOT/bin:$FABRIC_SAMPLE/bin:$PATH
# 使環境變數生效
source /etc/profile
添加環境變數:

3.6 啟動first-network網路
1.目錄切換
要啟動first-network網路,首先要到first-network的目錄下,執行如下命令:
cd /usr/local/src/hyperleger/fabric/scripts/fabric-samples/first-network
但是在輸入指令執行時,卻報錯:沒有first-network這一檔案或者是目錄,
去fabric-samples目錄中查看,確實是不存在這一目錄,排查原因可能是在沒有執行切換版本命令,

解決方法:1.切換到fabric-samples目錄下;2.重新執行以下命令,
sudo git checkout v2.0.0
命令執行程序:

此時再去fabric-samples中查看目錄,first-network目錄出現,

2.啟動網路
切換到first-netwoek 目錄下,執行以下命令,啟動網路;
cd /usr/local/src/hyperleger/fabric/scripts/fabric-samples/first-network
sudo ./byfn.sh up
Tips:byfn是build your first network的簡寫,
從腳本執行的日志可以看出,first-network網路由10個容器服務組成,包括:5個排序節點服務,4個peer節點服務和1個cli服務,
容器服務啟動之后,休眠15s構建排序節點服務集群,構建完成之后,開始進行鏈碼打包、安裝、實體化、呼叫測驗,
但是在啟動程序中卻報錯兩處:1.go:未找到命令;2.Error: error getting chaincode bytes: failed to calculate dependencies: incomplete package: github.com/hyperledger/fabric-contract-api-go/contractapi
!!!!!!!!!!!!!!! Chaincode packaging on peer0.org1 has failed !!!!!!!!!!!!!!!!,


3.7 解決辦法
1.出錯代碼
2.切換目錄
cd /usr/local/src/hyperleger/fabric/scripts/fabric-samples/chaincode/abstore/go
3.執行命令
GO111MODULE=on go mod vendor
4.在虛擬機上執行上述指令,會得到以下結果,無法連接到GitHub,

5.面對上述問題使用實驗室的服務器進行下載,會得到一個vendor檔案,將vendor檔案下載之后放到虛擬機的"cd /usr/local/src/hyperleger/fabric/scripts/fabric-samples/chaincode/abstore/go"路徑下,
下面給出vendor的百度網盤地址以及鏈接,不能下載的讀者可以使用此鏈接從我百度網盤中下載:
鏈接:https://pan.baidu.com/s/1QiWuKS7M4Ko6QCCyYHWj4w
提取碼:8vzg
5.1實驗室服務器上的下載程序:

5.2 將Vendor傳輸到虛擬機中,
傳輸之前:

傳輸之后:

6.回傳到first-network目錄下編輯byfn.sh 檔案,將GO111MODULE=on go mod vendor 注釋,
cd usr/local/src/hyperleger/fabric/scripts/fabric-samples/first-network
vim byfn.sh
將 GO111MODULE=on go mod vendor這一行進行注釋,保存修改并退出,

7.輸入 sudo ./byfn.sh up 啟動,但是出現報錯:Error: got unexpected status: BAD_REQUEST -- error applying config update to existing channel 'mychannel': error authorizing update: error validating ReadSet: proposed update requires that key [Group] /Channel/Application/Org1MSP be at version 0, but it is currently at version 1
!!!!!!!!!!!!!!! Channel creation failed !!!!!!!!!!!!!!!!“

8.解決辦法,關閉 first-network .
sudo ./byfn.sh down
9.重新開啟,出現以下'ALL GOOD'表示運行成功,成功之后記得關閉,
sudo ./byfn.sh up


總結
本文按照對Fabric2.0進行學習的教程《Fabric2.0學習進階——搭建環境準備(一)》、《Fabric2.0學習進階——鏡像部署網路(二》進行部署,本篇博文主要是在按照上述教程進行部署程序中遇到的問題以及輸入指令正確的安裝程序進行完善和補充,并且按照上述教程中進行配置的程序中遇到的問題進行詳細的說明,希望對初學Fabric部署以及啟動first-network遇到問題的學習者有所幫助,
轉載請註明出處,本文鏈接:https://www.uj5u.com/houduan/2742.html
標籤:python

