Hyperledger e2e_cli 示例部署遇到问题及解决方法

版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/wxb880114/article/details/79378656
先决条件


安装方法
vim bootstrap.sh
chmod +x bootstrap.sh
将 url中的拷入 bootstrap.sh中
然后执行


node安装
注意node版本


tar -zvxf node-v6.9.5-linux-x64.tar.gz
86 mv node-v6.9.5-linux-x64/ /usr/local/Cellar/node

GO安装
yum install golang
find / -name golang
设置路径
/usr/lib/golang
手动安装golang
export GOROOT=/usr/local/ golang //这个是你的 golang解压后的路径
export GOBIN=$GOROOT/bin
export GOPATH=$GOROOT
//这个目录后面自己会创建出来,不要忘了在该目录下建立bin, src, pkg三个目录
export PATH=$PATH:$GOBIN
export GOROOT= /usr/lib/golang
export GOPATH=/usr/lib/golang



[root@iz2zeivrkckulq2dtidztmz fabric]# make docker
mkdir -p build/image/peer/payload
cp build/docker/bin/peer build/sampleconfig.tar.bz2 build/image/peer/payload
mkdir -p build/image/ccenv/payload
cp build/docker/gotools/bin/protoc-gen-go build/bin/chaintool build/goshim.tar.bz2 build/image/ccenv/payload
cp: cannot stat ‘build/docker/gotools/bin/protoc-gen-go’: No such file or directory
make: *** [build/image/ccenv/payload] Error 1
[root@iz2zeivrkckulq2dtidztmz fabric]# cd /usr/lib/golang/
api/ bin/ favicon.ico lib/ pkg/ robots.txt src/ test/ VERSION
[root@iz2zeivrkckulq2dtidztmz fabric]# cd /usr/lib/golang/bin/go


mkdir -p build/image/peer/payload
cp build/docker/bin/peer build/sampleconfig.tar.bz2 build/image/peer/payload
mkdir -p build/image/ccenv/payload
cp build/docker/gotools/bin/protoc-gen-go build/bin/chaintool build/goshim.tar.bz2 build/image/ccenv/payload
Building docker ccenv-image
docker build -t hyperledger/fabric-ccenv build/image/ccenv
Sending build context to Docker daemon 19.49MB
Step 1/5 : FROM hyperledger/fabric-baseimage:x86_64-0.3.1
---> 9f2e9ec7c527
Step 2/5 : COPY payload/chaintool payload/protoc-gen-go /usr/local/bin/
---> 41dea3a0fcbd
Step 3/5 : ADD payload/goshim.tar.bz2 $GOPATH/src/
---> 97834de49ef6
Step 4/5 : RUN mkdir -p /chaincode/input /chaincode/output
---> Running in b1fa11f78fed
Removing intermediate container b1fa11f78fed
---> 506ce0a82af4
Step 5/5 : LABEL org.hyperledger.fabric.version=1.0.0 org.hyperledger.fabric.base.version=0.3.1
---> Running in 229c44fbd9df
Removing intermediate container 229c44fbd9df
---> 9be913467b7e
Successfully built 9be913467b7e
Successfully tagged hyperledger/fabric-ccenv:latest
docker tag hyperledger/fabric-ccenv hyperledger/fabric-ccenv:x86_64-1.0.0
Creating build/javashim.tar.bz2
tar (child): bzip2:无法 exec: 没有那个文件或目录
tar (child): Error is not recoverable: exiting now
make: *** [build/javashim.tar.bz2] 错误 141
[root@iz2zeivrkckulq2dtidztmz fabric]#

缺少bzip2包
yum install -y bzip2

/bin/sh: 1: core/chaincode/shim/java/javabuild.sh: not found
The command '/bin/sh -c core/chaincode/shim/java/javabuild.sh' returned a non-zero code: 127
make: *** [build/image/javaenv/.dummy-x86_64-1.0.0] 错误 127

