简介
对hyperledger-fabric进行安装,话不多说,直接开干。但是需要申明一点,也就是本文章全程是开着加速器进行的资源操作,所以对于没有开加速器的情况可能会由于网络原因导致下载资源失败。
资料提供
1.官方部署文档在此:官网文档地址
1.下载docker和docker-compose
docker的下载安装以及部署看这篇【docker】linux部署docker,docker-compose的文章看这里离线部署docker-compose。
2.下载go语言环境配置
参考文档。具体根据参考文档进行操作,但是参考文档中需要有一点进行修改。如下图所示,这部分代码会由于网络原因导致无法执行命令,需要使用游览器对指定的链接资源进行获取,上传到服务器中。
附上参考文档中go语言包的链接:https://go.googlecode.com/files/go1.13.linux-amd64.tar.gz
还需要补充一点就是这里需要对/etc/proflie文件添加go的环境变量,设置go语言的代理,否则会被墙住。对/etc/profile文件添加
export GO111MODULE=on
export GOPROXY="https://goproxy.cn,direct"
3.去github官网下载fabric-samples
这里附上github中的连接https://github.com/hyperledger/fabric-samples/tree/main。
在上述图片可以对不同的版本进行下载,通常是git不下来的。下载的方式是通过download zip的方式,下载的速度会比较缓慢,可以将链接复制到迅雷加速器中下载。
还需要注意的是需要fabric的bootstrap.sh文件(后面会说)时,需要在2.3.0版本以上,否则会在创建通道的时候会出现错误提示。下载好fabric-samples后。这是下载好的截图(但是需要注意的是没有bootstrap.sh、bin、config、builders这三个文件。截图中有是因为这篇文章是部署中截图的。)
4.下载fabric中的bootstrap.sh文件
首先需要明白bootstrap.sh文件是干嘛的,这个文件就是用于创建docker必要的镜像以及config目录、bin目录、builders目录的脚本,但是该文件由于网络的问题,大部分情况下根本无法启动成功。脚本根本执行不了,所以网上有些人给出的办法是使用他们写好的bootstrap脚本,但是问题是…他们的脚本创建出来的要么镜像版本是低于2.3.0的,要么就是bin、config等目录中的文件是低于2.3.0的。加上当前网上能找到的资料实在是有限,所以我在多次尝试bootstrap.sh文件后,终于启动成功了,但是很可惜,由于网络原因还是下载不了,但报错显示了不能连接到的地址,使用迅雷加速器将地址中的tar.gz包下载下来,上传到并且解压到fabric-samples目录下即可。
备注:附上fabric的github官网https://github.com/hyperledger/fabric/tree/main,这里只需要在scripts目录下的bootstrap.sh。所以fabric不用放到linux上,可以git clone在windows上。然后将bootstrap.sh上传到/fabric-samples目录下去。
上传到linux上后,执行命令
chmod +x ./bootstrap.sh
附上权限后执行命令该文件会看到提示下载速度非常缓慢,此时对下载中的地址提取到游览器进行下载。会获得一个tar.gz文件(文件中是三个文件),将其上传linux上解压出来即可,此时hypeledge fabric就已经安装好了。
问题合集
问题1:出现unable to access ‘https://github.com/hyperledger/fabric.git/’: HTTP/2 stream 1 was not closed cleanly before end of the underlying stream问题。
参考文档。但是这里下载得到的bootstarp启动之后,下载的版本是2.10的文件,后续创建通道时会报错。需要2.3.0版本以上才可以。出现这个问题最好的办法就是重新右键启动git bash here,不要看参考文档。
问题2:观看B站视频时,使用UP的boostrap.sh文件失败,故去全网查找到如何下载该文件。
参考文档。这篇文档虽然也有一定的年限了,但在细细的观察下看到了原来官网提供的有boostrap.sh文件的下载,具体位置如下。https://github.com/hyperledger/fabric/tree/main
问题三:docker删除不掉镜像报错:image is referenced in multiple repositories
参考文档,原因在于一个镜像的ID对应了一个镜像的多个版本。所以导致了删除的时候会报错。调用如下的执行命令即可。
docker rmi -f <镜像Id>
问题四:执行./network.sh createChannel 报错,但./network.sh up执行成功。
原因在于config和bin目录下的文件版本低于2.3.0。也就是bootstrap.sh执行出来的文件低于2.3.0。需要重新去下载bootstrap.sh文件。具体参考部署与安装的第四步骤。
问题五:创建链码时执行命令GO111MODULE=on go mod vendor报错: dial tcp 142.251.42.241:443: connect: connection refused
参考文档。解决的方案就是优先执行下述的命令
go env -w GO111MODULE=on
go env -w GOPROXY=https://goproxy.cn,direct
补充GO111MODULE=on go mod vendor的意义,GO111MODULE=on表示打开go语言的模块化支持,go mod vendor表示将项目的依赖复制到vendor目录中去。