环境 | 版本 |
---|---|
操作系统 | Ubuntu 16.04 |
git | 2.7.4 |
Docker | 18.09.7 |
Docker-Compose | 1.8.0 |
Golang | 1.14.3 |
npm(可选) | 5.6.0 |
node(可选) | v8.11.1 |
Fabric (docker镜像) | 2.1 |
1. 提前准备
sudo apt update
- git
sudo apt install git
- cURL
sudo apt install curl
- 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
- Docker-compose
sudo apt install docker-compose
- 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
- 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
2.2 编译 Peer
make peer
查看 .build/bin目录可以看到生成了 orderer 和 peer
2.3 编译生成相关工具
Hyperledger Fabric
除了 Orderer
和 Peer
之外,还为我们提供了在搭建网络环境时所需要的一系列辅助工具:
- **configtxgen:**生成初始区块及通道交易配置文件的工具
- **cryptogen:**生成组织结构及相应的的身份文件的工具
- **configtxlator:**将指定的文件在二进制格式与JSON格式之间进行转换
编译生成这些工具同样使用 make
即可:
make configtxgen
make cryptogen
make configtxlator
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
网络环境可以有两种方式实现:
-
使用自动化脚本实现
使用一个名为自动化脚本
byfn.sh
的脚本文件自动构建一个简易的Hyperledger Fabric
网络环境并引导启动,且自动生成相应的一些配置文件,一般作为测试环境使用,本文主要就是讲解此方式。 -
手动实现
为了适应不同的且较为复杂的场景,自动化脚本方式就有些力不从心,这时,必须由开发/运维人员根据不同的情况,手动输入相关命令构建一个相当复杂的网络环境。此种实现方式本文暂且不详细说明。
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中删除链码图像。
请在网络不再使用时,务必关闭网络,以防止后期启动网络时造成的错误。