搭建Fabric v1.4.0单机版

Posted sanqima

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了搭建Fabric v1.4.0单机版相关的知识,希望对你有一定的参考价值。

    Fabric是一个开源的、有许可机制的、企业级的分布式账本,它支持智能合约、共识可插拔、子网数据隔离、身份认证等功能,应用于银行、金融、保险、医疗、人力资源、供应链、和数字音乐分发等领域。这里,介绍在Ubuntu16.04上安装Fabric v1.4.0单机版本,步骤如下。

1、软件准备

    Fabric需要docker、go等软件的支持,具体如下:

  • curl 7.47以上版本
  • git 2.7.4以上版本
  • docker 17.06以上版本
  • docker-compose 1.14以上版本
  • go 1.11 以上版本

1.1 安装curl

sudo apt-get install curl

1.2 安装git

sudo apt-get install git

1.3 安装docker

    a)下载docker

sudo apt-get update
sudo apt-get install apt-transport-https ca-certificates software-properties-common
curl -fsSL https://download.docker.com/linux/ubuntu/gpg | sudo apt-key add -

sudo add-apt-repository "deb [arch=amd64] https://download.docker.com/linux/ubuntu $(lsb_release -cs) stable"
sudo apt-get update
sudo apt-get install docker-ce

    b) 将当前用户添加到Docker用户组

## 创建docker用户组
sudo groupadd docker

## 添加当前用户到docker用户组
sudo usermod -aG docker $USER

    c) 设置docker镜像源
    编辑daemon.json文件,如果没有该文件自行创建

sudo vim /etc/docker/daemon.json

    在daemon.json里,添加如下内容:

{
"registry-mirrors":["https://obou6wyb.mirror.aliyuncs.com","https://registry.docker-cn.com","http://hub-mirror.c.163.com"]
}

    重启服务

sudo systemctl daemon-reload
sudo systemctl restart docker

1.4 安装docker-compose

#运行以下命令下载最新版本的 docker-compose
sudo curl -L https://github.com/docker/compose/releases/download/1.18.0/docker-compose-`uname -s`-`uname -m` -o /usr/local/bin/docker-compose  

sudo chmod +x /usr/local/bin/docker-compose

#查看版本
docker-compose -version   
#出现 docker-compose version 1.18.0, build 8dd22a9 就表示安装完成

1.5 安装go

# 1) 下载go 1.14,并解压到/usr/local
wget https://golang.google.cn/dl/go1.14.linux-amd64.tar.gz
tar -C /usr/local -xzf go1.14.linux-amd64.tar.gz

# 2) 配置go环境
##  2.1) 在/usr/local新建一个文件夹名称为gocode
cd /usr/local
mkdir gocode

## 2.2) 修改/etc/profile
sudo vim /etc/profile

## 添加如下路径:
export GOROOT=/usr/local/go
export GOPATH=/usr/local/gocode
export PATH=$GOPATH/bin:$GOROOT/bin:$PATH

## 2.3) 使能go环境
source /etc/profile

2、安装Fabric

2.1 下载fabric源码

    a)创建hyperledger目录

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

    b) 下载Fabric源码

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

    c) 切换到 1.4版本

cd fabric 
git branch -a 
git checkout release-1.4

2.2 下载fabric-sample源码

    a)进入hyperledger目录

## 1) 进入hyperleder目录
cd $GOPATH/src/github.com/hyperledger

## 2)克隆fabric-samples项目并切换到v1.4tag
git clone https://github.com/hyperledger/fabric-samples.git
cd fabric-samples
git checkout -b sample v1.4.0

2.3 安装加密工具、CA工具

    a) 方法一
    手动安装这2个工具

## 1.1) 下载加密工具
wget https://nexus.hyperledger.org/content/repositories/releases/org/hyperledger/fabric/hyperledger-fabric/linux-amd64-1.4.0/hyperledger-fabric-linux-amd64-1.4.0.tar.gz
## 1.2) 下载CA工具
wget https://nexus.hyperledger.org/content/repositories/releases/org/hyperledger/fabric-ca/hyperledger-fabric-ca/linux-amd64-1.4.0/hyperledger-fabric-ca-linux-amd64-1.4.0.tar.gz

# 2.1) 将这2个工具解压到 fabric-samples目录下
tar zxvf hyperledger-fabric-linux-amd64-1.4.0.tar.gz -C $GOPATH/src/github.com/hyperledger/fabric-samples/
tar zxvf hyperledger-fabric-ca-linux-amd64-1.4.0.tar.gz -C $GOPATH/src/github.com/hyperledger/fabric-samples/

## 2.2) 向/etc/profile中写入环境变量
sudo echo 'export PATH=$GOPATH/src/github.com/hyperledger/fabric-samples/bin:$PATH' >> /etc/profile

## 2.3) 使环境变量生效
source /etc/profile

    b) 方法二
    使用脚本来安装这2个工具,
    进入$GOPATH/src/github.com/hyperledger/fabric-samples/scripts/目录,运行如下脚本,也可以安装这2个工具。

