Deploy Hyperledger Fabric Environment | Hyperledger Fabric安装与部署

/ 2021-10-23 / 400 Words/has been Read   Times


本文中用到的宿主环境是Ubuntu18.04。

目前Fabric采用Docker容器作为链码执行环境,因此即使在本地运行,链码服务器上也必须要安装Docker环境。我们这个安装环境主要包括Docker环境的配置以及Docker之上的一些Fabric镜像的配置。

整个项目是采用gradle的框架,然后有一个gradle的服务是用来将智能合约部署到服务器,app的文件夹下放置的是整个应用程序的项目。项目的详细信息可以查看下面的仓库地址:

https://gitlab.com/qubing/blockchain_lab_v2.git

安装公共软件包 #

在开始之前请确保您的操作系统上安装了以下实用程序

  1. 安装ca-certificates,如果路由器里面没导入证书,在部署路由器的时候,路由器可能会不支持从https安装应用。
sudo apt-get install -y apt-transport-https ca-certificates software-properties-common

img

  1. 安装wget,一个从网页自动下载的工具。
sudo apt-get install -y unzip git curl wget vim tree jq

img

  1. 安装gradle
cd /tmp && wget https://services.gradle.org/distributions/gradle-6.4-bin.zip

img

解压缩gradle

unzip gradle-6.4-bin.zip

img

将grade移动到/usr/local/gradle目录下

sudo mv gradle-6.4 /usr/local/gradle
img

设置配置文件

sudo cat >> ~/.bashrc <<EOF
setup gradle environments
# =====================
export PATH=$PATH:/usr/local/gradle/bin
# =====================
EOF
source ~/.bashrc

img

  1. http://gitlab.com 下载qubing老师的项目:
git clone https://gitlab.com/qubing/blockchain_lab_v2.git ~/workspace

**注意:**这里如果是采用虚拟机下载,可能网速过慢下载不下来,可以选择在Windows上下载下来,然后复制到虚拟机里。

Docker安装 #

背景

Fabric的节点通过Docker容器来运行,启动Fabric网络中的节点需要预先安装Docker、Docker-Compose和Java语言环境,然后在网上拉取相关的Docker镜像,再通过配置Compose文件来启动各个节点。

Docker是一个开源的应用容器引擎,也是一个提供混合云上的每个应用程序的容器平台解决方案。如今的企业面临着数字化转型的压力,但它们受到现有应用和基础设施的限制,同时对日益多样化的云、数据中心和应用程序架构进行了合理化调整。

Docker在应用程序和基础设施和开发人员之间实现了真正的独立性,并为挖掘其潜力创造了一个更好的协作和创新的模式。让开发者可以将他们的应用及依赖包打包到一个可移植的容器中,然后发布到任何流行的Linux机器上,也可以实现虚拟化。容器完全使用沙箱机制,相互之间不会有任何接口。

注意: 如果之前安装过Docker,需要先卸载,具体命令如下:

sudo apt remove docker \
                docker-client \
                docker-client-latest \
                docker-common \
                docker-latest \
                docker-latest-logrotate \
                docker-logrotate \
                docker-selinux \
                docker-engine-selinux  \
                docker-engine

安装docker ce

#注意这是一行指令,必须一次性输入
curl -fsSL https://download.docker.com/linux/ubuntu/gpg | sudo apt-key add - sudo add-apt-repository \

这里curl是一个文件传输工具,其中-fsSl表达的意思分别如下表所示:

img

图片来源:curl与wget高级用法 - 运维生存时间

执行结果如下:

img

将信息添加到源列表中:

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

img

更新存储库索引并安装docker ce

sudo apt-get update & sudo apt-get install -y docker-ce

img

以下指令可以安装指定版本的docker ce

sudo apt-get install docker-ce-<VERSION STRING>

查看docker版本, 看是否安装成功

img

查看docker镜像(默认只有root能够使用docker),可以看到并没有什么内容,因为我们还没有下载获取。

img

为了不每次都切换到root用户,将当前用户添加到docker,需要重启终端才能生效。

sudo gpasswd -a ${USER} docker
img

下载docker镜像

首先接入中国 docker hub

sudo cat > /etc/docker/daemon.json <<EOF
{
"registry-mirrors": ["https://registry.docker-cn.com"]
}
EOF

img

重启并使用

sudo systemctl daemon-reload
sudo systemctl restart docker

