Hyperledger fabric v1.0.0 环境部署过程

本文主要基于 Hyperledger fabric 的官方文档来搭建其实验环境,但官方文档对于很多步骤都有省略,结合网上比较新的博客,在一台 Ubuntu 14.04 机器(没用通过测试,换成了16.04的虚拟机)上来安装部署 fabric 的环境。

查看系统版本
$ cat /proc/version
Fabric环境部署1
切换至root用户
sudo -i

更换 apt 源

先备份 sources.list 文件:
$ sudo cp /etc/apt/sources.list /etc/apt/sources.list.bak
再修改 sources.list 文件(全部替换即可),换成阿里云的国内源:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
$ sudo vim /etc/apt/sources.list
deb-src http://archive.ubuntu.com/ubuntu xenial main restricted #Added by software-properties
deb http://mirrors.aliyun.com/ubuntu/ xenial main restricted
deb-src http://mirrors.aliyun.com/ubuntu/ xenial main restricted multiverse universe #Added by software-properties
deb http://mirrors.aliyun.com/ubuntu/ xenial-updates main restricted
deb-src http://mirrors.aliyun.com/ubuntu/ xenial-updates main restricted multiverse universe #Added by software-properties
deb http://mirrors.aliyun.com/ubuntu/ xenial universe
deb http://mirrors.aliyun.com/ubuntu/ xenial-updates universe
deb http://mirrors.aliyun.com/ubuntu/ xenial multiverse
deb http://mirrors.aliyun.com/ubuntu/ xenial-updates multiverse
deb http://mirrors.aliyun.com/ubuntu/ xenial-backports main restricted universe multiverse
deb-src http://mirrors.aliyun.com/ubuntu/ xenial-backports main restricted universe multiverse #Added by software-properties
deb http://archive.canonical.com/ubuntu xenial partner
deb-src http://archive.canonical.com/ubuntu xenial partner
deb http://mirrors.aliyun.com/ubuntu/ xenial-security main restricted
deb-src http://mirrors.aliyun.com/ubuntu/ xenial-security main restricted multiverse universe #Added by software-properties
deb http://mirrors.aliyun.com/ubuntu/ xenial-security universe
deb http://mirrors.aliyun.com/ubuntu/ xenial-security multiverse

最后更新一下源:
$ sudo apt-get update

安装 curl

Ubuntu一般默认是安装了 curl 的,可以通过以下命令验证:

$ curl -V
Fabric环境部署2

如果没有安装,则通过 apt-get 安装:

$ sudo apt-get install curl

安装 Docker

  • 由于 apt 源使用HTTPS以确保软件下载过程中不被篡改。因此,我们首先需要添加使用HTTPS传输的软件包以及CA证书。

    1
    2
    3
    4
    5
    $ sudo apt-get install \
    apt-transport-https \
    ca-certificates \
    curl \
    software-properties-common
  • 为了确认所下载软件包的合法性,需要添加软件源的 GPG 秘钥
    $ curl -fsSL https://mirrors.ustc.edu.cn/docker-ce/linux/ubuntu/gpg | sudo apt-key add -

  • 然后,我们需要向 sources.list 中添加 Docker 软件源

    1
    2
    3
    4
    $ sudo add-apt-repository \
    "deb [arch=amd64] https://mirrors.ustc.edu.cn/docker-ce/linux/ubuntu \
    $(lsb_release -cs) \
    stable"

    以上命令会添加稳定版本的Docker CE apt 镜像源。

  • 更新 apt 软件包缓存,并安装 docker-ce:

    $ sudo apt-get update
    $ sudo apt-get install docker-ce

  • 查看 Docker 版本:

    $ docker -v
    Fabric环境部署3

    满足官方文档中 Docker version 17.06.2-ce or greater is required 的要求。

  • 启动 Docker CE
    Ubuntu 16.04 使用:
    $ sudo systemctl enable docker
    $ sudo systemctl start docker

    Ubuntu 14.04 使用:
    $service docker start

  • 建立 docker 用户组

    默认情况下,docker 命令会使用 Unix socket 与 Docker 引擎通讯。而只有 root 用户和 docker 组的用户才可以访问 Docker 引擎的 Unix socket。出于安全考虑,一般 Linux 系统上不会直接使用 root 用户。因此,更好地做法是将需要使用 docker 的用户加入 docker 用户组。
    $ sudo groupadd docker
    其实一般按照上面的方法安装 Docker 后就已经创建好 docker 用户组了,可以使用 $ cat /etc/group | grep docker 命令来验证,所以就不需要再建立 docker 用户组了,再建立也会报错提示用户组已存在的。

  • 将当前用户加入 docker 用户组:

    $ sudo usermod -aG docker $USER
    下次登录时即可方便的使用 docker 命令。

  • 测试 Docker 是否安装正确

    $ docker run hello-world
    Fabric环境部署4

  • 配置镜像加速器

    国内从 Docker Hub 拉取镜像有时会遇到困难,此时可以配置镜像加速器。Docker 官方和国内很多云服务商都提供了国内加速器服务,例如:

    1. Docker 官方提供的中国 registry mirror https://registry.docker-cn.com
    2. 七牛云加速器 https://reg-mirror.qiniu.com/
