🧭
区块链技术指南
  • 前言
  • 修订记录
  • 如何贡献
  • 区块链的诞生
    • 记账科技的千年演化
    • 分布式记账与区块链
    • 集大成者的比特币
    • 区块链的商业价值
    • 本章小结
  • 核心技术概览
    • 定义与原理
    • 技术的演化与分类
    • 关键问题和挑战
    • 趋势与展望
    • 认识上的误区
    • 本章小结
  • 典型应用场景
    • 应用场景概览
    • 金融服务
    • 征信管理
    • 权属管理与溯源
    • 资源共享
    • 物流与供应链
    • 物联网
    • 数字艺术品和 NFT
    • 其它场景
    • 本章小结
  • 分布式系统核心技术
    • 一致性问题
    • 共识算法
    • FLP 不可能原理
    • CAP 原理
    • ACID 原则与多阶段提交
    • Paxos 算法与 Raft 算法
    • 拜占庭问题与算法
    • 可靠性指标
    • 本章小结
  • 密码学与安全技术
    • 密码学简史
    • Hash 算法与数字摘要
    • 加解密算法
    • 消息认证码与数字签名
    • 数字证书
    • PKI 体系
    • Merkle 树结构
    • Bloom Filter 结构
    • 同态加密
    • 其它技术
    • 本章小结
  • 比特币 —— 初露锋芒的区块链
    • 比特币项目简介
    • 比特币诞生背景
    • 工作原理
    • 挖矿过程
    • 共识机制
    • 闪电网络
    • 侧链
    • 热门问题
    • 相关工具
    • 本章小结
  • 以太坊 —— 挣脱加密货币的枷锁
    • 以太坊项目简介
    • 核心概念
    • 主要设计
    • 相关工具
    • 安装客户端
    • 使用智能合约
    • 智能合约案例:投票
    • 本章小结
  • 超级账本 —— 面向企业的分布式账本
    • 超级账本项目简介
    • 社区组织结构
    • 顶级项目介绍
    • 开发必备工具
    • 贡献代码
    • 本章小结
  • Fabric 安装与部署
    • 简介
    • 本地编译组件
    • 容器方式获取
    • 本地方式启动 Fabric 网络
    • 容器方式启动 Fabric 网络
    • 本章小结
  • 管理 Fabric 网络
    • 简介
    • 使用通道
    • 管理节点
    • 管理链上代码
    • 监听网络事件
    • 自动发现网络信息
    • 使用运维服务
    • 如何升级网络版本
    • 使用 SDK
    • 注意事项与最佳实践
    • 本章小结
  • 智能合约开发
    • 简介
    • 链码概念与结构
    • 示例一:信息公证
    • 示例二:交易资产
    • 示例三:数字货币发行与管理
    • 示例四:学历认证
    • 示例五:社区能源共享
    • 小结
  • Fabric 架构与设计
    • 简介
    • 架构设计
    • 消息协议
    • 小结
  • 区块链服务平台设计
    • 简介
    • IBM Bluemix 云区块链服务
    • 微软 Azure 云区块链服务
    • 使用超级账本 Cello 搭建区块链服务
    • 本章小结
  • 性能与评测
    • 简介
    • Hyperledger Fabric v0.6
    • 小结
  • 附录
    • 术语
    • 常见问题
    • Go 语言开发相关
      • 安装与配置 Golang 环境
      • 编辑器与 IDE
      • 高效开发工具
      • 依赖管理
    • ProtoBuf 与 gRPC
    • 参考资源链接
由 GitBook 提供支持
在本页
  • 环境配置
  • 操作系统
  • 安装 Go 语言环境
  • 安装依赖包
  • 安装 Docker 环境
  • 获取代码
  • 编译安装 Peer 组件
  • 编译安装 Orderer 组件
  • 编译安装 Fabric CA 组件
  • 编译安装配置辅助工具
  • 安装 Protobuf 支持和 Go 语言相关工具
  • 示例配置

这有帮助吗?

在GitHub上编辑
  1. Fabric 安装与部署

本地编译组件

上一页简介下一页容器方式获取

最后更新于3年前

这有帮助吗?