安装镜像,首先是核心镜像,包括fabric-ca,fabric-peer,fabric-orderer,fabric-baseos,fabric-ccenv,fabric-javaenv,fabric-nodeenv

docker pull hyperledger/fabric-ca:1.4.6
docker pull hyperledger/fabric-peer:2.1.0
docker pull hyperledger/fabric-orderer:2.1.0
docker pull hyperledger/fabric-baseos:0.4.20
docker pull hyperledger/fabric-ccenv:2.1.0
docker pull hyperledger/fabric-javaenv:2.1.0
docker pull hyperledger/fabric-nodeenv:2.1.0

然后是辅助镜像,目前包括fabric-tools和fabric-baseimage,其中fabric-baseimage基础镜像安装了JDK、Golang 、Node.js 、protocol buffer 支持等,用来生成其他镜像,这里不需要安装它,只安装fabric-tools镜像。

docker pull hyperledger/fabric-tools:2.1.0

最后是第三方镜像,包括fabric-couchdb,fabric-kafka,fabric-zookeeper3种镜像,其中couchdb 镜像,可以启动couchdb 服务,供peer 使用;kafka 镜像,可以启动kafka 服务,供orderer使用;zoo keeper 镜像,可以启动zookeeper 服务,供orderer 的kafka 使用。这里也只用到fabric-couchdb镜像。

docker pull hyperledger/fabric-couchdb:0.4.20

查看docker 镜像如下图:

docker images

img

安装docker组件

Compose是定义和运行多容器Docker应用程序的工具,可以使用YAML文件来配置应用服务。然后,通过单个命令可以从配置中创建并启动所有服务。

wget https://github.com/docker/compose/releases/download/1.25.3/docker-compose-`uname -s`-`uname -m`
img

将docker-compose复制到/usr/local/bin目录下

img

安装语言环境 #

因为曲老师的例子中有go, Java和Node.JS,所以可以同时添加这三种语言环境,本文只用到java语言环境,安装代码如下:

sudo apt-get update
sudo apt-get install -y openjdk-8-jdk

完成后可用java -version来查看安装的环境。

下载Fabric 的二进制文件 #

首先配置环境变量,首先配置basepath到GitHub的仓库地址,然后指定版本信息。

BASE_PATH=https://github.com/hyperledger
FABRIC_VERSION=2.3.0
CA_VERSION=1.4.9

ARCH=$(echo "$(uname -s|tr '[:upper:]' '[:lower:]'|sed 's/mingw64_nt.*/windows/')-$(uname -m | sed 's/x86_64/amd64/g')")

FILE_NAME=hyperledger-fabric-${ARCH}-${FABRIC_VERSION}.tar.gz
CA_FILE_NAME=hyperledger-fabric-ca-${ARCH}-${CA_VERSION}.tar.gz

img

然后下载对应的二进制文件

mkdir -p ~/workspace/fabric-bin/${FABRIC_VERSION} && cd ~/workspace/fabric-bin
wget ${BASE_PATH}/fabric/releases/download/v${FABRIC_VERSION}/${FILE_NAME}
wget ${BASE_PATH}/fabric-ca/releases/download/v${CA_VERSION}/${CA_FILE_NAME}

这里如果直接在GitHub上下载,可能因为网速的原因会很慢,可以直接找已经下载好的文件直接复制到对应位置。

img

对文件进行解压

tar zxf /tmp/${FILE_NAME}
tar zxf /tmp/${CA_FILE_NAME}
chmod +x bin/* && sudo cp bin/* /usr/local/bin/

img

至此,整个超级账本的平台部署就完成了。后续可以进行一些现有的实例的测试,也可以选择自己设计Fabric的应用。

本文理论方面主要参考的是《HyperLedger Fabric 开发实战:快速掌握区块链技术》-杨毅这本书,这本书后面还讲了很多应用的部署,全书是采用go语言来讲的。另外代码的部分主要参考曲冰老师的gitlab项目上的readme.md,里面有非常详尽的步骤和每一步的说明。

参考: #

  1. http://www.ttlsa.com/linux/linux-curl-wget/
  2. 《HyperLedger Fabric 开发实战:快速掌握区块链技术》-杨毅
  3. 《区块链原理、设计与应用 第2版》杨保华,陈昌编著
  4. qubing / blockchain_lab_v2

Last modified on 2021-10-23