Fabric1.4.0网络搭建_自动化脚本实现

1.安装linux系统

本文使用Ubuntu
Ubuntu18.04/20.04完整新手安装教程
Ubuntu20.04 LTS入坑指南

2.依赖环境

先执行sudo apt-get update
(1)安装git
命令如下:$ sudo apt install git

(2)安装cURL
命令如下:$ sudo apt install curl

(3)Docker
*查看系统是否已安装Docker,命令如下:$ docker --version
*若未安装,命令如下:$ sudo apt install docker.io
*安装完成后,查看版本,命令如下:$ docker --version
如图所是,则表示安装成功
在这里插入图片描述

(4)Docker compose
*查看系统是否已安装Docker compose,命令如下:$ docker-compose --version
*若未安装,命令如下:$ sudo apt install docker-compose
*安装完成后,查看版本,命令如下:$ docker-compose --version
如图所是,则表示安装成功
在这里插入图片描述
*【?】修改用户执行 compose 的权限命令(允许其他用户执行 )
命令如下:$ sudo chmod +x /usr/share/doc/docker-compose

(5)安装Go
*下载Golang
用wget 工具下载Golang,命令如下:$ wget https://dl.google.com/go/go1.16.linux-amd64.tar.gz

解压文件
Golang 压缩包下载完成后,使用 tar 命令将压缩包解压到指定的 /usr/local/ 路径下
命令如下:$ sudo tar -zxvf go1.16.linux-amd64.tar.gz -C /usr/local/
(切换go版本,也是执行此命令,会覆盖以前的版本,覆盖后可以用
*$ go version** 命令来查看当前go版本)

*配置环境变量(下面两种选一种)
-----若让系统所有用户使用 Golang,编辑 /etc/profile 文件
命令如下:$ sudo gedit /etc/profile 进入编辑界面
在 profile 文件最后添加如下内容:
(echo $HOME --------------运行结果时home/lijiangtao)

export GOROOT=/usr/local/go
export GOPATH=$HOME/go
export PATH=$PATH:$GOROOT/bin:$GOPATH/bin

使用 source 命令,使刚刚添加的配置信息生效,命令如下:$ source ~/.bashrc
(编辑命令: gedit ~/.bashrc
编辑之后使环境变量生效的命令:source ~/.bashrc
每次修改.bashrc后,使用source ~/.bashrc(或者 . ~/.bashrc)就可以立刻加载修改后的设置,使之生效。)

-----若让只想让当前用户使用 Golang,则编辑当前用户 home 目录下的 .bashrc 或 .profile 文件
使用如下命令:$ sudo vi ~/.bashrc
在弹出的对话窗口中添加如下内容

export GOROOT=/usr/local/go  
export GOPATH=/data/gopath
export PATH=$GOROOT/bin:$GOPATH/bin:$PATH 

使用 source 命令,使刚刚添加的配置信息生效,命令如下:$ source ~/.bashrc

*使用命令:source /etc/profile刷新一下
使用 go version 命令验证是否安装成功,命令如下:$ go version
在这里插入图片描述

3.拉取Fabric源码

*创建一个空目录,命令如下:$ mkdir -p ~/go/src/github.com/hyperledger

*进入该目录,命令:$ cd ~/go/src/github.com/hyperledger

*拉取 fabric 的源码,命令如下:$ git clone https://github.com/hyperledger/fabric.git

*进入 fabric 目录,查看版本分支
命令如下:$ git branch(查看本地所有分支)
在这里插入图片描述
命令如下:$ git branch -a(查看本地和远程所有分支)【git branch -r查看远程所有分支】
在这里插入图片描述
切换分支,命令如下:git checkout v1.4.0
在这里插入图片描述
切换分之后,再查看版本分支,命令如下:$ git branch
在这里插入图片描述
切换分支时,若是出现如下问题:Please commit your changes or stash them before you switch branches.
使用命令:git stash

3.拉取fabric-samples

(1)配置镜像加速器(两种方式),详细请看【备注1
方式1:命令如下:$ sudo gedit /etc/docker/daemon.json
方式2:命令如下:$ sudo tee /etc/docker/daemon.json <<-'EOF’

(2)拉取依赖
由于 e2e 网络在 Fabric1.4 已经移除,所以测试网络使用 fabric-samples 中的 first-network

有两种方式来拉取fabric-samples,详细请看【备注2】中的第二种方式
查看 bootstrap.sh 脚本,该脚本主要帮我们干以下三件事,一般会卡在 binariesInstall 步骤,我们可以手动完成这三个步骤。

if [ "$SAMPLES" == "true" ]; then
    echo
    echo "Installing hyperledger/fabric-samples repo"
    echo
    samplesInstall