本地编译生成 Fabric 网络的各个组件,可以形成更直观的认识。Fabric 采用 Go 语言实现,推荐使用 Golang 1.10+ 版本进行编译。

下面将讲解如何编译生成 fabric-peer、fabric-orderer 和 fabric-ca 等组件的二进制文件,以及如何安装一些配置和开发辅助工具。如果用户在多服务器环境下进行部署,需要注意将文件复制到对应的服务器上。

环境配置

操作系统

常见的 Linux 操作系统发行版(包括 Ubuntu、Redhat、CentOS 等)和 macOS 等都可以支持 Fabric。

内核推荐 3.10+ 版本,支持 64 位环境。下面将默认以 Ubuntu 18.04 操作系统为例进行讲解。

注:运行 Fabric 节点需要的资源并不苛刻,作为实验,Fabric 节点甚至可以在树莓派(Raspberry Pi)上正常运行。但生产环境中往往需要较高的 CPU 和内存资源。

安装 Go 语言环境

可以访问 网站下载压缩包进行安装。不推荐使用自带的包管理器安装,版本往往比较旧。

如下载最新的 Go 1.13.4 稳定版本,可以采用如下命令:

$ curl -O https://dl.google.com/go/go1.13.4.linux-amd64.tar.gz

下载完成后,解压目录,并移动到合适的位置(如 /usr/local):

$ tar -xvf go1.13.4.linux-amd64.tar.gz
$ sudo mv go /usr/local

配置 GOPATH 环境变量,同时可以加入 .bash_profile 文件中以长期生效:

export GOPATH=YOUR_LOCAL_GO_PATH/Go
export PATH=$PATH:/usr/local/go/bin:$GOPATH/bin

此时,可以通过 go version 命令验证安装是否成功:

$ go version

go version go1.13.4 linux/amd64

安装依赖包

编译 Fabric 代码依赖一些开发库,可以通过如下命令安装:

$ sudo apt-get update \
    && sudo apt-get install -y libsnappy-dev zlib1g-dev libbz2-dev libyaml-dev libltdl-dev libtool

安装 Docker 环境

Fabric 目前采用 Docker 容器作为链码执行环境,因此即使在本地运行,Peer 节点上也需要安装 Docker 环境,推荐使用 1.18 或者更新的版本。

Linux 操作系统下可以通过如下命令来安装 Docker 最新版本:

$ curl -fsSL https://get.docker.com/ | sh

macOS 可以访问 https://docs.docker.com/docker-for-mac/install 下载 Docker for Mac 安装包自行安装:

获取代码

目前,Fabric 官方仓库托管在 Github 仓库(github.com/hyperledger/fabric)中供下载使用。

如果使用 1.13 之前版本的 Go 环境,需要将 Fabric 项目放到 $GOPATH 路径下。如下命令所示,创建 $GOPATH/src/github.com/hyperledger 目录结构并切换到该路径:

$ mkdir -p $GOPATH/src/github.com/hyperledger
$ cd $GOPATH/src/github.com/hyperledger

获取 Peer 和 Orderer 组件编译所需要的代码,两者目前在同一个 fabric 仓库中:

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

为节约下载时间,读者可以指定 --single-branch -b master --depth 1 命令选项来指定只获取 master 分支最新代码:

$ git clone --single-branch -b master --depth 1 https://github.com/hyperledger/fabric.git

Fabric CA 组件在独立的 fabric-ca 仓库中,可以通过如下命令获取:

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

读者也可以直接访问 https://github.com/hyperledger/fabric/releases 和 https://github.com/hyperledger/fabric-ca/releases 来下载特定的 fabric 和 fabric-ca 发行版。

最后,检查确认 fabric 和 fabric-ca 两个仓库下载成功:

$ ls $GOPATH/src/github.com/hyperledger
fabric fabric-ca

编译安装 Peer 组件

配置版本号和编译参数:

$ PROJECT_VERSION=2.0.0
$ LD_FLAGS="-X github.com/hyperledger/fabric/common/metadata.Version=${PROJECT_VERSION} \
             -X github.com/hyperledger/fabric/common/metadata.BaseDockerLabel=org.hyperledger.fabric \
             -X github.com/hyperledger/fabric/common/metadata.DockerNamespace=hyperledger \
             -X github.com/hyperledger/fabric/common/metadata.BaseDockerNamespace=hyperledger"

