当前位置: 代码迷 >> 综合 >> CentOS7 - Fabric1.0单机安装时的一些记录
  详细解决方案

CentOS7 - Fabric1.0单机安装时的一些记录

热度:8   发布时间:2023-12-23 15:07:49.0

以下内容是在开始接触fabric单机安装时候的一些步骤以及一些问题记录,自己做个记录,也希望给看到的小伙伴一个提示。之后会记录一下物理机手动部署的步骤,如果有不对的地方欢迎大家不吝赐教,谢谢。


目录

1、curl

2、tree&git

3、安装Docker

4、安装Docker-Compose

5、安装golang

6、Fabric1.0源码及镜像文件处理

7、运行e2e并测试

8、异常记录



1、curl

curl http://bpic.ooopic.com/12/68/70/72bOOOPIC24_1024.jpg --progress -O

以上是一个示例,之后可能会用到curl命令,如果没有安装curl,则使用下面命令安装:

yum -y install curl

--progress —— 显示进度条

--silent —— 表示不显示下载进度信息

-O —— 表示将下载的数据写入到文件,必须使用文件的绝对地址

例如可以使用如下命令指定保存文件时的文件名。

 

2、tree&git&vim

为了直观的查看一些目录,需要用到tree命令,因此安装tree

yum install tree -y

之后的一些源码下载需要使用git命令,因此需要安装git,安装方式有很多,以下使用yum命令安装(版本较低),如果对版本有要求请自行搜索安装方式。

yum install git -y

因为vim目录会对大部分格式文件显示语法颜色,因此在终端中使用vim编辑文件。

yum install vim -y

 

3、安装Docker

参考:centos7 - Docker&Docker-Compose安装

 

4、安装Docker-Compose

参考:centos7 - Docker&Docker-Compose安装

 

5、安装golang

参考:CentOS7安装golang

 

6、Fabric1.0源码及镜像文件处理

以下内容并不全面,仅对部分进行简单记录,详细请参考Hyperledger Fabric 1.0 从零开始,

fabric源码下载可以使用git命令,也可以使用go get命令,此处使用go get命令获取最新(文档记录时最新版本为1.1)fabric源码。

go get github.com/hyperledger/fabric

等待一段时间后就可以下载完成,目录下文件(会下载至本机GOPATH目录,注意:本次单机测试时是在/home/go/目录下面,之后全部修改为/opt/gopath/目录):

 

切换版本为1.0(进入fabric目录:)

cd $GOPATH/src/github.com/hyperledger/fabric;git checkout -b v1.0.0;

镜像文件下载删除备份略。参考:Hyperledger Fabric 1.0 从零开始。贴一张镜像列表的图,每个显示两份是因为修改了镜像的版本为latest(红框位置为输入错误的行,请忽略)。

 

7、运行e2e并测试

参考

之前已经下载了fabric源码在/opt/gopath/src/github.com/hyperledger/目录下。

进入到/opt/gopath/src/github.com/hyperledger/fabric/examples/e2e_cli目录,文件结构如下:

network_setup.sh是一件测试脚本,该脚本启动5个docker容器,其中4个容器运行peer节点和1个容器运行orderer节点,它组成一个Fabric集群。另外还有一个cli容器用于执行创建channel、加入channel、安装和执行chaincode等操作。测试用的chaincode定义了两个变量,在实例化的时候会给这两个变量赋予了初始值,并通过invoke操作可以使两个变量的值发生变化。

通过以下命令执行测试:

bash network_setup.sh up
或
./network_setup.sh up

这个做了以下操作:

  • 编译生成Fabric公私钥、证书的程序,程序在目录:fabric/release/linux-amd64/bin
  • 基于configtx.yaml生成创世区块和通道相关信息,并保存在channel-artifacts文件夹。
  • 基于crypto-config.yaml生成公私钥和证书信息,并保存在crypto-config文件夹中。
  • 基于docker-compose-cli.yaml启动1Orderer+4Peer+1CLI的Fabric容器。
  • 在CLI启动的时候,会运行scripts/script.sh文件,这个脚本文件包含了创建Channel,加入Channel,安装Example02,运行Example02等功能。

接下来会有许多的调试信息,具体可参考e2e_cli目录下的script/script.sh文件:(以下为部分截图)

 

 

 当终端出现以下信息时,说明测试通过,所有部件正常工作:

***********************以下内容为测试可跳过,到下一行*结束********************

手动测试一下Fabric网络

(来自 http://www.cnblogs.com/studyzy/p/7437157.html 第8部分)

以安装好的Example02为例,在官方例子中,channel名字是mychannel,链码的名字是mycc。我们首先进入CLI,我们重新打开一个命令行窗口,输入(命令行会变成类似下面的样子):

docker exec -it cli bash

然后运行以下命令可以查询a账户的余额:

peer chaincode query -C mychannel -n mycc -c '{"Args":["query","a"]}'

可以看到余额为90。然后再试一下把a账户的余额再转20元给b账户,运行命令:

peer chaincode invoke -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 mycc -c '{"Args":["invoke","a","b","20"]}'

现在转账完毕, 我们试一试再查询一下a账户的余额,没问题的话,应该是只剩下70了。我们看看实际情况:

*************************************************************************************

测试一切正常,最后我们就可以关闭Fabric网络,继续我们的多机Fabric网络设置工作。关闭Fabric命令:

bash network_setup.sh down
或者
./network_setup.sh down

运行成功后所有镜像文件列表如下:

 

8、异常记录

(1)如果出现以下错误:

2018-05-22 09:17:49.339 UTC [main] main -> ERRO 001 Cannot run peer because error when setting up MSP of type bccsp from directory /opt/gopath/src/github.com/hyperledger/fabric/peer/crypto/ordererOrganizations/example.com/orderers/orderer.example.com/msp: could not load a valid signer certificate from directory /opt/gopath/src/github.com/hyperledger/fabric/peer/crypto/ordererOrganizations/example.com/orderers/orderer.example.com/msp/signcerts: stat /opt/gopath/src/github.com/hyperledger/fabric/peer/crypto/ordererOrganizations/example.com/orderers/orderer.example.com/msp/signcerts: no such file or directory

!!!!!!!!!!!!!!! Ordering Service is not available, Please try again ... !!!!!!!!!!!!!!!!

================== ERROR !!! FAILED to execute End-2-End Scenario ==================

应该是修改go配置没有生效,可以尝试关闭当前与linux的会话,再重新链接登录,以使系统设置生效。比如两个窗口链接同一个linux,配置之后再链接的窗口执行命令echo $PATH的结果是:/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/usr/local/go/bin:/root/bin、而没有配置之后没有重新链接执行命令后的结果是:/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/usr/lib/golang/bin:/root/bin:/usr/local/go/bin。重新链接即可同步。

 

(2)如果出现以下错误:

Error: Error endorsing chaincode: rpc error: code = Unknown desc = error starting container: API error (404): {"message":"network e2ecli_default not found"}

根据网上资料:原因是e2e_cli目录是固定的,启动后会创建一个docker network以此为名字,这里是e2e_cli。如果修改该目录,要修改/opt/gopath/src/github.com/hyperledger/fabric/examples/e2e_cli/base目录下的peer-base.yaml。将网络名改成如下名称即可:

- CORE_VM_DOCKER_HOSTCONFIG_NETWORKMODE=e2e_cli_default

 

(3)如果出现以下错误:

panic: Error when setting up MSP from directory /opt/gopath/src/github.com/hyperledger/fabric/peer/crypto/ordererOrganizations/example.com/orderers/orderer.example.com/msp: err Could not load a valid signer certificate from directory /opt/gopath/src/github.com/hyperledger/fabric/peer/crypto/ordererOrganizations/example.com/orderers/orderer.example.com/msp/signcerts, err stat /opt/gopath/src/github.com/hyperledger/fabric/peer/crypto/ordererOrganizations/example.com/orderers/orderer.example.com/msp/signcerts: no such file or directory

应该是镜像文件版本和源码版本不对应,例如源码为1.1.0版本,镜像为1.0.0则会有次错误,解决办法为清除镜像文件重新下载,也可以使用fabric/scripts/ bootstrap.sh文件下载镜像,以1.1.0版本为例,修改bootstrap.sh文件如下红框部分为1.1.0,然后执行./bootstrap.sh命令即可下载相应版本镜像文件。

 

(4)其他:

出现诸如:the connection is unavailable

等异常不能启动,

可多次尝试关闭fabric(./network_setup.sh down)并且重启(./network_setup.sh up)查看问题是否解决,或者修改docker和docker-compose版本为最新的相同版本然后重试。


END