fi
if [ "$BINARIES" == "true" ]; then
   echo
   echo "Installing Hyperledger Fabric binaries"
   echo
   binariesInstall
fi
if [ "$DOCKER" == "true" ]; then
    echo
    echo "Installing Hyperledger Fabric docker images"
    echo
    dockerInstall
fi

a.下载 fabric-samples 源码
*查看 bootstrap.sh 脚本:

samplesInstall() {
  # clone (if needed) hyperledger/fabric-samples and checkout corresponding
  # version to the binaries and docker images to be downloaded
  if [ -d first-network ]; then
    # if we are in the fabric-samples repo, checkout corresponding version
    echo "===> Checking out v${VERSION} of hyperledger/fabric-samples"
    git checkout v${VERSION}
  elif [ -d fabric-samples ]; then
    # if fabric-samples repo already cloned and in current directory,
    # cd fabric-samples and checkout corresponding version
    echo "===> Checking out v${VERSION} of hyperledger/fabric-samples"
    cd fabric-samples && git checkout v${VERSION}
  else
    echo "===> Cloning hyperledger/fabric-samples repo and checkout v${VERSION}"
    git clone -b master https://github.com/hyperledger/fabric-samples.git && cd fabric-samples && git checkout v${VERSION}
  fi
}

*将 fabric-samples 源码克隆到当前目录(与 fabric 同级目录)下,并切换到指定版本:
进入fabric所在目录,命令如下:$ cd ~/go/src/github.com/hyperledger
拉取(克隆)fabric-samples,命令如下:$ git clone https://github.com/hyperledger/fabric-samples.git
进入fabric-samples文件,命令如下:$ cd ./fabric-samples,fabric-samples克隆后的文件内容如下图所示
在这里插入图片描述
此时分支是在main中,使用命令:$ git branch -a 查看 本地和远程所有分支,如下图所示
在这里插入图片描述
然后,在fabric-samples中,使用命令:$ git checkout v1.4.0,切换到 'v1.4.0’分支,如下图所示
在这里插入图片描述
此时分支是在v1.4.0中,使用命令:$ git branch -a 查看 本地和远程所有分支,如下图所示
在这里插入图片描述
此时查看fabric-samples文件夹中的内容,如下图所示
在这里插入图片描述
b.下载可执行二进制文件
下载指定版本的 Hyperledger Fabric 平台特定的二进制文件和配置文件,查看 bootstrap.sh 脚本:

binariesInstall() {
    echo "===> Downloading version ${FABRIC_TAG} platform specific fabric binaries"
    binaryDownload "${BINARY_FILE}" "https://nexus.hyperledger.org/content/repositories/releases/org/hyperledger/fabric/hyperledger-fabric/${ARCH}-${VERSION}/${BINARY_FILE}"
    if [ $? -eq 22 ]; then
        echo
        echo "------> ${FABRIC_TAG} platform specific fabric binary is not available to download <----"
        echo
    fi

    echo "===> Downloading version ${CA_TAG} platform specific fabric-ca-client binary"
    binaryDownload "${CA_BINARY_FILE}" "https://nexus.hyperledger.org/content/repositories/releases/org/hyperledger/fabric-ca/hyperledger-fabric-ca/${ARCH}-${CA_VERSION}/${CA_BINARY_FILE}"
    if [ $? -eq 22 ]; then
        echo
        echo "------> ${CA_TAG} fabric-ca-client binary is not available to download  (Available from 1.1.0-rc1) <----"
        echo
    fi
}

该脚本从下面两个链接中下载二进制文件,直接访问该页面,选择相应的版本下载即可,此处选择的是 linux-amd64-1.4.0版本
https://nexus.hyperledger.org/content/repositories/releases/org/hyperledger/fabric/hyperledger-fabric
https://nexus.hyperledger.org/content/repositories/releases/org/hyperledger/fabric-ca/hyperledger-fabric-ca