错误:
执行make docker遇到:core/chaincode/shim/java/javabuild.sh: line 51: gradle: command not found

解决办法:删除openjdk
安装:oracle jdk1.8
手动gradle,注释掉core/chaincode/shim/java/javabuild.sh里面的gradle命令

启动 ./network_setup.sh up
错误:2017-09-12 14:17:49.952 UTC [grpc] Printf -> DEBU 003 grpc: addrConn.resetTransport failed to create client transport: connection error: desc = "transport: Error while dialing dial tcp 211.139.178.49:7050: i/o timeout"; Reconnecting to {orderer.example.com:7050 <nil>}
!!!!!!!!!!!!!!! Channel creation failed !!!!!!!!!!!!!!!!
================== ERROR !!! FAILED to execute End-2-End Scenario ==================
解决办法:
修改宿主机hosts /etc/hosts , 在实际环境中,建议通过配置 DNS 而不是修改 /etc/hosts 文件
127.0.0.1 orderer.example.com

修改 base/peer-base.yaml,添加 volumes:
volumes:
-/etc/hosts:/etc/hosts


CORE_PEER_ADDRESS=peer0.org1.example.com:7051
2018-02-03 01:37:24.238 UTC [msp] GetLocalMSP -> DEBU 001 Returning existing local MSP
2018-02-03 01:37:24.238 UTC [msp] GetDefaultSigningIdentity -> DEBU 002 Obtaining default signing identity
2018-02-03 01:37:24.241 UTC [grpc] Printf -> DEBU 003 Failed to dial orderer.example.com:7050: connection error: desc = "transport: authentication handshake failed: x509: certificate signed by unknown authority (possibly because of \"x509: ECDSA verification failure\" while trying to verify candidate authority certificate \"tlsca.example.com\")"; please retry.
Error: Error connecting due to rpc error: code = Internal desc = connection error: desc = "transport: authentication handshake failed: x509: certificate signed by unknown authority (possibly because of \"x509: ECDSA verification failure\" while trying to verify candidate authority certificate \"tlsca.example.com\")"
Usage:
peer channel create [flags]

Flags:
-c, --channelID string In case of a newChain command, the channel ID to create.
-f, --file string Configuration transaction file generated by a tool such as configtxgen for submitting to orderer
-t, --timeout int Channel creation timeout (default 5)

Global Flags:
--cafile string Path to file containing PEM-encoded trusted certificate(s) for the ordering endpoint
--logging-level string Default logging level and overrides, see core.yaml for full syntax
-o, --orderer string Ordering service endpoint
--test.coverprofile string Done (default "coverage.cov")
--tls Use TLS when communicating with the orderer endpoint
-v, --version Display current version of fabric peer server

!!!!!!!!!!!!!!! Channel creation failed !!!!!!!!!!!!!!!!
================== ERROR !!! FAILED to execute End-2-End Scenario ==================

解决方法:
peer channel create -o orderer.example.com:7050 -c $CHANNEL_NAME -f ./channel artifacts/channel.tx --tls $CORE_PEER_TLS_ENABLED --cafile /opt/gopath/src/github.com/hyperledger/fabric/peer/crypto/ordererOrganizations/example.com/orderers/orderer.example.com/msp/tlscacerts/tlsca.example.com-cert.pem


错误:不能生成创世块
解决办法:
root@ubuntu:~/go/src/github.com/hyperledger/fabric/examples/e2e_cli/channel-artifacts# ls
channel.tx genesis.block Org1MSPanchors.tx Org2MSPanchors.tx
root@ubuntu:~/go/src/github.com/hyperledger/fabric/examples/e2e_cli/channel-artifacts# rm -rf genesis.block/

