部署测试fabric 2.0
测试环境配置如下:
- Fabric version: 2.0.0
- Centos 7
- Docker 18.03+
- Golang 1.13.7+
环境准备
安装Golang
- 下载golang
进入golang官网下载所需版本的文件。例如go1.13.8.linux-amd64.tar.gz
wget https://dl.google.com/go/go1.13.8.linux-amd64.tar.gz
- 解压至/usr/local文件夹
tar -C /usr/local -xzf go1.13.8.linux-amd64.tar.gz
- 创建go代码工作空间目录:$HOME/go
- 配置环境变量vim /etc/profile
export GOROOT=/usr/local/go #设置为go安装的路径 export GOPATH=$HOME/go #默认安装包的路径 export PATH=$PATH:$GOROOT/bin:$GOPATH/bin
- source /etc/profile使修改生效.
- 控制台输入命令
go
验证golang环境
安装docker
- 下载安装
建议下载
18.03.1-ce
及以上版本
官方地址:https://download.docker.com/linux/centos/7/x86_64/stable/Packages/
执行以下命令下载安装docker,过安装过程中出现依赖缺失异常可按照“安装依赖”进行补充。# 下载docker-ce-18.03.1.ce-1.el7.centos.x86_64.rpm curl -L "https://download.docker.com/linux/centos/7/x86_64/stable/Packages/docker-ce-18.03.1.ce-1.el7.centos.x86_64.rpm" -o docker-ce-18.03.1.ce-1.el7.centos.x86_64.rpm # 安装docker ce rpm -ivh docker-ce-18.03.1.ce-1.el7.centos.x86_64.rpm
- 安装依赖
首次安装docker环境的Centos 7环境或多或少会缺少一些docker的环境依赖。在实际安装过程中建议先尝试安装docker rpm包,当提示中缺少哪些依赖时针对性补充。其中多数依赖可通过yum进行安装,若安装环境无网络可根据以下列表下载依赖包后上传。
以下九个依赖是安装container-selinux所需要的,如果yum源中有这些依赖的话可以直接通过yum安装。
- libtool-ltdl-2.4.2-22.el7_3.x86_64.rpm
- audit-libs-python-2.8.5-4.el7.x86_64.rpm
- checkpolicy-2.5-8.el7.x86_64.rpm
- libcgroup-0.41-21.el7.x86_64.rpm
- libseccomp-2.3.1-3.el7.x86_64.rpm
- libsemanage-python-2.5-14.el7.x86_64.rpm
- policycoreutils-python-2.5-33.el7.x86_64.rpm
- python-IPy-0.75-6.el7.noarch.rpm
- setools-libs-3.3.8-4.el7.x86_64.rpm
- 启动
systemctl start docker
- 测试
docker version
安装docker-compose
- 下载可执行文件
sudo curl -L "https://github.com/docker/compose/releases/download/1.25.0/docker-compose-$(uname -s)-$(uname -m)" -o /usr/local/bin/docker-compose
- 上传
如果是没有网络环境的话可以将下载好的docker-compose可以指文件上传至
/usr/local/bin/
目录下,然后配置权限。sudo chmod +x /usr/local/bin/docker-compose sudo ln -s /usr/local/bin/docker-compose /usr/bin/docker-compose
- 测试
$ docker-compose --version docker-compose version 1.25.0, build 1110ad01
编译fabric
- 下载Fabric源码
创建目录”$GOPATH/src/github.com/hyperledger”并在该目录下执行以下命令克隆fabric代码。git clone -b master --depth=1 https://github.com/hyperledger/fabric.git && cd fabric
- 编译二进制文件
Fabric 2.0版本可以编译peer、orderer、configtxgen、configtxlator、cryptogen、idemixgen和discover种二进制文件。当需要编译某种二进制文件时执行”make 文件类型”即可,例如:make cryptogen。若需要编译全部二进制文件则执行”make all”命令。Make命令编译后的文件被输出到$GOPATH/src/github.com/hyperledger/fabric/build/bin目录下。
首次编译fabric时会因为网络原因无法下载
goalng.org/x/
下的一系列包,虽然有一些解决办法但是过程太过复杂不便叙述,以后仔细研究后再完善。 - 编译docker镜像
执行“docker ps”确认当前用户有权限使用docker后执行命令
make docker
即可编译docker镜像。或者执行make all命令即可 - Make all和make release
make all
和make release
命令会编译fabric的全部二进制文件和docker镜像。但是这两个命令编译后二进制文件的输出目录不同,make all输出到build文件夹,make release输出到release文件夹。
部署fabric节点
- 下载fabric-samples
git clone --depth=1 https://github.com/hyperledger/fabric-samples.git & cd fabric-samples
- 下载依赖文件
在fabric-samples父目录下执行以下命令,下载配置文件,二进制文件和docker镜像。
# Fetch bootstrap.sh from fabric repository using curl -sS https://raw.githubusercontent.com/hyperledger/fabric/master/scripts/bootstrap.sh -o ./scripts/bootstrap.sh # Change file mode to executable chmod +x ./scripts/bootstrap.sh # Download binaries and docker images ./scripts/bootstrap.sh 2.0.0 1.4.4 0.4.18
bootstrap.sh脚本执行后fabric-samples目录下会多出bin和config两个文件夹,其内容如下:
fabric-samples bin configtxgen configtxlator cryptogen discover fabric-ca-client fabric-ca-server idemixgen orderer peer config configtx.yaml core.yaml orderer.yaml
阅读bootstrap.sh脚本后不难发现,bootstrap.sh脚本做了以下内容:
- 下载fabric-samples代码;
- 下载fabric和fabric-ca编译后的二进制文件到fabric-samples/bin目录;
- 下载fabric默认配置文件到fabric-samples/config目录;
- 下载fabric的docker镜像。
执行bootstrap.sh时候发现国内网络下载docker镜像和二进制文件非常慢。所以建议使用源代码自行编译二进制文件和docker镜像。config目录下的配置文件在fabric源码文件中可以找到。
- 部署fabric测试网络
在fabric-samples/test-network目录下执行
./network.sh up
命令即可部署一个简单的fabric网络。节点配置如下:[holmes@iZwz97nz3217dqqunx8zmcZ test-network]$ docker ps -a CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES 281d0e65a3de hyperledger/fabric-orderer:latest "orderer" About an hour ago Up About an hour 0.0.0.0:7050->7050/tcp orderer.example.com 472708ce8376 hyperledger/fabric-peer:latest "peer node start" About an hour ago Up About an hour 7051/tcp, 0.0.0.0:9051->9051/tcp peer0.org2.example.com 9aa96ccb85a6 hyperledger/fabric-peer:latest "peer node start" About an hour ago Up About an hour 0.0.0.0:7051->7051/tcp peer0.org1.example.com
测试Fabric网络
- 创建通道
在fabric-samples/test-network目录下执行
./network.sh createChannel -c mychannel
创建名为mychannel的通道。 - 安装合约
在fabric-samples/test-network目录下执行
./network.sh deployCC
部署和调用测试示例中的合约。 - 调用合约
Fabric 2.0新特性测试
- 去中心化chaincode管理模式
- Chaincode不再依赖docker守护进程,可以作为外部服务独立运行
- 私有数据增强
- Couchdb增加缓存,提升couchdb性能
- 发布alpine版本docker镜像