通过上面两个地址下载一般会下载失败(地址访问不到),此处提供下载好的文件(提取玛:2qgc)
下载的 hyperledger-fabric-linux-amd64-1.4.0.tar 压缩包内有 bin 和 config 两个文件夹,hyperledger-fabric-ca-linux-amd64-1.4.0.tar 压缩包内有 bin 文件夹,将两个 bin 文件夹内的二进制文件汇总在一个 bin 文件夹内。 最后将 bin 和 config 文件夹复制到 fabric-samples 文件夹内。
在这里插入图片描述
然后赋予bin目录下的文件可执行权限,命令如下:$ chmod +x bin/*

c. 下载 Docker镜像
进入fabric-samples/scripts目录,命令如下:$ cd ~/go/src/github.com/hyperledger/fabric-samples/scripts
执行 bootstrap.sh 脚本,命令如下:$ sudo ./bootstrap.sh -b
在这里插入图片描述
最终下载docker镜像结果如下图所示
在这里插入图片描述
(3)环境变量配置
*将bin目录设置到系统环境变量中,并使之生效
编辑 /etc/profile 文件,命令如下:$ sudo gedit /etc/profile 进入编辑界面
(在export PATH=…后面添加bin的路径,$HOME/go/src/github.com/hyperledger/fabric-samples/bin是我的路径,
echo $HOME ----------运行结果是home/lijiangtao 第2.1说到环境变量配置)

export PATH= P A T H : PATH: PATH:GOROOT/bin: G O P A T H / b i n : GOPATH/bin: GOPATH/bin:HOME/go/src/github.com/hyperledger/fabric-samples/bin
在这里插入图片描述

之后使用 source 命令,使刚刚添加的配置信息生效,命令如下:$ source /etc/profile
source /etc/profile作用,source ~/.bashrc】

1>验证二进制文件
通过 ~$ peer version 命令来验证二进制文件,以及环境变量的配置是否成功,成功后的提示信息如下图所示
在这里插入图片描述
2>验证环境变量配置
命令如下:~$ fabric-ca-client version 命令来验证环境变量是否配置成功,成功后的提示信息如下图所示
在这里插入图片描述

4.构建

(1)生成网络组件
1>进入fabric-samples/first-network目录
命令如下:~$ cd ~/go/src/github.com/hyperledger/fabric-samples/first-network
2>生成网络组件【说明:a、为区块链网络生成证书和密钥。b、genesis block:用来引导order服务。c、与交易相关的channel配置】
命令如下:~$ ./byfn.sh generate执行结果如下图所示
【注:也可以直接执行 ~$ ./byfn.sh 命令来启动网络(生成网络组件和启动网络合并成一步)】
在这里插入图片描述
(2)启动网络
*在fabric-samples/first-network目录下执行命令 $ ./byfn.sh up
可能会出现如下error
a. 错误1 详细看【备注3
ERROR: for peer1.org2.example.com Cannot create container for service peer1.org2.example.com: b’Conflict.
The container name “/peer1.org2.example.com” is already in use by container “f6ba67c7228456e9304a5c1c65f497af176c3f5b8198e529e70fa8e3d72a51c7”.
You have to remove (or rename) that container to be able to reuse that name.

b. 错误2 详细看【备注4
Error: error getting endorser client for channel: endorser client failed to connect to peer0.org1.example.com:7051: failed to create new connection: context deadline exceeded
peer0.org1 failed to join the channel, Retry after 3 seconds

*如上error解决后,启动网络,重新在fabric-samples/first-network目录下执行命令 $ ./byfn.sh up,执行结果如下图所示
在这里插入图片描述

---------------------------------------------------------------------备注1 ----------------------------------------------------------------------------------
【需要配置自己的镜像加速器(修改docker镜像源),不配置镜像加速器下载速度很慢
可选择阿里云的镜像加速器:https://cr.console.aliyun.com/cn-hangzhou/instances/mirrors
或可选择镜像加速器:https://registry.docker-cn.com】

进入 /etc/docker,没有daemon.json文件就自己新建一个:
方式1:
$ sudo gedit /etc/docker/daemon.json
在这里插入图片描述
编辑daemon.json文件:
加入如下代码

{
 "registry-mirrors": ["https://registry.docker-cn.com"]
}

在这里插入图片描述
方式2:
$ sudo tee /etc/docker/daemon.json <<-'EOF’

{
  "registry-mirrors": ["你的加速器地址"]
}
EOF

在这里插入图片描述
参考:
[1].https://blog.csdn.net/weixin_45496075/article/details/109123709;
[2].https://www.cnblogs.com/huhyoung/p/9495956.html;
[3].https://www.cnblogs.com/brucewhite/p/11608853.html
----------------------------------------------------------------备注1 结束 --------------------------------------------------------------------------------

----------------------------------------------------------------备注2 ---------------------------------------------------------------------------------------
参考
[1].Hyperledger Fabric1.4 安装
[2].fabric-samples环境搭建-bootstrap.sh下载二进制文件失败

方式1:方式一(要求网速好,最好挂 VPN 下):
可以在 fabric/scripts 目录下找到 bootstrap.sh 脚本,复制到与 fabric 同级目录下,执行脚本:
$ ./bootstrap.sh
该脚本会帮你干很多事情:
如果当前目录没有 hyperledger/fabric-samples,会从 github.com 克隆 hyperledger/fabric-samples 存储库;
使用 checkout 签出对应指定的版本标签;
将指定版本的 Hyperledger Fabric 平台特定的二进制文件和配置文件安装到 fabric-samples 存储库的根目录中;
下载指定版本的 Hyperledger Fabric Docker 镜像文件;
将下载的 Docker 镜像文件标记为 “lastest"。
执行此脚本会出现如下地址访问不到
https://nexus.hyperledger.org/content/repositories/releases/org/hyperledger/fabric/hyperledger-fabric
https://nexus.hyperledger.org/content/repositories/releases/org/hyperledger/fabric-ca/hyperledger-fabric-ca
具体错误如下图所示
在这里插入图片描述

方式2:查看 bootstrap.sh 脚本,该脚本主要帮我们干以下三件事,一般会卡在 binariesInstall 步骤,我们可以手动完成这三个步骤。
----------------------------------------------------------------备注2 结束 --------------------------------------------------------------------------------

----------------------------------------------------------------备注3 ---------------------------------------------------------------------------------------
注:“docker ps” 是查看当前运行的容器,“docker ps -a” 是查看所有容器(包括停止的)

1.错误状态
The container name “/peer1.org2.example.com” is already in use by container “f6ba67c7228456e9304a5c1c65f497af176c3f5b8198e529e70fa8e3d72a51c7”

具体如下错误:
ERROR: for peer1.org2.example.com Cannot create container for service peer1.org2.example.com: b’Conflict.
The container name “/peer1.org2.example.com” is already in use by container “f6ba67c7228456e9304a5c1c65f497af176c3f5b8198e529e70fa8e3d72a51c7”.
You have to remove (or rename) that container to be able to reuse that name.

具体如下图所示
在这里插入图片描述

2.先查看所有的容器
命令如下:$ docker ps -a,结果如下图所示

在这里插入图片描述

看到了这个名为 “peer1.org2.example.com” ,“peer1.org1.example.com”,“peer0.org2.example.com”,“peer0.org1.example.com”,“orderer.example.com”,“cli”的容器,并且这些容器是非运行(Exited)状态。

3.分别移除这些容器
命令如下:$ docker rm f6ba67c72284
在这里插入图片描述

在这里插入图片描述

在这里插入图片描述

之后使用命令**$ docker ps -a**继续查看容器

4.启动网络
在fabric-samples/first-network目录下执行命令 $ ./byfn.sh up,执行结果如下图所示
(网络环境还没有完全搭建好,只是此错误解决了)
在这里插入图片描述

参考
[1].创建新Docker容器时出现“The container name “/xxx” is already in use by container xxxxxxxxxxx…”问题的解决办法

----------------------------------------------------------------备注3 结束---------------------------------------------------------------------------------
----------------------------------------------------------------备注4 ---------------------------------------------------------------------------------------
参考
[1].关于Error: error getting endorser client for channel: endorser client failed to connect to peer0问题的解决
[2].阿里云服务器使用Fabric Samples运行first-network报错error getting endorser client for channel

1.error内容

Error: error getting endorser client for channel: endorser client failed to connect to peer0.org1.example.com:7051: failed to create new connection: context deadline exceeded
peer0.org1 failed to join the channel, Retry after 3 seconds

具体error如下两张图所示
在这里插入图片描述
在这里插入图片描述

2.解决办法
*修改配置文件
执行命令:$ sudo vim /etc/resolv.conf(执行所在路径随意),进入该文件中
将optins这句话(最后一行)给他注释掉,在前面加#即可(截图中已注释)

在这里插入图片描述

*停止网络,进入~/go/src/github.com/hyperledger/fabric-samples/first-network目录中,执行停止命令
命令如下:$ ./byfn.sh down
在这里插入图片描述

*启动网络
执行命令:$ ./byfn.sh up,执行结果如图下图所示
在这里插入图片描述

------------------------------------------------------------------------------备注4结束 -----------------------------------------------------------------

参考
[1].Hyperledger Fabric1.4 安装
[2].hyperledger fabric v1.4.0 linux 环境搭建详细(1)

有用
[1].ubuntu搭建hyperledger-fabric1.4.0开发环境
[2].fabric-samples的安装
[3].Hyperledger Fabric1.4 系列一(部署)
【4】Fabric2.0 first-network 生成配置说明
【5】Fabric的详细解析,做个记录
【6】Fabric1.4源码解析:Peer节点背书提案过程

其他
[1].open go/src/github.com/hyperledger/fabric-samples/basic-network/start.sh
make FABRIC_START_TIMEOUT=90 (default 10)
https://www.e-learn.cn/content/wangluowenzhang/1779758

[2].startFabric.sh脚本
进入目录 $ cd ~/go/src/github.com/hyperledger/fabric-samples/fabcar/
启动脚本 $ ./startFabric.sh

[3].node
Python:为了可以成功执行npm install命令!

[4].查看路径系统路径 go env
[5].git branch用法总结,查看、新建、删除、重命名
[6].tree命令的使用
[7].linux教程
[8].docker常规操作——启动、停止、重启容器实例

  • 0
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值