通过如下命令编译并安装 fabric 的 peer 组件到 $GOPATH/bin 下:

$ CGO_CFLAGS=" " go install -tags "" -ldflags "$LD_FLAGS" \
    github.com/hyperledger/fabric/cmd/peer

当然,用户也可直接使用源码中的 Makefile 来进行编译,相关命令如下:

$ make peer

这种情况下编译生成的 peer 组件会默认放在 build/bin 路径下。

编译安装 Orderer 组件

通过如下命令编译并安装 fabric orderer 组件到 $GOPATH/bin 下:

$ CGO_CFLAGS=" " go install -tags "" -ldflags "$LD_FLAGS" \
    github.com/hyperledger/fabric/cmd/orderer

同样的,也可使用 Makefile 来编译安装 orderer 组件到 build/bin 路径下:

$ make orderer

编译安装 Fabric CA 组件

采用如下命令编译并安装 fabric-ca 相关组件到 $GOPATH/bin 下:

$ go install -ldflags "-X github.com/hyperledger/fabric-ca/lib/metadata.Version=$PROJECT_VERSION -linkmode external -extldflags '-static -lpthread'" \
    github.com/hyperledger/fabric-ca/cmd/...

编译安装配置辅助工具

Fabric 中还提供了一系列配置辅助工具,包括 cryptogen(本地生成组织结构和身份文件)、configtxgen(生成配置区块和配置交易)、configtxlator(解析转换配置信息)、discover(拓扑探测)、idemixgen(Idemix 证书生成)等,可以通过如下命令来快速编译和安装:

# 编译安装 cryptogen,等价于执行 make cryptogen
$ CGO_CFLAGS=" " \
    go install -tags "" -ldflags "$LD_FLAGS" \
    github.com/hyperledger/fabric/cmd/cryptogen

# 编译安装 configtxgen,等价于执行 make configtxgen
$ CGO_CFLAGS=" " \
    go install -tags "" -ldflags "$LD_FLAGS" \
    github.com/hyperledger/fabric/cmd/configtxgen

# 编译安装 configtxlator,等价于执行 make configtxlator
$ CGO_CFLAGS=" " \
    go install -tags "" -ldflags "$LD_FLAGS" \
    github.com/hyperledger/fabric/cmd/configtxlator

# 编译安装 discover,等价于执行 make discover
$ CGO_CFLAGS=" " \
    go install -tags "" -ldflags "$LD_FLAGS" \
    github.com/hyperledger/fabric/cmd/discover

# 编译安装 idemixgen,等价于执行 make idemixgen
$ CGO_CFLAGS=" " \
    go install -tags "" -ldflags "$LD_FLAGS" \
    github.com/hyperledger/fabric/cmd/idemixgen

另外,fabric 项目还提供了不少常见的编译命令,可以参考 Makefile 文件,例如编译所有的二进制文件可以使用如下命令:

$ make native

安装 Protobuf 支持和 Go 语言相关工具

Fabric 代码由 Go 语言构建,开发者可以选择安装如下的 Go 语言相关工具,方便开发和调试:

$ go get github.com/golang/protobuf/protoc-gen-go \
    && go get github.com/maxbrunsfeld/counterfeiter/v6 \
    && go get github.com/axw/gocov/... \
    && go get github.com/AlekSi/gocov-xml \
    && go get golang.org/x/tools/cmd/goimports \
    && go get golang.org/x/lint/golint \
    && go get github.com/estesp/manifest-tool \
    && go get github.com/client9/misspell/cmd/misspell \
    && go get github.com/onsi/ginkgo/ginkgo

示例配置

sampleconfig 目录下包括了一些示例配置文件,可以作为参考,包括:

  • configtx.yaml:示例配置区块生成文件夹;

  • orderer.yaml:示例 Orderer 节点配置文件;

  • core.yaml:示例 Peer 节点配置文件;

  • msp/config.yaml:示例组织身份配置文件;

  • msp/:示例证书和秘钥文件。

可以将它们复制到默认的配置目录(/etc/hyperledger/fabric)下进行使用。

golang.org