上一篇文章《Fabric2.0学习进阶——搭建环境准备(一)》搭建好fabric部署环境之后,本文则介绍通过Docker容器的方式来启动first-network,为后续链码操作提供基础。

### 2.1 下载Fabric源码 创建源码存放的目录,本文将源码存放在/usr/local/src/hyperleger目录中,如读者机器上没有该目录需要执行以下命令手动创建:
sudo mkdir -p /usr/local/src/hyperleger

进入到该目录,使用git从github上下载fabric的源码,并切换到release-2.0的分支。

cd /usr/local/src/hyperleger
sudo git clone https://github.com/hyperledger/fabric.git
sudo git checkout release-2.0

在我们刚才下载的源码中,有一个非常重要的脚本bootstrap.sh,它能帮助我们完成后面的下载工作。

图片1.png

接下来的下载工作有两种方式实现:

(1) 运行bootstrap.sh脚本实现一键下载,但是这种方式由于网络原因导致执行效率不高,可以使用nohup和&不挂断的运行该脚本;

(2) 手动完成后续下载工作,该方式更灵活,而且便于读者了解搭建Fabric平台必要的组件信息。

本节将采用第2种方式完成后面的组件下载工作。

2.2 下载Fabric的docker镜像

本文将以docker的形式启动fabric平台,因此这里需要下载fabric网络各组件的docker镜像。

Fabric的docker镜像下载我们这里仍然使用bootstrap.sh脚本实现(如果对docker操作熟悉的同学也可以直接使用docker命令下载),通过脚本参数设置使该脚本只下载Fabric的docker镜像。执行如下命令:

cd /usr/local/src/hyperleger/fabric/scripts
sudo ./bootstrap.sh 2.0.0 -b -s

查看安装结果,执行命令:

docker images

该下载过程即使设置了阿里云的镜像加速也需要消耗一些时长,镜像下载成功则显示下图中的镜像列表信息。

图片2.png

2.3 下载Fabric示例代码

Fabric的示例代码包含:测试链码、first-network和test-network两个测试网络及其对应的配置文件和启动脚本,非常具有参考意义。本节将启动first-network网络。

Fabric的示例代码使用git命令下载。

cd /usr/local/src/hyperleger/fabric/scripts
sudo git clone https://github.com/hyperledger/fabric-samples.git
# 切换版本
sudo git checkout v2.0.0

下载成功后,scripts目录下将生成一个fabric-samples目录,如下图所示:

图片3.png

2.4 下载Fabric部署所需的二进制文件

本节所需的二进制文件实际是可以通过编译fabric源码获得,bootstrap.sh则是直接从github下载压缩包,无论是编译还是从github下载,失败率较高。这里我将提供百度网盘地址,供读者下载,更靠谱一些。

地址:https://pan.baidu.com/s/1pX8Y9p3eBIK6GWi5ISNEZw,提取码:ba2k

把下载的文件解压到/usr/local/src/hyperleger/fabric/scripts/fabric-samples目录中,执行命令:

tar -zxvf hyperledger-fabric-linux-amd64-2.0.0.tar.gz -C /usr/local/src/hyperleger/fabric/scripts/fabric-samples/

解压成功后fabric-samples目录将生成bin和config两个目录,如下图所示:

图片4.png

bin目录中包含7个可执行程序,当fabric网络启动时将被调用。

图片5.png

config目录包含3个配置文件,用于对fabric网络的配置。

图片6.png

2.5 下载Fabric-ca二进制文件

本节所需的二进制文件实际是可以通过编译fabric源码获得,bootstrap.sh则是直接从github下载压缩包,无论是编译还是从github下载,失败率较高。这里我将提供百度网盘地址,供读者下载,更靠谱一些。

地址:https://pan.baidu.com/s/1pX8Y9p3eBIK6GWi5ISNEZw,提取码:ba2k

把下载的文件解压到/usr/local/src/hyperleger/fabric/scripts/fabric-samples目录中,执行命令:

tar -zxvf hyperledger-fabric-ca-linux-amd64-1.4.6.tar.gz -C /usr/local/src/hyperleger/fabric/scripts/fabric-samples/

解压成功后bin目录中将增加2个可执行程序,如下图所示:

图片7.png

将上述bin目录加入环境变量PATH中,否则在部署通道部署代码时会出现错误。

# 设置环境变量
sudo vim /etc/profile
# 将以下内容追加到文件末尾
export FABRIC_SAMPLE=/usr/local/src/hyperleger/fabric/scripts/fabric-samples
export PATH=$GOROOT/bin:$FABRIC_SAMPLE/bin:$PATH
# 使环境变量生效
source /etc/profile

2.6 启动first-network网络

启动first-network网络,执行如下命令:

cd /usr/local/src/hyperleger/fabric/scripts/fabric-samples/first-network
sudo ./byfn.sh up

Tips:byfn是build your first network的简写。

从脚本执行的日志可以看出,first-network网络由10个容器服务组成,包括:5个排序节点服务,4个peer节点服务和1个cli服务。

容器服务启动之后,休眠15s构建排序节点服务集群,构建完成之后,开始进行链码打包、安装、实例化、调用测试。

命令执行成功显示结果如下图所示:

图片8.png

查看容器运行情况,执行命令:

docker ps

停止网络,执行命令:

sudo ./byfn.sh down

至此,我们的第一个fabric网络就启动了。各位读者如果有时间一定要仔细阅读byfn.sh脚本,该脚本实现了启动一个网络,并完成链码调用测试的整个过程。

文章作者:xiaohui249
本文链接:https://javatech.wang/index.php/archives/138/
版本所有 ©转载时必须以链接形式注明作者和原始出处