从0搭建Fabric网络

环境版本
操作系统Ubuntu 16.04
git2.7.4
Docker18.09.7
Docker-Compose1.8.0
Golang1.14.3
npm(可选)5.6.0
node(可选)v8.11.1
Fabric (docker镜像)2.1

1. 提前准备

sudo apt update
  1. git
sudo apt install git
  1. cURL
sudo apt install curl
  1. Docker
sudo apt install docker.io

​ 配置 Docker 国内镜像

sudo vim /etc/docker/daemon.json

## 在文件中加入
{
"registry-mirrors":["https://docker.mirrors.ustc.edu.cn"]
}

## 重载所有修改过的配置⽂文件
sudo systemctl daemon-reload
## 重启Docker服务
sudo systemctl restart docker
  1. Docker-compose
sudo apt install docker-compose
  1. Golang
cd /root
wget https://dl.google.com/go/go1.14.3.linux-amd64.tar.gz
sudo tar -zxvf go1.14.3.linux-amd64.tar.gz -C /usr/local/
vim /etc/profile
######
export GOPATH=$HOME/go
export GOROOT=/usr/local/go
export GOPROXY=https://goproxy.cn,direct
export GOTOOLS=$GOROOT/pkg/tool
export GO111MODULE=on
export PATH=$PATH:$GOROOT/bin:$GOPATH/bin
######

## 退出编辑,使配置生效
source /etc/profile
  1. Node和npm

Node与npm工具为可选安装工具。如果后期使用Node.js的Hyperledger Fabric SDK开发Hyperledger Fabric的应用程序,则需要安装;否则无需安装。

​ 6.1 安装nvm(Node Version Manager) Node.js的版本管理软件

curl -o- https://raw.githubusercontent.com/creationix/nvm/v0.33.10/install.sh | bash

## 设置环境变量
export NVM_DIR="$HOME/.nvm"
[ -s "$NVM_DIR/nvm.sh" ] && \. "$NVM_DIR/nvm.sh"

​ 6.2 安装Node

## 安装Node时须注意:安装版本为8.9.x或以上的Node.js,Fabric目前不支持9.x系列的Node.js版本.
nvm install v8.11.1

2. 安装Fabric

2.1 方式一:下载 Fabric-samples 与二进制文件

在/root下创建 hyfa 目录并进入该目录

## 新建脚本文件,将 https://github.com/hyperledger/fabric/blob/master/scripts/bootstrap.sh 中的内容拷贝保存退出。
vim bootstrap.sh

## 赋予可执行权限
chmod +x bootstrap.sh

## 执行
# 1.如果在当前目录中没有 hyperledger/fabric-samples,则从 github.com 克隆 hyperledger/fabric-samples 存储库
# 2.使用 checkout 签出对应指定的版本标签
# 3.将指定版本的Hyperledger Fabric平台特定的二进制文件和配置文件安装到 fabric-samples 存储库的根目录中
# 4.下载指定版本的 Hyperledger Fabric docker 镜像文件
# 5.将下载的 docker 镜像文件标记为 "latest"
./bootstrap.sh   # 下载最新镜像
./bootstrap.sh 1.2.0  # 下载Fabric 1.2.0 版本

2.2 方式二: 以源代码的方式进行本地编译安装

mkdir -p $GOPATH/src/github.com/hyperledger/
cd $GOPATH/src/github.com/hyperledger/
git clone https://github.com/hyperledger/fabric.git ## 直接从github clone会很慢,可以去码云clone
git checkout -b v1.2.0 # 切换到 1.2.0版本 

编写 Makefile 指定相应的版本

vim Makefile

###### 
BASE_VERSION = 1.2.1
PREV_VERSION = 1.2.0
CHAINTOOL_RELEASE=1.1.1
BASEIMAGE_RELEASE=0.4.10

2.1 编译 Orderer

cd $GOPATH/src/github.com/hyperledger/fabric/
make orderer

make_orderer

2.2 编译 Peer

make peer

.build_bin

查看 .build/bin目录可以看到生成了 orderer 和 peer

make_orderer

2.3 编译生成相关工具

