謹以此篇紀錄部署Fabric2.2.0網路環境走的彎路
一.環境準備
系統:Ubuntu18.04.1
1.git,curl,docker,docker-compose
- 設定軟體更新源為阿里雲(軟體和更新)
- sudo apt-get update
- sudo apt-git install git
- sudo apt-git install vim
- sudo apt-get install curl
- 安裝docker
curl -fsSL https://get.docker.com | bash -s docker --mirror Aliyun
- 設定映象加速器
以阿里云為例,找到容器映象服務->映象加速器,選擇系統貼上程式碼即可
cat /etc/docker/daemon.json #檢視加速器
- 安裝docker-compose
sudo curl -L "https://github.com/docker/compose/releases/download/1.23.2/docker-compose-$(uname -s)-$(uname -m)" -o /usr/local/bin/docker-compose
sudo chmod +x /usr/local/bin/docker-compose #新增執行許可權
相關操作
#檢視版本資訊,檢查是否安裝成功
docker version
#把當前使用者新增到docker使用者組
sudo groupadd docker
sudo usermod -aG docker ${USER}
sudo systemctl restart docker
su root 切換root
su ${USER} 再切換回來生效
2.安裝go
下載網址:https://studygolang.com/dl
下載最新linux版本的go安裝包到本地
解壓到/usr/local資料夾下
tar -zxvf go1.15.linux-amd64.tar.gz /usr/local
設定環境變數(系統變數: /etc/profile ;使用者變數: ~/.bashrc)
vi /etc/profile
新增
export GOPATH=$HOME/go
export GOROOT=/usr/local/go
export PATH=$GOROOT/bin:$PATH
使配置生效
source /etc/profile
檢視go資訊
go version
go env
到此基礎環境已經搭建好了,接下來就是正式Fabric安裝了
二.Fabric相關下載安裝
建立目錄並進入
make -p $GOPATH/src/github.com/hyperledger/
cp $GOPATH/src/github.com/hyperledger
拉取fabric,fabric-ca,fabric-samples映象
git clone https://github.com/hyperledger/fabric.git
git clone https://github.com/hyperledger/fabric-ca.git
#進入到fabric檔案下,下載fabric-samples映象
cd fabric
git checkout -b v2.2.0 #切換到2.2.0,,預設為master分支
git branch #檢視當前分支
git clone https://github.com/hyperledger/fabric-samples.git
cd fabric-samples
git checkout -b v2.2.0
git branch
到此映象檔案準備完成,接下來就是要編譯生成二進位制檔案了
分析:進入到fabric/script資料夾下,修改bootstrap.sh檔案,注:直接編譯執行太慢了,還極其容易出錯,這步耗費了我大量的時間,關鍵還沒搭成功,o(╥﹏╥)o,所以不建議使用官網推薦的方法
檢視bootstrap.sh檔案發現該檔案主要完成三件事:
if [ "$SAMPLES" == "true" ]; then
echo
echo "Clone hyperledger/fabric-samples repo"
echo
cloneSamplesRepo
fi
if [ "$BINARIES" == "true" ]; then
echo
echo "Pull Hyperledger Fabric binaries"
echo
# pullBinaries//註釋掉
fi
if [ "$DOCKER" == "true" ]; then
echo
echo "Pull Hyperledger Fabric docker images"
echo
pullDockerImages
fi
具體操作
採用把拉取二進位制的程式碼註釋掉,從官網下載到本地:下載地址
vi bootstrap.sh
#註釋掉下載二進位制的程式碼
#儲存退出
./bootstrap.sh #主要下載docker映象
然後哦把下載好的檔案(hyperledger-fabric-linux-amd64-2.2.0.tar.gz和hyperledger-fabric-ca-linux-amd64-1.4.7.tar.gz)解壓,得到bin和config.
tar -zxvf hyperledger-fabric-linux-amd64-2.2.0.tar.gz
tar -zxvf hyperledger-fabric-ca-linux-amd64-1.4.7.tar.gz
ls
bin目錄裡,包含
config目錄包含
把bin和config目錄複製到fabric/fabric-samples/目錄下
cp -r bin $GOPATH/src/github.com/hyperledger/fabric/fabric-samples/
cp -r config $GOPATH/src/github.com/hyperledger/fabric/fabric-samples/
把bin和config加入到環境變數中,以便我們可以全域性訪問
vim /etc/profile
#新增
export PATH=$PATH:$GOPATH/src/github.com/hyperledger/fabric/fabric-samples/bin
export PATH=$PATH:$GOPATH/src/github.com/hyperledger/fabric/fabric-samples/config
好了,環境準備完畢,可以測試網路了
三.測試網路
進入到test-network 中,
啟動網路
cd test-network/
./network.sh up
- 測試網路有兩個組織成員,Org1和Org2, 還包括一個維護網路排序服務的排序組織。
- 每個組織各自運營一個對等節點, peer0.org1.example.com和peer0.org2.example.com.
- 每個Fabric網路還包括一個排序服務,該示例網路使用一個單節點Raft排序服務,該服務由排序組織執行。 可以看到在機器上正在執行的排序節點orderer.example.com。
- 雖然測試網路僅使用單節點排序服務,一個真實的網路將有多個排序節點,由一個或多個多個排序者組織操作。 不同的排序節點將使用Raft共識演算法達成跨交易順序的共識網路。
建立通道
./network.sh createChannel
通道加入成功後,出現
實際上,以上操作可以用一條命令實現
./network.sh up createChannel
在通道上部署鏈碼
使用network.sh建立通道後,可以使用以下命令在通道上啟動鏈碼:
./network.sh deployCC
該命令將在peer0.org1.example.com和peer0.org2.example.com上安裝fabcar鏈碼。預設情況下,指令碼安裝Go版本的fabcar鏈碼。
出現結果
與網路進行互動
啟用測試網路後,可以使用peer CLI與網路進行互動。
peer CLI允許呼叫已部署的智慧合約,更新通道,或安裝和部署新的智慧合約 (可以在fabric-samples程式碼庫的bin資料夾中找到peer二進位制檔案).
**確保以下操作是在test-network目錄下**
使用以下命令將二進位制檔案新增到你的CLI路徑:
export PATH=${PWD}/../bin:$PATH
還需要將fabric-samples程式碼庫中的FABRIC_CFG_PATH設定為指向其中的core.yaml檔案:
export FABRIC_CFG_PATH=$PWD/../config/
現在,設定環境變數,以允許你作為Org1操作peer 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
其中,CORE_PEER_TLS_ROOTCERT_FILE和CORE_PEER_MSPCONFIGPATH環境變數指向Org1的organizations資料夾中的的加密材料。
好了,現在我們可以從CLI查詢賬本了。
在此之前,我們先需要確保啟動fabcar
cd ../fabcar/
ls
./startFabric.sh
啟動結果
再執行以下命令以獲取已新增到通道賬本中的汽車列表:
peer chaincode query -C mychannel -n fabcar -c '{"Args":["queryAllCars"]}'
結果
當網路成員要轉移或更改帳上的資產時,將呼叫鏈碼。
使用以下命令呼叫fabcar鏈碼來更改賬本上汽車的所有者:
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 fabcar --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":"changeCarOwner","Args":["CAR9","Dave"]}'
呼叫成功,看到如下結果
由於我們已經查詢過Org1peer節點,我們可以藉此機會查詢在Org2上執行鏈碼的peer節點。
同理,設定以下環境變數以作為Org2進行操作:
# Environment variables for Org2
export CORE_PEER_TLS_ENABLED=true
export CORE_PEER_LOCALMSPID="Org2MSP"
export CORE_PEER_TLS_ROOTCERT_FILE=${PWD}/organizations/peerOrganizations/org2.example.com/peers/peer0.org2.example.com/tls/ca.crt
export CORE_PEER_MSPCONFIGPATH=${PWD}/organizations/peerOrganizations/org2.example.com/users/Admin@org2.example.com/msp
export CORE_PEER_ADDRESS=localhost:9051
查詢執行在peer0.org2.example.com的fabcar鏈碼:
peer chaincode query -C mychannel -n fabcar -c '{"Args":["queryCar","CAR9"]}'
結果將顯示"CAR9"已轉移到Dave:
{"make":"Holden","model":"Barina","colour":"brown","owner":"Dave"}
關閉網路
./network.sh down
該命令將停止並刪除節點和鏈碼容器,刪除組織加密材料,並從Docker Registry移除鏈碼映象。還會刪除之前執行的通道專案和docker卷。
使用證照頒發機構啟動網路
./network.sh down
./network.sh up -ca
docker ps
看到指令碼啟動了三個CA,每個網路中的組織一個。
期間出現錯誤
說明fabcar沒有啟動,去啟動就好了!
指定用Java安裝部署fabcar出現錯誤
Error: error getting chaincode bytes: failed to create chaincode package: lstat …/asset-transfer-basic/chaincode-java/build/install/basic: no such file or directory
Chaincode packaging on peer0.org1 has failed
Deploying chaincode failed
參考博文:https://blog.csdn.net/i_want_study/article/details/105883966
說是沒有安裝java執行環境jdk,用他的方法安裝jdk沒有解決
自己安裝配置jdk也沒有解決
emm,暫時這樣吧
相關文章
- 避免學習Linux走彎路Linux
- 如何在網際網路創業、五年經驗、少走彎路創業
- openEuler網路配置+換源+桌面環境ukui等基本環境部署UI
- Java學習如何少走彎路?Java
- 起碼得先活下來!網際網路創業少走彎路的3個忠告創業
- Spring Boot 整合多點套路,少走點彎路~Spring Boot
- 如何自學程式設計?如何少走彎路?程式設計
- 你走過最長的路 ,就是機器學習過程中的彎路機器學習
- 成長的腳步,看了也許少走很多彎路!
- 開發者如何走的彎路:Into the Breach設計覆盤
- Django走過的一些彎路-專案結構Django
- 上雲、微服務化和DevOps,少走彎路的辦法微服務dev
- springboot kafka 帶許可權的配置,讓你少走彎路Spring BootKafka
- 少走些彎路---學習Linux的竅門與經驗Linux
- 少走些彎路-學習Linux的竅門與經驗Linux
- 看完這篇晦澀長文,你們這個瘋狂燒錢的美術環節能少走5年彎路!
- 烽火十八臺丨這麼多年過去了,部分高校網路資產安全治理還在走彎路?
- 【智慧工廠】智慧工廠建設如何少走彎路?
- 差點把自己測死的《戰意》 走過了哪些彎路
- 如何有效的治理殭屍網路以此來避免遭遇DDOS?
- TLSv 1.3 網路安全標準通過 帶來更安全的網路環境TLS
- 想轉行DevOps工程師?快來看看DevOps工程師的學習路徑,少走彎路dev工程師
- Android Q 適配指南 讓你少走一堆彎路Android
- 《魔獸大作戰》開發者:我們走過哪些彎路?
- 學姐分享:在求職路上少走一些彎路求職
- 新手程式設計師須知30個技巧!少走彎路程式設計師
- 在靜態網路環境中快速修改網路配置資訊的解決方案
- 謹以此文,向飛天獎的AI整活影片「致敬」AI
- WDS+MDT網路啟動自動部署windows(一)實驗環境介紹Windows
- 在CentOS 7中上部署fabric v2.2.0環境和測試網路CentOS
- openstack 部署(Q版)—–環境準備篇
- 網際網路券商走紅的生意經
- 學會這7種SQL進階用法,讓你少走99%的彎路!SQL
- 北京0基礎學習Java培訓讓你不走彎路Java
- 資料科學難在實踐,有哪些彎路可以不走?資料科學
- Python學習方法(學python之前一定要看,少走彎路)Python
- fabric網路環境啟動過程詳解
- NfS網路共享檔案系統環境搭建NFS