在CentOS 7中上部署fabric v2.2.0環境和測試網路

wytljs發表於2020-11-03

一、基本元件安裝

1.docker安裝

2.docker-compose安裝

3.go語言和git安裝

二、fabric v2.2.0環境搭建和部署

1.拉取原始碼

2.環境搭建

三、測試網路

my系統版本:CentOS 7,VMware 15.5

最近在研究區塊鏈相關知識,我是小白,哦不大白,也不太懂,就在網上看了一大堆的教程,一個月前fabric裝的1.2版本,這個版本很舊了,雖然大部分部署好了,但還是會有錯誤,有些自己也沒解決掉,還不好意思總問老師(因為問了我也聽不太懂他說的解決辦法hhh)為了跟組裡的人保持一致,這樣下次遇到錯誤也能一起交流,我就重新建了一個虛擬機器,裝的2.2版本的(我這個菜雞部署1.2版本的建了三個虛擬機器,2.2版本又建了一個,唉太丟人了,推薦大家可以用用虛擬機器的快照功能,快照一下這樣第二天如果把虛擬機器玩壞了還能恢復到以前的樣子)這樣先把基本工作做好,那就是必要的軟體安裝,然後進行部署,廢話說了一堆,下面進入正題haha。

首先安裝VMware workstation,我裝的是15.5版本,然後下載CentOS 7映象,我是用百度網盤下的,下了一天。。。速度比較慢哈。然後就可以進行我們的正式工作啦~

看了很多大佬們的部落格,大概總結一下,怕自己忘掉,好記性不如爛筆頭!!!
如有侵權,請聯絡我,我馬上修改。。

一、基本元件安裝

1.docker安裝
如果下載過docker,需要先解除安裝掉舊版本,執行下條語句,沒下載過docker的請忽略此條

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

(1)更新yum

yum update

在這裡插入圖片描述
在這裡插入圖片描述
在這裡插入圖片描述
在這裡插入圖片描述

(2)yum源配置

yum install -y wget
cd /etc/yum.repos.d
mv CentOS-Base.repo CentOS-Base.repo.bak
wget -O /etc/yum.repos.d/CentOS-Base.repo http://mirrors.163.com/.help/CentOS7-Base-163.repo
yum makecache

(3)其他軟體下載

yum install -y curl vim gcc gcc-c++
yum install -y yum-utils device-mapper-persistent-data lvm2

(4)增加docker yum 源

yum-config-manager --add-repo http://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo

(5)下載docker並檢視版本

yum list docker-ce --showduplicates | sort -r
yum install -y docker-ce
docker --version
docker version

在這裡插入圖片描述
在這裡插入圖片描述

(6)設定docker開機啟動

systemctl start docker
systemctl enable docker
systemctl list-unit-files --all --type=service | grep docker

在這裡插入圖片描述