# ./bootstrap.sh <fabric> <fabric-ca> <thirdparty>
cd $GOPATH/src/github.com/hyperledger/fabric-samples/scripts
./bootstrap.sh 1.4.0 1.4.0 0.4.14

    由于使用脚本进行安装时,经常出现网络无法访问的情况,要等2个小时,所以,推荐使用方法一手动安装这2个工具。

2.4 安装fabric的相关镜像

## 1) 基础镜像
docker pull hyperledger/fabric-peer:1.4.0
docker tag hyperledger/fabric-peer:1.4.0 hyperledger/fabric-peer:latest

docker pull hyperledger/fabric-orderer:1.4.0
docker tag hyperledger/fabric-orderer:1.4.0 hyperledger/fabric-orderer:latest

docker pull hyperledger/fabric-tools:1.4.0
docker tag hyperledger/fabric-tools:1.4.0 hyperledger/fabric-tools:latest

docker pull hyperledger/fabric-ccenv:1.4.0
docker tag hyperledger/fabric-ccenv:1.4.0 hyperledger/fabric-ccenv:latest

docker pull hyperledger/fabric-ca:1.4.0
docker tag hyperledger/fabric-ca:1.4.0 hyperledger/fabric-ca:latest

## 2) 数据库与消息队列镜像
docker pull hyperledger/fabric-couchdb:0.4.14
docker tag hyperledger/fabric-couchdb:0.4.14 hyperledger/fabric-couchdb:latest

docker pull hyperledger/fabric-kafka:0.4.14 
docker tag hyperledger/fabric-kafka:0.4.14 hyperledger/fabric-kafka:latest

docker pull hyperledger/fabric-zookeeper:0.4.14 
docker tag hyperledger/fabric-zookeeper:0.4.14 hyperledger/fabric-zookeeper:latest

## 3) Java语言包镜像(可选)
docker pull hyperledger/fabric-javaenv:1.4.0
docker tag hyperledger/fabric-javaenv:1.4.0 hyperledger/fabric-javaenv:latest

    效果如下:

图(1) 安装fabric相关的docker镜像

3、设置环境

    a) 启动fabric-samples/first-network网络所需二进制文件的默认路径为 fabric-samples/bin,可以将该路径添加入环境变量中:

## 打开/etc/profile
sudo gedit /etc/profile

## 添加路径
export PATH=$GOPATH/bin:$GOROOT/bin:$GOPATH/src/github.com/hyperledger/fabric-samples/bin:$PATH

## 使能环境
source /etc/profile

    /etc/profile的最终内容如下:

# /etc/profile: system-wide .profile file for the Bourne shell (sh(1))
# and Bourne compatible shells (bash(1), ksh(1), ash(1), ...).

if [ "$PS1" ]; then
  if [ "$BASH" ] && [ "$BASH" != "/bin/sh" ]; then
    # The file bash.bashrc already sets the default PS1.
    # PS1='\\h:\\w\\$ '
    if [ -f /etc/bash.bashrc ]; then
      . /etc/bash.bashrc
    fi
  else
    if [ "`id -u`" -eq 0 ]; then
      PS1='# '
    else
      PS1='$ '
    fi
  fi
fi

if [ -d /etc/profile.d ]; then
  for i in /etc/profile.d/*.sh; do
    if [ -r $i ]; then
      . $i
    fi
  done
  unset i
fi

# go Env
export GOROOT=/usr/local/go
export GOPATH=/usr/local/gocode

#path
export PATH=$GOPATH/bin:$GOROOT/bin:$GOPATH/src/github.com/hyperledger/fabric-samples/bin:$PATH

    b) 检查环境变量是否成功,若没有成功,请重启虚拟机

fabric-ca-client version
图(2) 查看fabric环境

4、测试first-network

4.1 启动网络

cd $GOPATH/src/github.com/hyperledger/fabric-samples/first-network

# 启动网络
./byfn up

图(3) 启动first-network网络,若打印All GOOD,说明启动成功

4.2 调用合约

    a) 查看已经运行的docker列表

docker ps --format "table {{.ID}}\\t{{.Names}}\\t{{.Ports}}\\t{{.Names}}"
图(4) 查看docker的运行状态

    b) 进入cli容器

docker exec -it cli bash

    使用查询命令

peer chaincode query -C mychannel -n mycc -c '{"Args":["query","a"]}'
peer chaincode query -C mychannel -n mycc -c '{"Args":["query","b"]}'
图(5) 查询a和b的值

    若能查看a、b的值,说明fabric的单机环境已经安装完成。

4.3 关闭fabric网络

    由于fabric网络实例是单一的,所以当不使用fabric网络时,请及时关闭它。

./byfn.sh down

以上是关于搭建Fabric v1.4.0单机版的主要内容,如果未能解决你的问题,请参考以下文章

Fabric链码入门案例(go语言版本)

低代码报表,JimuReport积木报表 v1.4.0版本发布,免费的可视化数据产品

Fabric的一些思考

深入解析Hyperledger Fabric启动的全过程

HyperLeger Fabric开发——HyperLeger Fabric部署实战(单机)

HyperLedger Fabric 1.2 单机单节点部署(10.2)