hyperledger-fabric 环境安装与源码编译

克隆源码并编译 hyperledger fabric 2.x 区块链

环境准备

以下内容基于 CentOS 7,其他平台使用类似方式安装 GolangDocker 打包即可

Golang 安装

可选安装,使用 Golang 编译出 fabric 二进制工具。如不在需要二进制工具,仅需编译镜像部署可跳过本步骤。

根据 fabric 代码库中 Makefile 中要求 GO_VER = 1.14.4 所以我们也下载对应版本的 Golang

shell
1
wget https://golang.org/dl/go1.14.4.linux-amd64.tar.gz

解压 Golang 到 /usr/share/ 目录下

shell
1
tar -zxvf go1.14.4.linux-amd64.tar.gz -C /usr/share/

添加 Golang 到系统环境中

shell
1
2
3
4
5
6
7
8
9
cat > /etc/profile.d/go.sh << EOF
export GOPATH=/opt/gopath/
export PATH=\$PATH:\$GOPATH/bin:/usr/share/go/bin
export GO111MODULE=on
export GOPROXY=https://mirrors.aliyun.com/goproxy/
EOF

source /etc/profile
go version

安装 gcc

shell
1
yum -y install gcc

Docker 安装

hyperledger fabric 部署时使用 docker 部署,编译时根据参数选项直接编译打包为 docker image

  • 安装 Docker

    shell
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    # step 1: 安装必要的一些系统工具
    yum install -y yum-utils device-mapper-persistent-data lvm2
    # Step 2: 添加软件源信息
    yum-config-manager --add-repo https://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo
    # Step 3: 更新并安装Docker-CE
    yum makecache fast
    yum -y install docker-ce
    # Step 4: 开启Docker服务
    systemctl start docker
    systemctl enable docker
  • 安装 Docker-compose

    shell
    1
    2
    3
    4
    wget -O /usr/local/bin/docker-compose \
    https://github.com/docker/compose/releases/download/1.27.4/docker-compose-Linux-x86_64
    chmod +x /usr/local/bin/docker-compose
    docker-compose -v

克隆代码

安装 git 工具

使用如下命令直接安装 git,或者参考 CentOS7 编译安装新版本git 编译安装新版本 git

shell
1
yum -y install git

克隆 hyperledger fabric/opt/codes 目录下

shell
1
2
mkdir /opt/codes
git clone https://github.com/hyperledger/fabric.git /opt/codes/fabric

编译

编译打包为镜像

  1. 进入 fabric 目录

    shell
    1
    cd /opt/codes/fabric
  2. 切换分支到 2.2

    shell
    1
    git checkout release-2.2
  3. 编译 docker 镜像前,先修改基础镜像 alpine 的源为国内源

    shell
    1
    2
    find images/ -type f -name 'Dockerfile' | xargs \
    sed -i '/apk add/i\RUN sed -i "s?dl-cdn.alpinelinux.org?mirrors.aliyun.com?g" /etc/apk/repositories'
  4. 通过 Makefile 编译代码,生成部署使用的镜像文件

    shell
    1
    make docker-clean docker

    如果在编译时出现如下错误提示:

    error
    1
    2
    3
    4
    5
    6
    7
    8
    9
    fetch http://mirrors.aliyun.com/alpine/v3.12/main/x86_64/APKINDEX.tar.gz
    WARNING: Ignoring http://mirrors.aliyun.com/alpine/v3.12/main/x86_64/APKINDEX.tar.gz: temporary error (try again later)
    fetch http://mirrors.aliyun.com/alpine/v3.12/community/x86_64/APKINDEX.tar.gz
    WARNING: Ignoring http://mirrors.aliyun.com/alpine/v3.12/community/x86_64/APKINDEX.tar.gz: temporary error (try again later)
    ERROR: unsatisfiable constraints:
    tzdata (missing):
    required by: world[tzdata]
    Removing intermediate container 963aecc0d5e1
    The command '/bin/sh -c apk add --no-cache tzdata' returned a non-zero code: 1

    可能由于 docker 网络解析问题,尝试添加 DNS 后再次编译

    shell
    1
    2
    3
    4
    5
    6
    7
    cat > /etc/docker/daemon.json <<EOF
    {
    "dns": ["223.5.5.5"]
    }
    EOF

    systemctl restart docker

    编译成功后可看到如下图所示镜像文件

本地编译

如需直接编译出 fabric 相关工具,也可以在本地直接编译(需要 Golang 环境)

  • 当前平台:make release-clean release

  • 多平台:make release-clean release-all

多平台二进制文件示例如下(包含 OSXLinuxWindows):

release
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
release
├── darwin-amd64
│   └── bin
│   ├── configtxgen
│   ├── configtxlator
│   ├── cryptogen
│   ├── discover
│   ├── idemixgen
│   ├── orderer
│   └── peer
├── linux-amd64
│   └── bin
│   ├── configtxgen
│   ├── configtxlator
│   ├── cryptogen
│   ├── discover
│   ├── idemixgen
│   ├── orderer
│   └── peer
└── windows-amd64
└── bin
├── configtxgen
├── configtxlator
├── cryptogen
├── discover
├── idemixgen
├── orderer
└── peer

添加编译的当前平台的二进制文件到系统环境变量中,即可使用 fabric 相关工具

shell
1
2
echo "PATH=\$PATH:$PWD/release/linux-amd64/bin/" > /etc/profile.d/fabric.sh
source /etc/profile
评论

:D 一言句子获取中...

加载中,最新评论有1分钟缓存...