区块链从零开始做开发(0):hyperledger Fabric2.3安装
一、前言
各位看官好,这是本人第一篇技术博客。
写博客的契机是因为原来配的环境在虚拟机扩容后莫名奇妙崩了(具体情况我以后会写),为了以后的自己特此从头开始记录。以前都是作为一个读者,这次终于有机会能够分享自己的理解,也算是因祸得福吧哈哈。那么闲话少说,接下来正式进入正题
二、基本环境
系统:Ubuntu20.04(LTS)
题外话:网上很多版本的教程使用的是18.x版本,我之前用20.10版本(结果崩了)。所以这次吸取教训,用新的稳定的版本
三、安装依赖
在(虚拟机中)装完系统后,最好把软件源配置成国内的如华为或阿里。在setting->About->Software Updates 下的 Download from 中选择

更换后用一下命令更新:
$ sudo apt update
因为一直要sudo太麻烦,而且以后也会涉及到权限的问题,所以我建议大家可以直接用root用户登录,具体操作可以看这个教程:
1.安装git
安装git工具
$ sudo apt install git
2.安装cURL
$ sudo apt install curl
3.安装Docker
先查看是否安装了Docker:
$ docker --version
未安装则使用以下命令安装最新Docker:
$ sudo apt install docker.io
安装后记得查看一下:
root@ubuntu:~# docker -v
Docker version 19.03.8, build afacb8b7f0
出现以上字样表示安装成功
我这里是以root权限安装,如果是非root用户需要使用以下命令才能使用docker:
$ sudo usermod -aG docker [你的用户名] (重启生效)
4.安装docker-compose
和之前一样先查看是否安装docker-compose:
$ docker-compose --version
没有安装就使用以下命令安装:
$ sudo apt install docker-compose
安装后查看版本:
root@ubuntu:~# docker-compose -v
docker-compose version 1.25.0, build unknown
出现以上字样说明安装成功。同理,如果是普通用户还需要以下命令:
$ sudo chmod +x /usr/share/doc/docker-compose
5.安装go语言(存疑)
在官方文档中,fabric2.0及之前的版本是需要安装go语言的,但是之后的版本就没有再提过,可能是不需要的,但是装上也不影响使用,所以我们就多进行一步吧,如果此处有误请告诉我!
①下载go语言
$ wget https://dl.google.com/go/go1.13.15.linux-amd64.tar.gz
这里go语言的版本要注意,fabric2.0要求的是1.13.x
②解压文件
使用 tar 命令将压缩包解压到指定的 /usr/local/ 路径下(可以自己选择):
$ sudo tar -zxvf go1.13.15.linux-amd64.tar.gz -C /usr/local/
③配置环境变量
为了所有用户都可以使用go语言使用以下命令,其他情况可以只修改当前用户$HOME目录下的 .bashrc 或 .profile 文件
$ sudo gedit /etc/profile
在文件末尾写入以下内容并保存:
export GOROOT=/usr/local/go
export GOPATH=$HOME/go
export PATH=$PATH:$GOROOT/bin:$GOPATH/bin
使用source命令使以上内容生效:
$ source /etc/profile
然后还是检查是否安装成功:
root@ubuntu:~# go version
go version go1.13.15 linux/amd64
如果未出现以上内容可以尝试重启:)
四、拉取Fabric源码
创建一个专门的目录存放fabric:
$ mkdir -p ~/go/src/github.com/hyperledger
$ cd ~/go/src/github.com/hyperledger
拉取fabric源码:
$ git clone https://github.com/hyperledger/fabric.git
这里其实我是在gitee上拉取的,因为国内的话速度会快一些,在这里也推荐大家可以通过gitee拉取,把后面的地址换成gitee上的下载地址就可以了
之后需要切换当前fabric的分支:
$ cd ./fabric
$ git branch -a
$ git checkout v2.3.0
五、拉取fabric-samples
1.配置镜像加速器
建议使用阿里云的加速器:https://cr.console.aliyun.com/cn-hangzhou/instances/mirrors
$ sudo mkdir -p /etc/docker
$ sudo tee /etc/docker/daemon.json <<-'EOF'
{
"registry-mirrors": ["你的加速器地址"]
}
EOF
$ sudo systemctl daemon-reload
$ sudo systemctl restart docker
2.拉取依赖项
①直接拉取(需要vpn)
在 ./fabric/scripts 中找到 bootstrap.sh 脚本,将该脚本复制到fabric同级目录下,运行以下命令:
$ ./bootstrap.sh 2.3.0 1.4.9 0.4.18
此命令中 “2.3.0”对应fabric版本,“1.4.9”对应fabric-ca版本,“0.4.18”对应fabric Docker版本,也可以默认执行:
$ ./bootstrap.sh
结果如下图:


②手动安装(适用于大多数情况)
如果上面的方法下载速度极慢,可以考虑自己动手丰衣足食,具体步骤如下:
首先分析一下 bootstrap.sh 文件:

可以看出该脚本主要做三件事:1.克隆fabric-samples 2.拉取fabric二进制文件 3.拉取fabric docker镜像 ;所以接下来我们自己手动完成这三件事就好:
Ⅰ.克隆fabric-samples
同之前克隆fabric,我是从gitee上克隆(速度快一点),这里提供从GitHub上克隆的代码:
$ git clone https://github.com/hyperledger/fabric-samples.git
$ cd ./fabric-samples
$ git branch -a
$ git checkout master
Ⅱ. 下载可执行二进制文件
这一步是最容易卡关的,首先查看bootstrap脚本:
pullBinaries() {
echo "===> Downloading version ${FABRIC_TAG} platform specific fabric binaries"
download "${BINARY_FILE}" "https://github.com/hyperledger/fabric/releases/download/v${VERSION}/${BINARY_FILE}"
if [ $? -eq 22 ]; then
echo
echo "------> ${FABRIC_TAG} platform specific fabric binary is not available to download <----"
echo
exit
fi
echo "===> Downloading version ${CA_TAG} platform specific fabric-ca-client binary"
download "${CA_BINARY_FILE}" "https://github.com/hyperledger/fabric-ca/releases/download/v${CA_VERSION}/${CA_BINARY_FILE}"
if [ $? -eq 22 ]; then
echo
echo "------> ${CA_TAG} fabric-ca-client binary is not available to download (Available from 1.1.0-rc1) <----"
echo
exit
fi
}
可以看到脚本是从两个站点下载的,那么我们直接去站点上下载文件就好了:

这是fabric的二进制文件,还要下载fabric-ca的二进制文件,下载好以后在目录下解压,fabric解压后是一个 bin 文件夹和一个 config 文件夹;fabric-ca 解压后是一个 bin 文件夹,将两个 bin 文件夹合并在一起,将合并后的 bin 文件夹和config 文件夹一起放入 fabric-samples 文件夹下:



Ⅲ. 下载fabric docker镜像
这一步可以通过bootstrap脚本运行,首先修改 bootstrap.sh 文件:

没错,把前两步注释掉只运行最后一步就好了:
$ ./bootstrap.sh 2.3.0 1.4.9 0.4.18
这样所有依赖项就都安装好了,我们下一步就可以开始测试了。
注:Fabric官方文档中给的方法是用cURL,但是不适合国内用户
六、测试
打开 fabric-samples下的 test-network 文件夹:
$ cd fabric-samples/test-network
在fabric-samples 2.0版本后用test-network 代替了原本的 first-network ,我们采用最新版本作为实例:

我们运行 network.sh 文件:
$ ./network.sh up
结果如下:

说明fabric安装成功,成功后可以再关闭该网络:
$ ./network.sh down
补充说明:network.sh 具有多种功能,以上展示的仅仅是建立示例网络功能,还可以通过该脚本建立通道、安装链码,具体可见该脚本内容或看我以后的博客。
七、配置环境变量
将 fabric-samples/bin 加入环境变量,方便使用:
$ sudo gedit /etc/profile
再该文件最后添加:
export PATH=$PATH:$GOROOT/bin:$GOPATH/bin:$HOME/go/src/github.com/hyperledger/fabric-samples/bin
最后如图:

然后使用source命令使修改生效:
$ source /etc/profile
验证是否生效(未生效则重启虚拟机):
$ fabric-ca-client version
fabric-ca-client:
Version: 1.4.9
Go version: go1.13.12
OS/Arch: linux/amd64
注:这里发现go语言版本为1.13.12,我们实际环境中go语言版本为1.13.15,看来之前的安装确实无影响
八、结束语
本篇博客到此结束,感谢大家耐心看到这里,如果有什么问题可以评论留言。通过这篇博客我深深体会到分享不易,在此感谢那些坚持写博客分享的大神!
参考博客:https://www.cnblogs.com/zongmin/p/11635686.html
区块链从零开始做开发(0):hyperledger Fabric2.3安装的更多相关文章
- 阿里云容器服务区块链解决方案全新升级 支持Hyperledger Fabric v1.1
摘要: 全球开源区块链领域影响最为广泛的Hyperledger Fabric日前宣布了1.1版本的正式发布,带来了一系列丰富的新功能以及在安全性.性能与扩展性等方面的显著提升.阿里云容器服务区块链解决 ...
- 用区块链技术做一个 不可被修改的 恋爱记录 app 我叫<<誓言>>
区块链技术 具有不可篡改,去中心化,共识机制等优秀的特性, 都用来做 代币钱包什么的.我觉得完全是浪费. 我的想法是用哪个区块做一个dapp 1 里面写着每个人的恋爱记录,爱情宣言. 2 一个人一生 ...
- 区块链教程(二):比特币、区块链、以太坊、Hyperledger的关系
不知道大家喜不喜欢音乐! 朋克音乐:诞生于七十年代中期,一种源于六十年代车库摇滚和前朋克摇滚的简单摇滚乐.它由一个简单悦耳的主旋律和三个和弦组成,经过演变,朋克已经逐渐脱离摇滚,成为一种独立的音乐,朋 ...
- 区块链侧链应用开发平台Asch节点安装及区块生产教程
1 系统要求 必须是linux系统 必须有公网ip 建议使用ubuntu 14.04 64位 建议内存1G以上 建议带宽2Mb以上 2 安装 2.1 下载 wget https://www.asch. ...
- AppCan教你从零开始做开发
经常收到类似这样的提问:新手开发APP,要怎么学?我有满屏幕的文档和视频,然而并没有什么卵用,因为我不知道该从哪看起……今天的主要内容是教大家,如何在AppCan移动平台创建应用,引擎插件选择.证书管 ...
- 区块链学习——HyperLedger-Fabric v1.0 启动过程分析
本章我们从fabric v1.0的e2e_cli示例开始分析整个启动过程以及在过程中的一些配置文件 首先呢,还是确保你的基本环境已经搭建完成,v1.0源码和镜像也都下载完毕 fabric启动过程中的相 ...
- 区块链学习——HyperLedger-Fabric v1.0环境搭建详细教程
相对与v0.6版本来说,1.0版本改变较大,此处不多说,只是将小白自己搭建1.0环境的过程分享给大家.希望对大家能有所帮助! 这一篇可能对前面的环境搭建会写的有些粗略,如有疑问,可阅读上一篇V0.6版 ...
- 如何从零开始学习区块链技术——推荐从以太坊开发DApp开始
很多人迷惑于区块链和以太坊,不知如何学习,本文简单说了一下学习的一些方法和资源. 一. 以太坊和区块链的关系 从区块链历史上来说,先诞生了比特币,当时并没有区块链这个技术和名词,然后业界从比特币中提取 ...
- HyperLedger Fabric Introduction——区块链超级账本介绍
介绍 HyperLedger Fabric是一个基于模块化架构的分布式账本解决方案平台,它拥有深度加密.便捷扩展.部署灵活及可插拔等特性.它设计之初的目的是支持不同组件的可插拔实现,并适应整个经济生态 ...
随机推荐
- 给集合null,filter结果空集合
- 【mq学习整理】mq速览
- IPSec传输模式/隧道模式下ESP报文的装包与拆包过程
IPSec协议:IPsec将IP数据包的内容先加密再传输,即便中途被截获,由于缺乏解密数据包所必要的密钥,攻击者也无法获取里面的内容. 传输模式和隧道模式:IPsec对数据进行加密的方式有两种:传输模 ...
- Plant Leaves Classification植物叶子分类:基于孪生网络的小样本学习方法
目录 Abstract Introduction PROPOSED CNN STRUCTURE INITIAL CNN ANALYSIS EXPERIMENTAL STRUCTURE AND ALGO ...
- mongo聚合操作
1 mongodb的聚合是什么 聚合(aggregate)是基于数据处理的聚合管道,每个文档通过一个由多个阶段(stage)组成的管道,可以对每个阶段的管道进行分组.过滤等功能,然后经过一系列的处理, ...
- 第15.9节 PyQt学习入门:使用Qt Designer进行GUI设计的步骤
在使用Qt Designer进行GUI设计时,一般常规的步骤都是差不多的,主要步骤包括新建显示窗口.在窗口上按照规划的布局放置组件.设置初始化组件的属性.定义信号和槽函数的连接,一般后三步是每增加一个 ...
- CNVD漏洞证书(1)
之前申请了CNVD原创漏洞,踩了坑,记录一下 有很多师傅写过相关的文章: https://blog.csdn.net/qq1124794084/article/details/82657840 htt ...
- 测试点常用用例设计(登录、修改密码、输入框、上传视频、XSS、URL篡改)
1.无效-视频文件测试点: 视频大小过大 视频大小过小 视频名称过长 视频名称包含特殊字符 视频名称包含中文.中英混合 视频文件格式错误 视频文件重复性上传 2.有效-视频文件测试点: 选择符合要求的 ...
- buuctf-[网鼎杯 2018]Fakebook 1
这道题,也是费了很大的劲,慢慢理解慢慢消化,今天,才开始把wp写出来 首先我们先扫描一波目录,用dirsearch扫一手,发现有robots.txt文件 dirseach自带的字典在db目录下,使用格 ...
- 团队作业 需求改进&系统设计
PaChat聊天系统 一.需求&原型改进: 1.针对课堂讨论环节老师和其他组的问题及建议,对修改选题及需求进行修改 问题1:功能划分条理不够清晰. 修改1:改为流程图的形式. 问题2:功能不能 ...