错误:
[root@localhost e2e_cli]# ../../build/bin/configtxgen -profile TwoOrgsOrdererGenesis
2017-09-17 05:54:50.525 PDT [common/configtx/tool] main -> INFO 001 Loading configuration
2017-09-17 05:54:50.525 PDT [common/configtx/tool/localconfig] Load -> CRIT 002 Error reading configuration: Unsupported Config Type ""
2017-09-17 05:54:50.525 PDT [common/configtx/tool] func1 -> ERRO 003 Could not find configtx.yaml. Please make sure that FABRIC_CFG_PATH is set to a path which contains configtx.yaml

解决办法:
[root@localhost e2e_cli]# export FABRIC_CFG_PATH=$PWD
[root@localhost e2e_cli]# ../../build/bin/configtxgen -profile TwoOrgsOrdererGenesis -outputBlock ./channel-artifacts/genesis.block

错误:
cli | 2017-09-19 14:58:59.485 UTC [msp/identity] Sign -> DEBU 00e Sign: plaintext: 0AC3060A1508021A0608B3E184CE0522...EBE756E2B3F85609A68E923C9B9499B3
cli | 2017-09-19 14:58:59.485 UTC [msp/identity] Sign -> DEBU 00f Sign: digest: 57743FC2DDB7C9C207351F728119716FF214994F050D89C3D19805B9923A5DA4
cli | Error: Got unexpected status: BAD_REQUEST
cli | Usage:
cli | peer channel create [flags]
cli |
cli | Flags:
cli | -c, --channelID string In case of a newChain command, the channel ID to create.
cli | -f, --file string Configuration transaction file generated by a tool such as configtxgen for submitting to orderer
cli | -t, --timeout int Channel creation timeout (default 5)
cli |
cli | Global Flags:
cli | --cafile string Path to file containing PEM-encoded trusted certificate(s) for the ordering endpoint
cli | --logging-level string Default logging level and overrides, see core.yaml for full syntax
cli | -o, --orderer string Ordering service endpoint
cli | --test.coverprofile string Done (default "coverage.cov")
cli | --tls Use TLS when communicating with the orderer endpoint
cli | -v, --version Display current version of fabric peer server
cli |
cli | !!!!!!!!!!!!!!! Channel creation failed !!!!!!!!!!!!!!!!
cli | ================== ERROR !!! FAILED to execute End-2-End Scenario ==================
cli |
cli | sleep: missing operand
cli | Try 'sleep --help' for more information.
解决办法:
类似这样的错误,是因为channel已经建立,命名冲突
< EXACT_TIMESTAMP > UTC [msp] Sign - > DEBU 064 Sign : digest : 5 ABA6805B3CDBAF16C6D0DCD6DC439F92793D55C82DB130206E35791BCF18E5F Error : Got unexpected status : BAD_REQUEST Usage : peer channel create [flags]

解决办法:移除docker,重新启动。执行最后一个命令即可
1)删除一个容器 docker rm
2)强制删除一个容器 docker rm -f
3)强制删除全部容器 docker rm -f $(docker ps -aq)


$GOPATH

cp: cannot stat 'build/docker/gotools/bin/protoc-gen-go': No such file or directory(找不到protoc-gen-go文件)

编译生成 protoc-gen-go

#编译生成 protoc-gen-go
cd $GOPATH
gopm get -g -d github.com/golang/protobuf/protoc-gen-go
go install github.com/golang/protobuf/protoc-gen-go
#确认在$GOPATH/bin出现protoc-gen-go执行文件

如果出现文件或者命令没找到的错误,复制go 的相关文件到 fabric 编译环境

cp $GOPATH/bin/protoc-gen-go $GOPATH/src/github.com/hyperledger/fabric/build/docker/gotools/bin/

cp $GOPATH/bin/gocov $GOPATH/src/github.com/hyperledger/fabric/build/docker/gotools/bin/

部署过程中的注意go的安装路径,记录下问题,希望能给大家一些帮助与提示!!!



欢迎大家一起加入讨论!!!

猜你喜欢

转载自blog.csdn.net/wxb880114/article/details/79378656