区块链从零开始做开发(0):hyperledger Fabric2.3安装

时间:2024-01-27 20:05:54

一、前言  

  各位看官好,这是本人第一篇技术博客。

  写博客的契机是因为原来配的环境在虚拟机扩容后莫名奇妙崩了(具体情况我以后会写),为了以后的自己特此从头开始记录。以前都是作为一个读者,这次终于有机会能够分享自己的理解,也算是因祸得福吧哈哈。那么闲话少说,接下来正式进入正题


 

二、基本环境

  系统:Ubuntu20.04(LTS)

  题外话:网上很多版本的教程使用的是18.x版本,我之前用20.10版本(结果崩了)。所以这次吸取教训,用新的稳定的版本

三、安装依赖

  在(虚拟机中)装完系统后,最好把软件源配置成国内的如华为或阿里。在setting->About->Software Updates 下的 Download from 中选择

  

 

 

   更换后用一下命令更新:

$ sudo apt update

  因为一直要sudo太麻烦,而且以后也会涉及到权限的问题,所以我建议大家可以直接用root用户登录,具体操作可以看这个教程:

http://www.zzvips.com/article/90799.html

  1.安装git

  安装git工具

$ sudo apt install git

 

  2.安装cURL

$ sudo apt install curl

 

  3.安装Docker

  先查看是否安装了Docker:

$ docker --version

  未安装则使用以下命令安装最新Docker:

$ sudo apt install docker.io

  安装后记得查看一下:

root@ubuntu:~# docker -v
Docker version 19.03.8, build afacb8b7f0

  出现以上字样表示安装成功

  我这里是以root权限安装,如果是非root用户需要使用以下命令才能使用docker:

$ sudo usermod -aG docker [你的用户名] (重启生效)

 

  4.安装docker-compose

  和之前一样先查看是否安装docker-compose:

$ docker-compose --version

  没有安装就使用以下命令安装:

$ sudo apt install docker-compose

  安装后查看版本:

root@ubuntu:~# docker-compose -v
docker-compose version 1.25.0, build unknown

  出现以上字样说明安装成功。同理,如果是普通用户还需要以下命令:

$ sudo chmod +x /usr/share/doc/docker-compose

 

  5.安装go语言(存疑)

  在官方文档中,fabric2.0及之前的版本是需要安装go语言的,但是之后的版本就没有再提过,可能是不需要的,但是装上也不影响使用,所以我们就多进行一步吧,如果此处有误请告诉我!

  ①下载go语言

$ wget https://dl.google.com/go/go1.13.15.linux-amd64.tar.gz

  这里go语言的版本要注意,fabric2.0要求的是1.13.x

  ②解压文件

  使用 tar 命令将压缩包解压到指定的 /usr/local/ 路径下(可以自己选择):

$ sudo tar -zxvf go1.13.15.linux-amd64.tar.gz -C /usr/local/

  ③配置环境变量

  为了所有用户都可以使用go语言使用以下命令,其他情况可以只修改当前用户$HOME目录下的 .bashrc 或 .profile 文件

$ sudo gedit /etc/profile

  在文件末尾写入以下内容并保存:

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

  使用source命令使以上内容生效:

$ source /etc/profile

  然后还是检查是否安装成功:

root@ubuntu:~# go version
go version go1.13.15 linux/amd64

  如果未出现以上内容可以尝试重启:)

四、拉取Fabric源码

  创建一个专门的目录存放fabric:

$ mkdir -p ~/go/src/github.com/hyperledger 
$ cd ~/go/src/github.com/hyperledger 

  拉取fabric源码:

$ git clone https://github.com/hyperledger/fabric.git 

  这里其实我是在gitee上拉取的,因为国内的话速度会快一些,在这里也推荐大家可以通过gitee拉取,把后面的地址换成gitee上的下载地址就可以了

  之后需要切换当前fabric的分支:

$ cd ./fabric
$ git branch -a  
$ git checkout v2.3.0

五、拉取fabric-samples

  1.配置镜像加速器

  建议使用阿里云的加速器:https://cr.console.aliyun.com/cn-hangzhou/instances/mirrors

$ sudo mkdir -p /etc/docker
$ sudo tee /etc/docker/daemon.json <<-\'EOF\'
{
  "registry-mirrors": ["你的加速器地址"]
}
EOF
$ sudo systemctl daemon-reload
$ sudo systemctl restart docker

  2.拉取依赖项

  ①直接拉取(需要vpn)

  在 ./fabric/scripts 中找到 bootstrap.sh 脚本,将该脚本复制到fabric同级目录下,运行以下命令:

