最近测试并部署了一套基于Fabric的区块链应用,因为是在内网环境,起初在安装上遇到了很多问题。现在把解决方案梳理一下。
目前大部分fabric的安装指南都使用了在线脚本的模式,比如官方的Test Network例子就使用了如下的在线脚本:
curl -sSL https://bit.ly/2ysbOFE | bash -s
这种方式对于在线用户确实简单,但是对于离线安装来讲却很麻烦,
所以我们要进去看看,究竟执行了哪些操作。
准备条件
官方介绍的环境准备主要需要如下环境:
1)git、cUrl、wget
2)docker、docker compose
3)Golang环境
4)Node.js
5) Python
这里面这些其实第一个部分主要是为了下载安装包用的,3、4是为了安装应用用的,你可以根据自身情况安装,5主要是为了支持docker compose。
根据我们在Centos下的测试,Python要求的2.7版本默认可以满足,1在离线环境下其实不需要,就只剩下2、3的安装(我们不使用node开发合约)。3直接上网下载就好。
先来解决docker安装的问题,centos默认的仓库里面docker的版本比较低,不满足需求,我们需要去官方仓库里下载需要的rpm包
经测试,仅需要以下三个包:
1)containerd.io
2) docker-ce
3) docker-ce-cli
因这三个包是系统架构相关,就不提供下载链接了,可以在官方仓库中按架构搜索。
再下载安装Golang环境,这个网上教程很多,就不描述了。
这样,其实下载三个rpm包,准备环境就可以了。
Ubuntu说明
在ubuntu下,应该下载对应的deb包,ubuntu下还没有测试离线安装,在线安装参考这里,需要注意的是在线的docker-ce版本已经不支持内核为3.xx的linux版本了,经测试14.04的ubuntu不支持,16.04的支持
另外Ubuntu需要安装docker-compose,需要预先下载好再上传安装
基础软件
然后我们要按以下脚本安装三个东西:
curl -sSL https://bit.ly/2ysbOFE | bash -s
1)fabric-sample(推荐初学者安装)
2)fabric 本地软件(fabric,fabric-ca)
3)fabric 官方docker镜像
离线安装这三个东西其实也很简单。
1)可以去git仓库克隆
2)需要按照版本和目标系统架构去官方下载,既然我们无法借助在线脚本,就只能自己寻找了,fabric链接在这个网页,fabric-ca链接在这个网页
比如我们是centos(linux)、x86_64架构,我需要最新的fabric(2.1.1),fabric-ca(1.4.7)
我需要下载的就是hyperledger-fabric-linux-amd64-2.1.1.tar.gz
3)docker的下载较为麻烦,需要在一台机器上先安装好这几个docker
- hyperledger/fabric-baseos
- hyperledger/fabric-ca
- hyperledger/fabric-ccenv
- hyperledger/fabric-couchdb
- hyperledger/fabric-javaenv
- hyperledger/fabric-kafka
- hyperledger/fabric-orderer
- hyperledger/fabric-peer
- hyperledger/fabric-tools
- hyperledger/fabric-zookeeper
根据所选的技术组件不同,可能部分不需要,这块还没来得及测试,就先都下载安装吧,安装方法是
docker pull hyperledger/fabric-baseos
安装完之后,我们通过docker save命令把这些安装好的包导出出来
docker save -o 包名 hyperledger/fabric-baseos
如果需要打印测试消息,另外需要gliderlabs/logspout
这样我们在一个离线环境下安装的所有包就准备好了
然后需要做的就是把这些包都拷贝到离线环境下。
离线安装
首先使用rpm安装上面的三个包
rpm -i containerd.io-1.2.6-3.3.el7.x86_64.rpm
rpm -i docker-ce-cli-19.03.11-3.el7.x86_64.rpm
rpm -i docker-ce-19.03.11-3.el7.x86_64.rpm
然后安装导入所有的docker包
docker load -i fabric-baseos.tar
docker load -i fabric-ccenv.tar
docker load -i fabric-javaenv.tar
docker load -i fabric-orderer.tar
docker load -i fabric-zookeeper.tar
docker load -i fabric-ca.tar
docker load -i fabric-couchdb.tar
docker load -i fabric-kafka.tar
docker load -i fabric-peer.tar
docker load -i fabric-tools.tar
最后解压fabric的本地程序
tar -zxvf hyperledger-fabric-linux-amd64-2.1.1.tar.gz
解压后,把路径配置到PATH里面
好了,离线安装基本就完成了,是不是也很简单,不用再找网管申请外网连接了,呵呵