【推荐】 HyperLedger Fabric环境搭建、测试及注意事项 [详尽指导] [亲测有效]
系统:Ubuntu16.04 LTS
一、环境准备
1.1 Ubuntu下安装 crul
sudo apt install curl
curl是利用URL语法在命令行方式下工作的开源文件传输工具。它被广泛应用在Unix、多种Linux发行版中,并且有DOS和Win32、Win64下的移植版本。
作用:文件传输
1.2 安装 Docker and Docker Compose
Docker-compose是支持通过模板脚本批量创建Docker容器的一个组件。
- 前期准备:
由于apt官方库里的docker版本可能比较旧,所以先卸载可能存在的旧版本:
$ sudo apt-get remove docker-engine docker-ce docker.io
更新apt包索引:
$ sudo apt-get update

- 配置CE环境(Docker CE(Community Edition),即 Docker社区版)
配置apt允许以 HTTPS方式拉取镜像安装:
$ sudo apt-get install \
apt-transport-https \
ca-certificates \
curl \
software-properties-common
添加Docker官方 GPG key:
$ curl -fsSL https://download.docker.com/linux/ubuntu/gpg | sudo apt-key add -

校验
9DC8 5822 9FC7 DD38 854A E2D8 8D81 803C 0EBF CD88.$ sudo apt-key fingerprint 0EBFCD88

- 利用如下命令配置稳定镜像
$ sudo add-apt-repository "deb [arch=amd64] https://download.docker.com/linux/ubuntu $(lsb_release -cs) stable"

- 安装Docker
- 更新apt包索引
$ sudo apt-get update
- 安装最新版Docker
sudo apt-get install docker-ce
s
- 验证Docker是否已经安装成功
$ sudo docker run hello-world
此命令会下载一个测试镜像,并且启动一个container来运行该镜像,打印一些信息后退出。
可参考官方教程:https://docs.docker.com/install/linux/docker-ce/ubuntu/#supported-storage-drivers
至此,Docker在Ubuntu上已经安装成功!
1.3 安装GO和NodeJS
1.3.1 GO
安装go语言包:
$ curl -O https://storage.googleapis.com/golang/go1.10.1.linux-amd64.tar.gz

下载完成后,解压至/usr/local 目录下:
$ sudo tar -C /usr/local -xzf go1.10.1.linux-amd64.tar.gz
配置go语言环境变量:
进入.bashrc 配置环境变量:
$ sudo vim ~/.bashrc
或者是:
$ sudo vim /etc/profile
在最后面加入如下代码:
export GOPATH=/usr/local/GO
export PATH=$GOPATH/bin:$PATH

保存,退出。
使环境变量生效:
$ source ~/.bashrc
或者是:
$ source /etc/profile

查看版本号后没问题,说明配置成功。
1.3.2 node.js
下载node.js
$ curl -sL https://deb.nodesource.com/setup_8.x | sudo -E bash
安装node.js
$ sudo apt-get install -y nodejs

检查版本:

二、Fabric 安装
2.1 Fabric 源码下载
首先建立对应的目录,然后进入该目录,使用Git命令下载源码:
mkdir -p ~/go/src/github.com/hyperledger
cd ~/go/src/github.com/hyperledger
git clone https://github.com/hyperledger/fabric.git
由于Fabric一直在更新,所有我们并不需要最新最新的源码,需要切换到v1.0.0版本的源码即可:
cd ~/go/src/github.com/hyperledger/fabric
git checkout -b v1.0.0

我们可以看到fabric源码下有许多文件。我们进入/examples/e2e_cli文件夹下。

