謹以此篇紀錄部署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
- Java學習如何少走彎路?Java
- 大型紀錄片《網際網路時代》
- 你走過最長的路 ,就是機器學習過程中的彎路機器學習
- 開發者如何走的彎路:Into the Breach設計覆盤
- 起碼得先活下來!網際網路創業少走彎路的3個忠告創業
- 如何自學程式設計?如何少走彎路?程式設計
- 配置oracle網路環境Oracle
- 關於學習過程中走過的彎路
- 在spring,mybatis整合配置中走的彎路(1)SpringMyBatis
- 《魔獸大作戰》開發者:我們走過哪些彎路?
- Java學習之路:不走彎路,就是捷徑Java
- centos7下部署iptables環境紀錄(關閉預設的firewalle)CentOS
- Django走過的一些彎路-專案結構Django
- Android 能讓你少走彎路的乾貨整理Android
- openEuler網路配置+換源+桌面環境ukui等基本環境部署UI
- 學姐分享:在求職路上少走一些彎路求職
- Spring Boot 整合多點套路,少走點彎路~Spring Boot
- Java學習之路:不走彎路,就是捷徑(轉)Java
- 烽火十八臺丨這麼多年過去了,部分高校網路資產安全治理還在走彎路?
- RAC環境網路故障測試
- 【智慧工廠】智慧工廠建設如何少走彎路?
- 17世紀的社交網路
- 少走些彎路-學習Linux的竅門與經驗Linux
- 少走些彎路---學習Linux的竅門與經驗Linux
- 上雲、微服務化和DevOps,少走彎路的辦法微服務dev
- 讓年輕程式設計師少走彎路的14個忠告程式設計師
- 網際網路環境下服務提供的模式模式
- 【NTP】Redhat5.1環境下網路時間服務NTP的安裝部署Redhat
- 新手程式設計師須知30個技巧!少走彎路程式設計師
- 創業維艱,技術人創業如何少走彎路?創業
- 新學java還望banq老師指點少走彎路?Java
- springboot kafka 帶許可權的配置,讓你少走彎路Spring BootKafka
- 全球網際網路產業研究之美國遊戲市場——遊戲市場環境篇產業遊戲
- 網際網路舉報中心:“雙11”謹防三種網路詐騙
- TLSv 1.3 網路安全標準通過 帶來更安全的網路環境TLS
- 在靜態網路環境中快速修改網路配置資訊的解決方案