本文中用到的宿主环境是Ubuntu18.04。
目前Fabric采用Docker容器作为链码执行环境,因此即使在本地运行,链码服务器上也必须要安装Docker环境。我们这个安装环境主要包括Docker环境的配置以及Docker之上的一些Fabric镜像的配置。
整个项目是采用gradle的框架,然后有一个gradle的服务是用来将智能合约部署到服务器,app的文件夹下放置的是整个应用程序的项目。项目的详细信息可以查看下面的仓库地址:
https://gitlab.com/qubing/blockchain_lab_v2.git
安装公共软件包 #
在开始之前请确保您的操作系统上安装了以下实用程序
- 安装ca-certificates,如果路由器里面没导入证书,在部署路由器的时候,路由器可能会不支持从https安装应用。
sudo apt-get install -y apt-transport-https ca-certificates software-properties-common
- 安装wget,一个从网页自动下载的工具。
sudo apt-get install -y unzip git curl wget vim tree jq
- 安装gradle
cd /tmp && wget https://services.gradle.org/distributions/gradle-6.4-bin.zip
解压缩gradle
unzip gradle-6.4-bin.zip
将grade移动到/usr/local/gradle目录下
sudo mv gradle-6.4 /usr/local/gradle
设置配置文件
sudo cat >> ~/.bashrc <<EOF
setup gradle environments
# =====================
export PATH=$PATH:/usr/local/gradle/bin
# =====================
EOF
source ~/.bashrc
- 从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表达的意思分别如下表所示:
执行结果如下:
将信息添加到源列表中:
sudo add-apt-repository \
"deb [arch=amd64] https://download.docker.com/linux/ubuntu \
(lsb_release -cs) stable"
更新存储库索引并安装docker ce
sudo apt-get update & sudo apt-get install -y docker-ce
以下指令可以安装指定版本的docker ce
sudo apt-get install docker-ce-<VERSION STRING>
查看docker版本, 看是否安装成功
查看docker镜像(默认只有root能够使用docker),可以看到并没有什么内容,因为我们还没有下载获取。
为了不每次都切换到root用户,将当前用户添加到docker,需要重启终端才能生效。
sudo gpasswd -a ${USER} docker
下载docker镜像
首先接入中国 docker hub
sudo cat > /etc/docker/daemon.json <<EOF
{
"registry-mirrors": ["https://registry.docker-cn.com"]
}
EOF
重启并使用
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
安装docker组件
Compose是定义和运行多容器Docker应用程序的工具,可以使用YAML文件来配置应用服务。然后,通过单个命令可以从配置中创建并启动所有服务。
wget https://github.com/docker/compose/releases/download/1.25.3/docker-compose-`uname -s`-`uname -m`
将docker-compose复制到/usr/local/bin目录下
安装语言环境 #
因为曲老师的例子中有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
然后下载对应的二进制文件
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}
对文件进行解压
tar zxf /tmp/${FILE_NAME}
tar zxf /tmp/${CA_FILE_NAME}
chmod +x bin/* && sudo cp bin/* /usr/local/bin/
至此,整个超级账本的平台部署就完成了。后续可以进行一些现有的实例的测试,也可以选择自己设计Fabric的应用。
本文理论方面主要参考的是《HyperLedger Fabric 开发实战:快速掌握区块链技术》-杨毅这本书,这本书后面还讲了很多应用的部署,全书是采用go语言来讲的。另外代码的部分主要参考曲冰老师的gitlab项目上的readme.md,里面有非常详尽的步骤和每一步的说明。
参考: #
- http://www.ttlsa.com/linux/linux-curl-wget/
- 《HyperLedger Fabric 开发实战:快速掌握区块链技术》-杨毅
- 《区块链原理、设计与应用 第2版》杨保华,陈昌编著
- qubing / blockchain_lab_v2
Last modified on 2021-10-23