通过如下命令,下载镜像:
sudo download-dockerimages.sh -c x86_64-1.0. -f x86_64-1.0.
下载完后,通过 docker images 查看版本即可。
至此fabric环境已经搭建完成。
三、大坑集锦
3.1 权限问题
出现以下问题:
Warning: failed to get default registry endpoint from daemon (Got permission denied while trying to connect to the Docker daemon socket at unix:///var/run/docker.sock: Get http://%2Fvar%2Frun%2Fdocker.sock/v1.38/info: dial unix /var/run/docker.sock: connect: permission denied). Using system default: https://index.docker.io/v1/
Got permission denied while trying to connect to the Docker daemon socket at unix:///var/run/docker.sock: Post http://%2Fvar%2Frun%2Fdocker.sock/v1.38/images/create?fromImage=hyperledger%2Ffabric-peer&tag=latest: dial unix /var/run/docker.sock: connect: permission denied
Got permission denied while trying to connect to the Docker daemon socket at unix:///var/run/docker.sock: Post http://%2Fvar%2Frun%2Fdocker.sock/v1.38/images/hyperledger/fabric-peer:latest/tag?repo=hyperledger%2Ffabric-peer&tag=latest: dial unix /var/run/docker.sock: connect: permission denied

当在查询docker 版本时,也会出现类似错误:
Got permission denied while trying to connect to the Docker daemon socket at unix:///var/run/docker.sock: Get http://%2Fvar%2Frun%2Fdocker.sock/v1.38/version: dial unix /var/run/docker.sock: connect: permission denied

这主要就是未获得root权限,所造成的错误。
解决方法:
授予root权限即可。
sudo ./download-dockerimages.sh
3.2 版本问题
如果直接获取最新版本,最后会出现如下问题:
Error response from daemon: manifest for hyperledger/fabric-javaenv:latest not found


原因:主要是因为一些组件还没有更新到最新版本,只有几个组建有最新版本。所以下载组件时要加上版本号。为了学习资料较全的v1.0.0,故我下载的是1.0.0版本。
sudo ./download-dockerimages.sh -c x86_64-1.0. -f x86_64-1.0.
===> List out hyperledger docker images
hyperledger/fabric-ccenv <none> 6acf31e2d9a4 weeks ago .43GB
hyperledger/fabric-orderer <none> 4baf7789a8ec weeks ago 152MB
hyperledger/fabric-peer <none> 82c262e65984 weeks ago 159MB
hyperledger/fabric-couchdb <none> 3092eca241fc months ago .61GB
hyperledger/fabric-tools latest 0403fd1c72c7 months ago .32GB
hyperledger/fabric-tools x86_64-1.0. 0403fd1c72c7 months ago .32GB
hyperledger/fabric-couchdb latest 2fbdbf3ab945 months ago .48GB
hyperledger/fabric-couchdb x86_64-1.0. 2fbdbf3ab945 months ago .48GB
hyperledger/fabric-kafka latest dbd3f94de4b5 months ago .3GB
hyperledger/fabric-kafka x86_64-1.0. dbd3f94de4b5 months ago .3GB
hyperledger/fabric-zookeeper latest e545dbf1c6af months ago .31GB
hyperledger/fabric-zookeeper x86_64-1.0. e545dbf1c6af months ago .31GB
hyperledger/fabric-orderer latest e317ca5638ba months ago 179MB
hyperledger/fabric-orderer x86_64-1.0. e317ca5638ba months ago 179MB
hyperledger/fabric-peer latest 6830dcd7b9b5 months ago 182MB
hyperledger/fabric-peer x86_64-1.0. 6830dcd7b9b5 months ago 182MB
hyperledger/fabric-javaenv latest 8948126f0935 months ago .42GB
hyperledger/fabric-javaenv x86_64-1.0. 8948126f0935 months ago .42GB
hyperledger/fabric-ccenv latest 7182c260a5ca months ago .29GB
hyperledger/fabric-ccenv x86_64-1.0. 7182c260a5ca months ago .29GB
hyperledger/fabric-ca latest a15c59ecda5b months ago 238MB
hyperledger/fabric-ca x86_64-1.0. a15c59ecda5b months ago 238MB
3.3 更改获取的源
如果是国外的源会很慢很慢,需要保证apt source是国内的。具体做法:
方法一:
sudo vi /etc/apt/sources.list
打开这个apt源列表,如果其中看到是http://us.xxxxxx之类的,那么就是外国的,如果看到是http://cn.xxxxx之类的,那么就不用换的。我的是美国的源,所以需要做一下批量的替换。在命令模式下,输入:
:%s/us./cn./g
就可以把所有的us.改为cn.了。然后输入:wq即可保存退出。
方法二:
界面操作,后续补充。
3.4 测试e2e网络时,ERR 001:

最常见的就是ERRO 001 cannot run peer because error when setting up MSP from directory /opt/gopath/src/......。出现这个问题主要是由于镜像没下全以及缺少ltdl.h文件的原因,当然还要确定你的fabric版本与你下的镜像版本一致,我使用的是v1.0.0。
解决方式如下:
1.确定fabric版本与你下的镜像版本一致(推荐使用v1.0.0):
在fabric目录下输入git checkout v1.0.0
通过输入docker images查看你已下载的镜像。
不正确的话则在fabric目录下输入git clone https://gerrit.hyperledger.org/r/fabric -b v1.0.0
确保你下的版本是v1.0.0
2.erro 001的错误往往是由无法正确生成公私钥和证书的原因,测试如下:
参考资料:
环境配置:
1.https://blog.csdn.net/agecntao/article/details/78580746
2.https://blog.csdn.net/xxxslinyue/article/details/79396618
3.https://blog.csdn.net/sun13465816527/article/details/80393119
4.https://blog.csdn.net/tiandiwuya/article/details/78771475
6.https://blog.csdn.net/sinat_36742186/article/details/78510191
7.http://www.netkiller.cn/journal/hyperledger.html
错误解决:
1.https://blog.csdn.net/mx1222/article/details/80888830 不太推荐
【时间仓促,如有错误,欢迎指正! || 欢迎一起学习交流, 请在评论区留言!】
【本作品采用知识共享署名-非商业性使用-相同方式共享 4.0 国际许可协议进行许可。】
【转载请联系博主,同意后务必注明出处:http://www.cnblogs.com/X-knight/】
【推荐】 HyperLedger Fabric环境搭建、测试及注意事项 [详尽指导] [亲测有效]的更多相关文章
- Hyperledger Fabric 环境搭建(2)
上一篇https://www.cnblogs.com/xdyixia/p/11738096.html 介绍了Hyperledger Fabric环境中各种软件安装和源码编译,这一篇介绍快速运行一个简单 ...
- Hyperledger Fabric 环境搭建(1)
1,Fabric的程序模块组成 Fabric不是一个单独的程序而是由一组模块组成,这些模块中的每一个都是一个可独立运行的可执行文件. (1)peer 主节点模块,负责存储区块链数据,运行维护链码: ( ...
- 联盟链初识以及Fabric环境搭建流程
这篇文章首先简单介绍了联盟链是什么,再详细的介绍了Fabric环境搭建的整个流程. 区块链分类: 以参与方式分类,区块链可以分为:公有链.联盟链和私有链. 定义: 我们知道区块链就是一个分布式的,去中 ...
- Ubuntu下配置Hyperledger Fabric环境
在win10系统的台式机上安装配置Hyperledger Fabric环境 安装Ubuntu 16.04 双系统 镜像下载地址:https://www.ubuntu.com/download/desk ...
- Hyperledger Fabric 手动搭建【区块链学习三】
Hyperledger Fabric 手动搭建 前面我们学习了区块链是什么.还有自动搭建学习东西我们就要从简单到深入(入门到放弃),现在自动部署已经跑通了接下来就是手动搭建Fabric 网络可以更好的 ...
- 大数据基础-2-Hadoop-1环境搭建测试
Hadoop环境搭建测试 1 安装软件 1.1 规划目录 /opt [root@host2 ~]# cd /opt [root@host2 opt]# mkdir java [root@host2 o ...
- Nginx配置多个基于域名的虚拟主机+实验环境搭建+测试
标签:Linux 域名 Nginx 原创作品,允许转载,转载时请务必以超链接形式标明文章 原始出处 .作者信息和本声明.否则将追究法律责任.http://xpleaf.blog.51cto.com/9 ...
- 7.搭建hyperledger fabric环境及启动——2019年12月12日
2019年12月12日13:05:16 声明:从网络中学习整理实践而来. 1.介绍fabric Fabric 是一个面向企业应用的区块链框架,基于 Fabric 的开发可以粗略分为几个层面: 1. 参 ...
- 深入理解Fabric环境搭建的详细过程
博主之前的文章都是教大家怎么快速的搭建一个Fabric的环境,但是其中大量的工作都隐藏到了官方的脚本中,并不方便大家深入理解其中的过程,所以博主这里就将其中的过程一步步分解,方便大家! 前面的准备工作 ...
随机推荐
- visual studio中如何将string类型值转为BYTE(unsigned char)类型
昨天困惑一件事,就是手里有个string类型的字符串,像01 23 45 67 89 AB CD EF,根据空格拆分为一个个的子字符串后(如EF),需要放到一个BYTE(typedef unsigne ...
- VueJs(12)---vue-router(导航守卫,路由元信息)
vue-router(导航守卫,路由元信息) 之前泄露两篇有关vue-router博客: VueJs(10)---vue-router(进阶1) VueJs(11)---vue-router(进阶2) ...
- 重温《STL源码剖析》笔记 第六、七、八章 next_permutation (字典序)
源码之前,了无秘密 ——侯杰 第六章算法 next_permutation 比如:01342 -> 01423 -> 01432 方法:从尾端开始往前寻找两个相邻的元素,令第一个元素为* ...
- java(二、基础语法和基本数据类型)
Java 基础语法 一个Java程序可以认为是一系列对象的集合,而这些对象通过调用彼此的方法来协同工作.下面简要介绍下类.对象.方法和实例变量的概念. 对象:对象是类的一个实例,有状态和行为.例如,一 ...
- [CVPR 2016] Weakly Supervised Deep Detection Networks论文笔记
p.p1 { margin: 0.0px 0.0px 0.0px 0.0px; font: 13.0px "Helvetica Neue"; color: #323333 } p. ...
- MySql配置优化总结
当我们被人雇来监测MySQL性能时,人们希望我们能够检视一下MySQL配置然后给出一些提高建议.许多人在事后都非常惊讶,因为我们建议他们仅仅改动几个设置,即使是这里有好几百个配置项.这篇文章的目的在于 ...
- 如何通俗的理解spring的控制反转、依赖注入、面向切面编程等等
之前一直不理解spring的一些基础特性是什么意思,虽然网上的解释也很多,但是由于我比较笨,就是看不懂,知道最近才稍微了解,下面就以通俗讲解的方式记录下来. 前言 假设我是一个没有开店经验的小老板,准 ...
- linux线程及互斥锁
进程是资源管理的最小单元,线程是程序执行的最小单元.在操作系统的设计上,从进程演化出线程,最主要的目的就是更好的支持SMP以及减小(进程/线程)上下文切换开销. 就像进程有一个PID一样,每个线程也有 ...
- 基于opencv3.0下的运动车辆识别
在opencv的初等应用上,对运动物体的识别主要有帧差或背景差两种方式. 帧差法主要的原理是当前帧与前一帧作差取绝对值: 背景差主要的原理是当前帧与背景帧作差取绝对值: 在识别运动车辆上主要需要以下9 ...
- 使用WampServer和DVWA在Windows10上搭建渗透测试环境
前言: DVWA是一个具有脆弱性的Web测试应用,需要PHP和MySQL的环境支持.我们可以手动配置DVWA所需的运行环境,也可以使用WampServer进行搭建.WampServer是集成了Apac ...