当配置某一个加速器地址之后,若发现拉取不到镜像,请切换到另一个加速器地址。国内各大云服务商均提供了 Docker 镜像加速服务,建议根据运行 Docker 的云平台选择对应的镜像加速服务。

我们以 Docker 官方加速器 https://registry.docker-cn.com 为例进行介绍。

在 /etc/docker/daemon.json 中写入如下内容(如果文件不存在则创建)

1
2
3
4
5
    {
"registry-mirrors": [
"https://registry.docker-cn.com"
]
}
之后重新启动服务

Ubuntu16.04:
$ sudo systemctl daemon-reload
$ sudo systemctl restart docker
Ubuntu14.04:
$ service docker restart

安装 Docker Compose

通过二进制包来安装,从 官方 GitHub Release 处直接下载编译好的二进制文件即可。

`$ sudo curl -L https://github.com/docker/compose/releases/download/1.22.0/docker-compose-$(uname -s)-$(uname -m) -o /usr/local/bin/docker-compose`

`$ sudo chmod +x /usr/local/bin/docker-compose`
  • 查看 Docker compose 版本

    $ docker-compose --version
    Fabric环境部署5

    满足官方文档中 Docker Compose version 1.14.0 or greater 的要求。

安装 Go 语言环境

Hyperledger Fabric 在很多组件中使用了 Go 语言,并且 Hyperledger fabric 1.2.0 要求使用的是 GO version 1.10.x ,所以需要在我们的环境中安装对应的 Go 语言。

  • 从官网下载 1.10.x 版本的 Linux 平台的源码包

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

  • 解压到指定目录

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

  • 先创建 Go 的工作目录

    $ mkdir ~/go

  • 配置环境变量

    $ vi ~/.bashrc
    添加

    1
    2
    3
    export GOROOT=/usr/local/go
    export GOPATH=/home/zkq/go
    export PATH=$PATH:$GOROOT/bin:$GOPATH/bin

    保存并使生效:

    $ source ~/.bashrc

  • 测试 Go 的 demo 程序

    $ cd ~/go

    $ vi hello.go

    1
    2
    3
    4
    5
    6
    7
    package main

    import "fmt"

    func main() {
    fmt.Printf("hello world\n")
    }

    $ go build hello.go

    $ ./hello
    Fabric环境部署6

    在这里遇到一个问题(在虚拟机上没遇到这个问题):
    Fabric环境部署7
    在网上查到的解决办法是:解决办法
    $ unset GOROOT

Fabric 源码下载

  • 首先创建存放源码的文件夹:

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

  • 进入刚创建的目录:
    $cd ~/go/src/github.com/hyperledger
  • 使用 Git 下载完整源码(有点慢):

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

  • 进入 fabric 目录查看版本分支并切换分支:

    $ cd fabric
    $ git branch

  • release-1.2
    $ git checkout v1.0.0
    由于在 release-1.2 版本中碰到没有解决的问题,所以先切换到 v1.0.0 来完成搭建并测试的过程。

Fabric环境部署8

Fabric Docker 镜像下载

进入 ~/go/src/github.com/hyperledger/fabrci/examples/e2e_cli/ 目录,完成镜像下载,执行命令:

$ cd ~/go/src/github.com/hyperledger/fabrci/examples/e2e_cli/
$ ls
Fabric环境部署9

$ source download-dockerimages.sh -c x86_64-1.0.0 -f x86_64-1.0.0 (时间较久,耐心等待)
$ docker image list

Fabric环境部署10

启动 fabric 网络并完成 chaincode 测试

还是在刚刚的 e2e_cli 文件加下,执行:

$ ./network_setup.sh up

最后出现上面字符说明 fabric 网络已经启动并完成了 chaincode 的测试。这一步没有成功,所以上面图片暂时没有。