CnetOS 7.4 部署 Hyperledger Fabric 1.4

VMware 安裝 CentOS 7.4 請參考 https://blog.csdn.net/qq_39135287/article/details/83993574 前兩部分即可,其中第二部分步驟20可省略

1. 關閉CentOS防火牆

systemctl stop firewalld && systemctl disable firewalld

2. 安裝環境

  • curl、git、Python系統自帶,無需安裝

  • Docker安裝,官方示例 https://docs.docker.com/install/linux/docker-ce/centos/

    yum install -y yum-utils device-mapper-persistent-data lvm2
    
    yum-config-manager --add-repo http://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo
    
    yum makecache fast
    
    yum -y install docker-ce
    
    mkdir -p  /etc/docker/
    
    echo -e '{\n  "data-root":"/home/docker",\n  "registry-mirrors": ["https://1e7waog4.mirror.aliyuncs.com"]\n}' > /etc/docker/daemon.json
    
    systemctl start docker && systemctl enable docker
    
    # 驗證版本
    docker --version
    
  • Docker-Compose安裝,官方示例 https://github.com/docker/compose/releases

    sudo curl -L https://github.com/docker/compose/releases/download/1.25.0/docker-compose-$(uname -s)-$(uname -m) -o /usr/local/bin/docker-compose
    
    sudo chmod +x /usr/local/bin/docker-compose
    
    # 驗證版本
    docker-compose --version
    
  • GO語言安裝,資源路徑 https://golang.google.cn/dl/

    wget https://studygolang.com/dl/golang/go1.11.13.linux-amd64.tar.gz -O /opt/go1.11.13.linux-amd64.tar.gz
    
    cd /opt/
    
    tar -zxvf go1.11.13.linux-amd64.tar.gz
    
    rm -rf /opt/go1.11.13.linux-amd64.tar.gz
    
    mkdir /opt/gopath
    
    echo -e 'export GOROOT=/opt/go \n export GOBIN=$GOROOT/bin \n export PATH=$PATH:$GOBIN \n export GOPATH=/opt/gopath' >> /etc/profile
    
    source /etc/profile
    
    # 驗證版本
    go version
    
  • Node.js安裝

    wget https://npm.taobao.org/mirrors/node/v8.9.4/node-v8.9.4-linux-x64.tar.xz -O /opt/node-v8.9.4-linux-x64.tar.xz
    
    cd /opt/
    
    tar -xvf node-v8.9.4-linux-x64.tar.xz
    
    rm -rf /opt/node-v8.9.4-linux-x64.tar.xz
    
    ln -s /opt/node-v8.9.4-linux-x64/bin/npm /usr/local/bin/npm
    
    ln -s /opt/node-v8.9.4-linux-x64/bin/node /usr/local/bin/node
    
    # 驗證版本
    node -v
    

3. 安裝Fabric

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

cd $GOPATH/src/github.com/hyperledger

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

cd fabric

git checkout v1.4.0

echo 'export PATH=$GOPATH/src/github.com/hyperledger/fabric/scripts/fabric-samples/bin:$PATH' >> /etc/profile

source /etc/profile

cd scripts

./bootstrap.sh

4. 構建及管理Fabric網絡

官方示例:https://hyperledgercn.github.io/hyperledgerDocs/build_network_zh/

  • 運行fabric
    cd $GOPATH/src/github.com/hyperledger/fabric/scripts/fabric-samples/first-network
    
    ./byfn.sh generate
    
    ./byfn.sh up
    
  • 查看到節點啓動情況
    docker ps
    
  • 停止網絡
    ./byfn.sh down
    

至此Fabric已在CentOS部署完畢