Hyperledger Fabric 除了 OrdererPeer 之外,还为我们提供了在搭建网络环境时所需要的一系列辅助工具:

  • **configtxgen:**生成初始区块及通道交易配置文件的工具
  • **cryptogen:**生成组织结构及相应的的身份文件的工具
  • **configtxlator:**将指定的文件在二进制格式与JSON格式之间进行转换

编译生成这些工具同样使用 make 即可:

make configtxgen 
make cryptogen 
make configtxlator 

make_others

2.4 编译生成 docker 镜像

安装依赖的 libltdl-dev 库:

sudo apt-get install libltdl-dev

获取镜像方式:

## 指定 fabric 版本
export FABRIC_TAG=1.2.0
export CA_TAG=1.2.0
export THIRDPARTY_IMAGE_VERSION=0.4.10

docker pull hyperledger/fabric-peer:$FABRIC_TAG \
docker pull hyperledger/fabric-orderer:$FABRIC_TAG \
docker pull hyperledger/fabric-ca:$CA_TAG \
docker pull hyperledger/fabric-tools:$FABRIC_TAG \
docker pull hyperledger/fabric-ccenv:$FABRIC_TAG \
docker pull hyperledger/fabric-baseimage:$THIRDPARTY_IMAGE_VERSION\
docker pull hyperledger/fabric-baseos:$THIRDPARTY_IMAGE_VERSION \
docker pull hyperledger/fabric-couchdb:$THIRDPARTY_IMAGE_VERSION \
docker pull hyperledger/fabric-kafka:$THIRDPARTY_IMAGE_VERSION \
docker pull hyperledger/fabric-zookeeper:$THIRDPARTY_IMAGE_VERSION

3. 测试网络

搭建 Hyperledger Fabric 网络环境可以有两种方式实现:

  1. 使用自动化脚本实现

    使用一个名为自动化脚本 byfn.sh 的脚本文件自动构建一个简易的 Hyperledger Fabric 网络环境并引导启动,且自动生成相应的一些配置文件,一般作为测试环境使用,本文主要就是讲解此方式。

  2. 手动实现

    为了适应不同的且较为复杂的场景,自动化脚本方式就有些力不从心,这时,必须由开发/运维人员根据不同的情况,手动输入相关命令构建一个相当复杂的网络环境。此种实现方式本文暂且不详细说明。

3.1 测试 Fabric 环境

cd /root/hyfa/fabric-samples/first-network

./byfn.sh --help
#### 部分输入内容如下:
up:启动
down:清除网络
restart:重新启动
generate:生成证书及创世区块
upgrade:将网络从1.1.x升级到1.2.x

-c:用于指定channelName,默认值"mychannel"
-t:CLI timeout时间,默认值10
-d:延迟启动,默认值3
-f:使用指定的网络拓扑结构文件,默认使用docker-compose-cli.yaml
-s:指定使用的数据库,可选 goleveldb/couchdb
-l:指定chaincode使用的语言,可选golang/node
-i:指定镜像tag,默认 "latest"
详细参数可通过./byfn.sh help查看

3.2 构建第一个Fabric网络

3.2.1 生成证书和秘钥

sudo ./byfn.sh -m generate

命令成功执行后会生成许多 docker 容器,包括1个orderer + 4个peer + 1个CLI的网络结构,4个peer包含在2个org中。

3.2.2 启动网络

sudo ./byfn.sh -m up

3.2.3 关闭网络

sudo ./byfn.sh -m down

关闭网络之后, 将杀死容器,删除加密文件,并从Docker Registry中删除链码图像。

sudo ./byfn.sh -m generate


 命令成功执行后会生成许多 docker 容器,包括1个orderer + 4个peer + 1个CLI的网络结构,4个peer包含在2个org中。 

### 3.2.2 启动网络

```sh
sudo ./byfn.sh -m up

3.2.3 关闭网络

sudo ./byfn.sh -m down

关闭网络之后, 将杀死容器,删除加密文件,并从Docker Registry中删除链码图像。

请在网络不再使用时,务必关闭网络,以防止后期启动网络时造成的错误。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值