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"