部署ChainCode

  • 在下方目錄內新建文件夾chaincode_test,並將編寫好的ChainCode放在其中(重點)
    # 網上很多示例說是把 chaincode 放在
    # 	/opt/gopath/src/github.com/hyperledger/fabric/examples/chaincode 裏面
    # 但是我試了很多次都不行
    # 後來看了第4步 ./byfn.sh up 時打印的信息
    # 	peer chaincode install -n mycc -v 1.0 -l golang -p github.com/chaincode/chaincode_example02/go/
    # 發現如果路徑不是 github.com/chaincode/... 就會報錯
    
    /opt/gopath/src/github.com/hyperledger/fabric/scripts/fabric/fabric-samples/chaincode
    
  • 切換節點
    docker exec -it cli bash
    
    CORE_PEER_LOCALMSPID="Org1MSP" 
    CORE_PEER_TLS_ROOTCERT_FILE=/opt/gopath/src/github.com/hyperledger/fabric/peer/crypto/peerOrganizations/org1.example.com/peers/peer0.org1.example.com/tls/ca.crt 
    CORE_PEER_MSPCONFIGPATH=/opt/gopath/src/github.com/hyperledger/fabric/peer/crypto/peerOrganizations/org1.example.com/users/[email protected]/msp 
    CORE_PEER_ADDRESS=peer0.org1.example.com:7051
    
  • 安裝ChainCode,可參照第4步 ./byfn.sh up 時的打印信息
    peer chaincode install -n testcc -v 1.0 -l golang -p github.com/chaincode/chaincode_test
    
  • 實例化ChainCode,可參照第4步 ./byfn.sh up 時的打印信息
    peer chaincode instantiate -o orderer.example.com:7050 --tls true --cafile /opt/gopath/src/github.com/hyperledger/fabric/peer/crypto/ordererOrganizations/example.com/orderers/orderer.example.com/msp/tlscacerts/tlsca.example.com-cert.pem -C mychannel -n testcc -l golang -v 1.0 -c '{"Args":[""]}' -P "OR ('Org1MSP.member','Org2MSP.member')"
    
  • 切換至節點org2,再次安裝ChainCode,此次無需實例化
    CORE_PEER_LOCALMSPID="Org2MSP" 
    CORE_PEER_TLS_ROOTCERT_FILE=/opt/gopath/src/github.com/hyperledger/fabric/peer/crypto/peerOrganizations/org2.example.com/peers/peer0.org2.example.com/tls/ca.crt 
    CORE_PEER_MSPCONFIGPATH=/opt/gopath/src/github.com/hyperledger/fabric/peer/crypto/peerOrganizations/org2.example.com/users/[email protected]/msp 
    CORE_PEER_ADDRESS=peer0.org2.example.com:7051
    
  • 可根據ChainCode執行query和invoke

安裝區塊鏈瀏覽器可參照上篇文章

  • 直接安裝jq會報錯,需按以下步驟操作
    yum install epel-release
    
    yum install jq
    
  • 構建Hyperledger Explorer ./main.sh install 報錯
    gyp WARN EACCES user "root" does not have permission to access the dev dir "/opt/gopath/src/github.com/hyperledger/blockchain-explorer/node_modules/pkcs11js/.node-gyp/8.9.4"
    gyp WARN EACCES attempting to reinstall using temporary dev dir "/opt/gopath/src/github.com/hyperledger/blockchain-explorer/node_modules/pkcs11js/.node-gyp"
    
    # 修改 main.sh 文件
    # 在所有 npm install $VERBOSE 後面添加 --unsafe-perm 跳過權限驗證
    # function do_install () {
    #		...
    #		npm install $VERBOSE --unsafe-perm=true --allow-root
    # }	
    
  • Hyperledger Explorer ./start.sh 報錯
    # error 信息
    ['Default client peer is down and no channel details available database']
    
    # 解決方案
    # 修改 blockchain-explorer/app/platform/fabric/connection-profile/first-network.json
    # true 改爲 false
    "tlsEnable" : false
    # grpcs 改爲 grpc
    "url" : "grpc://localhost:7051",
    "eventUrl" : "grpc://localhost:7053"
    
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章