(7)設定docker images映象源
首先進入阿里雲官方網站:https://www.aliyun.com/
登陸自己的賬號,在搜尋框輸入容器映象服務後回車
![在這裡插入圖片描述](https://img-blog.csdnimg.cn/20201103225318245.png#pic_center
點進左下角的映象加速器
在這裡插入圖片描述
按照它提示的操作進行即可,操作文件選擇CentOS
在這裡插入圖片描述
2.docker-compose安裝

yum install -y epel-release
yum makecache
yum install -y docker-compose
docker-compose version

在這裡插入圖片描述
在這裡插入圖片描述
在這裡插入圖片描述

3.go語言安裝
我裝的是1.14.10版本,推薦安裝1.13+,不然後期可能因為版本問題執行某些命令出錯

yum install -y git
cd /opt
mkdir golang
cd golang
wget https://studygolang.com/dl/golang/go1.14.10.linux-amd64.tar.gz
tar -zxvf go1.14.10.linux-amd64.tar.gz

在這裡插入圖片描述

在/etc/profile檔案下增加環境變數

vim /etc/profile

#追加gradle環境變數

export GRADLE_HOME=/home/gradle/gradle-6.5.1
export GRADLE_USER_HOME=/home/gradle/gradle_user_home
export PATH=$PATH:$GRADLE_HOME/bin

#追加golang環境變數

export GOPATH=/opt/gopath
export GOROOT=/opt/golang/go
export PATH=$GOROOT/bin:$PATH
export FABRIC=$GOPATH/src/github.com/hyperledger/fabric

檢視版本

source /etc/profile
go version
go env

二、fabric v2.2.0環境搭建和部署

1.拉取原始碼

mkdir -p ~/go/src/github.com/hyperledger
cd ~/go/src/github.com/hyperledger
git clone https://github.com/hyperledger/fabric.git

如果上述github地址下載太慢,可以嘗試下面碼雲上這個地址

git clone https://gitee.com/luxiaojun0605/fabric.git

我用的是碼雲地址
在這裡插入圖片描述

2.環境搭建
下載完成後會得到一個fabric資料夾,進入fabric/scripts目錄可以看到一個bootstrap.sh指令碼,直接執行bootstrap.sh指令碼,就會自動進行fabric相關檔案和映象的下載,因涉及到github上面下載包,所以此過程比較長,我下載了一個小時。。。
進入fabric/scripts資料夾

cd fabric/scripts

執行指令碼進行相關檔案和映象的下載

./bootstrap.sh

此過程比較慢哈,我下載了一個小時,不要著急,這個時候你可以小憩一下,吃點東西。
在這裡插入圖片描述
在這裡插入圖片描述

下載的fabric-samples會在scripts資料夾下,我們們把他放到上一級目錄方便操作

mv fabric-samples ../

/root/go/src/github.com/hyperledger/fabric/fabric-samples

三、測試網路
這裡推薦官方的英文文件,每一步也比較詳細了
連結: https://hyperledger-fabric.readthedocs.io/en/latest/test_network.html.

使用以下命令導航到測試網路目錄:

cd fabric-samples/test-network

在此目錄中,可以找到帶註釋的指令碼, network.sh該指令碼使用本地計算機上的Docker映像站立在Fabric網路上。
test-network目錄內部,執行以下命令以從以前的所有執行中刪除任何容器或工件:

./network.sh down

在這裡插入圖片描述

然後,可以通過發出以下命令來啟動網路

./network.sh up

如果命令成功完成,將看到正在建立的節點的日誌:
在這裡插入圖片描述
部署測試網路後,可能需要一些時間來檢查其元件。執行以下命令以列出計算機上執行的所有Docker容器。應該看到該network.sh指令碼建立的三個節點:

docker ps -a

在這裡插入圖片描述
可以使用network.sh指令碼在Org1和Org2之間建立頻道,並將其對等方加入該頻道。執行以下命令以使用預設名稱建立頻道mychannel:

./network.sh createChannel

如果命令成功執行,則可以在日誌中看到以下訊息:
========= Channel successfully joined ===========

使用network.sh建立頻道後,可以使用以下命令在頻道上啟動鏈碼:

./network.sh deployCC

啟用測試網路後,可以使用peerCLI與網路進行互動。peerCLI允許您從CLI呼叫已部署的智慧合約,更新通道或安裝和部署新的智慧合約。

確保正在從test-network目錄進行操作。使用以下命令將這些二進位制檔案新增到您的CLI路徑:

export PATH=${PWD}/../bin:$PATH

您還需要將設定FABRIC_CFG_PATH為指向儲存庫中的core.yaml檔案fabric-samples:

export FABRIC_CFG_PATH=$PWD/../config/

設定環境變數,以允許您以peer Org1的形式操作CLI:

# Environment variables for Org1

export CORE_PEER_TLS_ENABLED=true
export CORE_PEER_LOCALMSPID="Org1MSP"
export CORE_PEER_TLS_ROOTCERT_FILE=${PWD}/organizations/peerOrganizations/org1.example.com/peers/peer0.org1.example.com/tls/ca.crt
export CORE_PEER_MSPCONFIGPATH=${PWD}/organizations/peerOrganizations/org1.example.com/users/Admin@org1.example.com/msp
export CORE_PEER_ADDRESS=localhost:7051

如果您用於安裝和啟動資產轉移(基本)鏈碼,則可以呼叫(Go)鏈碼的功能以在分類帳上放置資產的初始列表。

peer chaincode invoke -o localhost:7050 --ordererTLSHostnameOverride orderer.example.com --tls --cafile ${PWD}/organizations/ordererOrganizations/example.com/orderers/orderer.example.com/msp/tlscacerts/tlsca.example.com-cert.pem -C mychannel -n basic --peerAddresses localhost:7051 --tlsRootCertFiles ${PWD}/organizations/peerOrganizations/org1.example.com/peers/peer0.org1.example.com/tls/ca.crt --peerAddresses localhost:9051 --tlsRootCertFiles ${PWD}/organizations/peerOrganizations/org2.example.com/peers/peer0.org2.example.com/tls/ca.crt -c '{"function":"InitLedger","Args":[]}'

如果成功,應該看到類似以下的輸出:

-> INFO 001 Chaincode invoke successful. result: status:200

現在,可以從CLI查詢分類帳。執行以下命令以獲取已新增到渠道分類帳的資產列表:

peer chaincode query -C mychannel -n basic -c '{"Args":["GetAllAssets"]}'

如果成功,應該看到以下輸出:
在這裡插入圖片描述
當網路成員要轉移或更改分類帳上的資產時,將呼叫鏈碼。使用以下命令通過呼叫資產轉移(基本)鏈碼來更改分類帳上資產的所有者:

peer chaincode invoke -o localhost:7050 --ordererTLSHostnameOverride orderer.example.com --tls --cafile ${PWD}/organizations/ordererOrganizations/example.com/orderers/orderer.example.com/msp/tlscacerts/tlsca.example.com-cert.pem -C mychannel -n basic --peerAddresses localhost:7051 --tlsRootCertFiles ${PWD}/organizations/peerOrganizations/org1.example.com/peers/peer0.org1.example.com/tls/ca.crt --peerAddresses localhost:9051 --tlsRootCertFiles ${PWD}/organizations/peerOrganizations/org2.example.com/peers/peer0.org2.example.com/tls/ca.crt -c '{"function":"TransferAsset","Args":["asset6","Christopher"]}'

如果命令成功,應該看到以下響應:

2019-12-04 17:38:21.048 EST [chaincodeCmd] chaincodeInvokeOrQuery -> INFO 001 Chaincode invoke successful. result: status:200

使用完測試網路後,可以使用以下命令關閉網路:

./network.sh down

該命令將停止並刪除節點和鏈碼容器,刪除組織加密材料,並從Docker登錄檔中移除鏈碼映像。該命令還會從以前的執行中刪除通道工件和docker卷,從而在遇到任何問題時允許您再次執行。

如有錯誤,還請指正,互相學習!!!

相關文章