$ ./bootstrap.sh 2.3.0 1.4.9 0.4.18

 

  此命令中 “2.3.0”对应fabric版本,“1.4.9”对应fabric-ca版本,“0.4.18”对应fabric Docker版本,也可以默认执行:

$ ./bootstrap.sh

 

  结果如下图:

  

   

 

   ②手动安装(适用于大多数情况)

  如果上面的方法下载速度极慢,可以考虑自己动手丰衣足食,具体步骤如下:

  首先分析一下 bootstrap.sh 文件:

  

 

   可以看出该脚本主要做三件事:1.克隆fabric-samples 2.拉取fabric二进制文件 3.拉取fabric docker镜像 ;所以接下来我们自己手动完成这三件事就好:

  Ⅰ.克隆fabric-samples

  同之前克隆fabric,我是从gitee上克隆(速度快一点),这里提供从GitHub上克隆的代码:

$ git clone https://github.com/hyperledger/fabric-samples.git
$ cd ./fabric-samples
$ git branch -a
$ git checkout master

 

   Ⅱ. 下载可执行二进制文件

  这一步是最容易卡关的,首先查看bootstrap脚本:

pullBinaries() {
    echo "===> Downloading version ${FABRIC_TAG} platform specific fabric binaries"
    download "${BINARY_FILE}" "https://github.com/hyperledger/fabric/releases/download/v${VERSION}/${BINARY_FILE}"
    if [ $? -eq 22 ]; then
        echo
        echo "------> ${FABRIC_TAG} platform specific fabric binary is not available to download <----"
        echo
        exit
    fi

    echo "===> Downloading version ${CA_TAG} platform specific fabric-ca-client binary"
    download "${CA_BINARY_FILE}" "https://github.com/hyperledger/fabric-ca/releases/download/v${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
        exit
    fi
}

 

  可以看到脚本是从两个站点下载的,那么我们直接去站点上下载文件就好了:

  

 

   这是fabric的二进制文件,还要下载fabric-ca的二进制文件,下载好以后在目录下解压,fabric解压后是一个 bin 文件夹和一个 config 文件夹;fabric-ca 解压后是一个 bin 文件夹,将两个 bin 文件夹合并在一起,将合并后的 bin 文件夹和config 文件夹一起放入 fabric-samples 文件夹下:

  

 

  

 

   

 

   Ⅲ. 下载fabric docker镜像

  这一步可以通过bootstrap脚本运行,首先修改 bootstrap.sh 文件:

  

 

   没错,把前两步注释掉只运行最后一步就好了:

$ ./bootstrap.sh 2.3.0 1.4.9 0.4.18

 

  这样所有依赖项就都安装好了,我们下一步就可以开始测试了。

  注:Fabric官方文档中给的方法是用cURL,但是不适合国内用户

六、测试

  打开 fabric-samples下的 test-network 文件夹:

$ cd fabric-samples/test-network

 

  在fabric-samples 2.0版本后用test-network 代替了原本的 first-network ,我们采用最新版本作为实例:

  

 

   我们运行 network.sh 文件:

$ ./network.sh up

 

  结果如下:

  

 

  说明fabric安装成功,成功后可以再关闭该网络:

$  ./network.sh down

 

  补充说明:network.sh 具有多种功能,以上展示的仅仅是建立示例网络功能,还可以通过该脚本建立通道、安装链码,具体可见该脚本内容或看我以后的博客。

七、配置环境变量

  将 fabric-samples/bin 加入环境变量,方便使用:

$ sudo gedit /etc/profile

 

  再该文件最后添加:

export PATH=$PATH:$GOROOT/bin:$GOPATH/bin:$HOME/go/src/github.com/hyperledger/fabric-samples/bin

 

  最后如图:

  

 

  然后使用source命令使修改生效:

$ source /etc/profile

 

  验证是否生效(未生效则重启虚拟机):

$ fabric-ca-client version
fabric-ca-client:
 Version: 1.4.9
 Go version: go1.13.12
 OS/Arch: linux/amd64

   注:这里发现go语言版本为1.13.12,我们实际环境中go语言版本为1.13.15,看来之前的安装确实无影响

八、结束语

  本篇博客到此结束,感谢大家耐心看到这里,如果有什么问题可以评论留言。通过这篇博客我深深体会到分享不易,在此感谢那些坚持写博客分享的大神!

  参考博客:https://www.cnblogs.com/zongmin/p/11635686.html

       Fabric官方文档