在Ubuntu中部署并测试Fabric 1.0 Beta
【更新:1.0Beta已经是过去式了,现在出了1.0.0的正式版,请大家参照 http://www.cnblogs.com/studyzy/p/7437157.html 安装Fabric 1.0.0】
今天HyperLedger Fabric放出了1.0 Beta版的镜像,按照命名上来说,这应该是一个基本可用的版本了,所以我赶紧第一时间下载下来,把玩把玩。以下是在Ubuntu中安装并测试Fabric 1.0 Beta的步骤:
一、环境准备
1.1 安装VirtualBox并在其中安装好Ubuntu
这一步其实没啥好说的,下载好最新版的VirtualBox,下载Ubuntu Server,我用的是16.10 X64。在安装完Ubuntu后,需要保证apt source是国内的,不然如果是国外的话会很慢很慢的。具体做法是
sudo vi /etc/apt/sources.list
打开这个apt源列表,如果其中看到是http://us.xxxxxx之类的,那么就是外国的,如果看到是http://cn.xxxxx之类的,那么就不用换的。我的是美国的源,所以需要做一下批量的替换。在命令模式下,输入:
:%s/us./cn./g
就可以把所有的us.改为cn.了。然后输入:wq即可保存退出。
sudo apt-get update
更新一下源。
然后安装ssh,这样接下来就可以用putty或者SecureCRT之类的客户端远程连接Ubuntu了。
sudo apt-get install ssh
1.2 安装Docker
安装Docker也会遇到外国网络慢的问题,幸好国内有很好的镜像,推荐DaoClound,安装Docker的命令是:
curl -sSL https://get.daocloud.io/docker | sh
安装完成后,运行以下脚本将当前用户添加到Docker的组中
sudo usermod -aG docker studyzy
重新登录当前用户,接下来修改 Docker 服务配置(/etc/default/docker
文件)。
sudo vi /etc/default/docker
添加以下内容:
DOCKER_OPTS="$DOCKER_OPTS -H tcp://0.0.0.0:2375 -H unix:///var/run/docker.sock --api-cors-header='*'"
接下来就需要设置国内的Docker镜像地址,需要注册一个账号,然后在加速器页面提供了设置Docker镜像的脚本,加速器页面是:
https://www.daocloud.io/mirror 我提供的脚本是:
curl -sSL https://get.daocloud.io/daotools/set_mirror.sh | sh -s http://d4cc5789.m.daocloud.io
运行完脚本后,重启Docker服务
sudo service docker restart
1.3 安装docker-compose
Docker-compose是支持通过模板脚本批量创建Docker容器的一个组件。在安装Docker-Compose之前,需要安装Python-pip,运行脚本:
sudo apt-get install python-pip
安装完成后,接下来从DaoClound安装Docker-compose,运行脚本:
curl -L https://get.daocloud.io/docker/compose/releases/download/1.10.1/docker-compose-`uname -s`-`uname -m` > ~/docker-compose
sudo mv ~/docker-compose /usr/local/bin/docker-compose
chmod +x /usr/local/bin/docker-compose
二、部署Fabric 1.0 Beta
2.1下载官方自动化部署脚本
我们首先创建一个文件夹,用于存放自动化部署的脚本。
mkdir fabric-sample
cd fabric-sample
然后就可以使用curl命令下载并运行自动化部署脚本了:
1.0 beta的命令是:
curl -sSL https://raw.githubusercontent.com/hyperledger/fabric/master/scripts/bootstrap-1.0.0-beta.sh | bash
【2017/6/24更新: 1.0 rc1 那么获取的命令是:】
curl -sSL https://raw.githubusercontent.com/hyperledger/fabric/master/scripts/bootstrap-1.0.0-rc1.sh | bash
这个过程会比较漫长,会下载大量的x86_64-1.0.0-beta或者x86_64-1.0.0-rc1的docker image。下载完所有镜像后会再做一次rename,把x86_64-1.0.0-beta改为latest,这样才方便使用。
当所有下载完毕后,我们运行
docker images
可以看到有如下的镜像:
REPOSITORY TAG IMAGE ID CREATED SIZE
hyperledger/fabric-tools latest ae6b0f53cb70 14 hours ago 1.32 GB
hyperledger/fabric-tools x86_64-1.0.0-beta ae6b0f53cb70 14 hours ago 1.32 GB
hyperledger/fabric-couchdb latest 31bbbec3d853 14 hours ago 1.48 GB
hyperledger/fabric-couchdb x86_64-1.0.0-beta 31bbbec3d853 14 hours ago 1.48 GB
hyperledger/fabric-kafka latest c4ac1c9a4797 14 hours ago 1.3 GB
hyperledger/fabric-kafka x86_64-1.0.0-beta c4ac1c9a4797 14 hours ago 1.3 GB
hyperledger/fabric-zookeeper latest 2c4ebacb6f00 14 hours ago 1.31 GB
hyperledger/fabric-zookeeper x86_64-1.0.0-beta 2c4ebacb6f00 14 hours ago 1.31 GB
hyperledger/fabric-orderer latest 11ff350dd297 14 hours ago 179 MB
hyperledger/fabric-orderer x86_64-1.0.0-beta 11ff350dd297 14 hours ago 179 MB
hyperledger/fabric-peer latest e01c2b645f11 14 hours ago 182 MB
hyperledger/fabric-peer x86_64-1.0.0-beta e01c2b645f11 14 hours ago 182 MB
hyperledger/fabric-javaenv latest 61c188dca542 14 hours ago 1.42 GB
hyperledger/fabric-javaenv x86_64-1.0.0-beta 61c188dca542 14 hours ago 1.42 GB
hyperledger/fabric-ccenv latest 7034cca1918d 14 hours ago 1.29 GB
hyperledger/fabric-ccenv x86_64-1.0.0-beta 7034cca1918d 14 hours ago 1.29 GB
hyperledger/fabric-ca latest e549e8c53c2e 15 hours ago 238 MB
hyperledger/fabric-ca x86_64-1.0.0-beta e549e8c53c2e 15 hours ago 238 MB
2.2启动Fabric实例
在前面下载的官方提供的自动化部署脚本中,已经包含了启动Fabric实例的脚本。直接运行:
cd ~/fabric-sample/release/linux-amd64
./network_setup.sh up
系统运行完毕后会看到这样的界面:
系统就会创建1个客户端实例cli,1个orderer节点,还有4个peer节点。另外,当前的脚本包含了我们接下来要测试的mycc的实例,所以可能还会看到3个链上代码的实例在运行。
这是命令运行完毕后,使用docker ps命令看到的实例:
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
0bfa0ff5e77c dev-peer1.org2.example.com-mycc-1.0 "chaincode -peer.a..." 3 minutes ago Up 3 minutes dev-peer1.org2.example.com-mycc-1.0
05751dedc36a dev-peer0.org1.example.com-mycc-1.0 "chaincode -peer.a..." 4 minutes ago Up 4 minutes dev-peer0.org1.example.com-mycc-1.0
7006bcd8e671 dev-peer0.org2.example.com-mycc-1.0 "chaincode -peer.a..." 4 minutes ago Up 4 minutes dev-peer0.org2.example.com-mycc-1.0
fd52ef8e4be8 hyperledger/fabric-tools "/bin/bash -c './s..." 5 minutes ago Up 5 minutes cli
11e34078645f hyperledger/fabric-peer "peer node start" 5 minutes ago Up 5 minutes 0.0.0.0:10051->7051/tcp, 0.0.0.0:10053->7053/tcp peer1.org2.example.com
af042ab813ed hyperledger/fabric-peer "peer node start" 5 minutes ago Up 5 minutes 0.0.0.0:8051->7051/tcp, 0.0.0.0:8053->7053/tcp peer1.org1.example.com
08723b2ec1ec hyperledger/fabric-peer "peer node start" 5 minutes ago Up 5 minutes 0.0.0.0:7051->7051/tcp, 0.0.0.0:7053->7053/tcp peer0.org1.example.com
e84bc309e09e hyperledger/fabric-orderer "orderer" 5 minutes ago Up 5 minutes 0.0.0.0:7050->7050/tcp orderer.example.com
3ec6e7cf006b hyperledger/fabric-peer "peer node start" 5 minutes ago Up 5 minutes 0.0.0.0:9051->7051/tcp, 0.0.0.0:9053->7053/tcp peer0.org2.example.com
三、测试Fabric
其实我们在前面运行./network_setup.sh up的时候系统已经运行了一个Example02的ChainCode测试,部署上去的ChainCodeName是mycc,所以接下来我们要测试的话不能再初始化并部署同样名字的ChainCode了,我们可以使用自己另外命名的名字,比如devincc。
3.1在CLI中测试Example02
首先我们需要登录到CLI这个容器中,才能执行Fabric的CLI命令。
docker exec -it cli bash
如果成功进入,我们会切换到该容器的root用户下,得到如下的命令行目录:
root@12f2eb6d9fa6:/opt/gopath/src/github.com/hyperledger/fabric/peer#
与0.6Fabric不同的是,在1.0中,链上代码是需要经过Install和Instantiate两步的。下面我们首先安装Example02,并指定一个名字,比如我们这里就用devincc:
peer chaincode install -n devincc -v 1.0 -p github.com/hyperledger/fabric/examples/chaincode/go/chaincode_example02
运行后可以看到提示运行成功,返回200状态:
接下来是Instantiate,也就是初始化实例,设置a账户有100元,b账户有200元。
peer chaincode instantiate -o orderer.example.com: --tls $CORE_PEER_TLS_ENABLED --cafile /opt/gopath/src/github.com/hyperledger/fabric/peer/crypto/ordererOrganizations/example.com/orderers/orderer.example.com/msp/cacerts/ca.example.com-cert.pem -C mychannel -n devincc -v 1.0 -c '{"Args":["init","a", "100", "b","200"]}' -P "OR ('Org1MSP.member','Org2MSP.member')"
运行成功后可以看到如下的结果:
接下来我们用Query命令来看一看a账户的余额:
peer chaincode query -C mychannel -n devincc -c '{"Args":["query","a"]}'
返回的结果是:
好接下来我们需要把a账户的10元转给b账户,需要调用invoke命令:
peer chaincode invoke -o orderer.example.com: --tls $CORE_PEER_TLS_ENABLED --cafile /opt/gopath/src/github.com/hyperledger/fabric/peer/crypto/ordererOrganizations/example.com/orderers/orderer.example.com/msp/cacerts/ca.example.com-cert.pem -C mychannel -n devincc -c '{"Args":["invoke","a","b","10"]}'
运行返回的结果为:
最后我们再调用query命令来查一下b账户的余额,如果没有计算错,应该是210元。
peer chaincode query -C mychannel -n devincc -c '{"Args":["query","b"]}'
看来我们的Fabric 1.0 Beta已经部署成功并测试通过了。
在Ubuntu中部署并测试Fabric 1.0 Beta的更多相关文章
- 在Ubuntu中部署并测试HyperLedger Fabric 0.6
最近开始研究区块链,对这个新兴的技术有了基本概念上的了解,所以打算基于一个开源项目做做实验.如果是做数字货币,那么比特币的源代码是最好的了,不过这算是区块链1.0吧,已经有很多改进的竞争币和山寨币出来 ...
- ubuntu中编译安装gcc 9.2.0
一切都和其他源码安装软件是一样的: 一.下载源代码: http://ftp.gnu.org/gnu/gcc/gcc-9.2.0/gcc-9.2.0.tar.xz 二.解压文件 tar xvf gcc- ...
- Ubuntu中部署Django项目的配置与链接MySQL
Django的简介 MVT模式的介绍创建项目的虚拟环境 本次使用的是pip安装 一.更新 sudo apt update 二.安装pip sudo apt install python3-pip 三. ...
- Centos 7 中 部署 asp.net core 3.0 + nginx + mongodb 的一些新手简单入门,非docker
目录 零.准备工作 一.部署Mongodb 1.安装Mongodb 2.创建mongodb的数据目录 3.设置目录权限 4.设置mongodb启动 5.修改mongodb的配置文件 6.启动Mongo ...
- rails创建项目,部署,测试流程(rails5.0+ruby2.3.1)
rails new test_app --skip-test-unit 不生成默认的test,稍后用rspeccd test_app 修改Gemfile(大部分为自动生成) source 'https ...
- 记一次Docker中部署Asp.Net Core 3.0的踩坑过程
最近公司打算重构目前直销报单系统到微信小程序中,目前的系统只能在PC上面使用,这两年也搞过App端,但是由于人员流动和公司架构调整最后都不了了之,只留下一堆写了一半的接口.以前的接口依然是使用Asp. ...
- 不使用pvc的方式在K8S中部署apisix-gateway
不使用pvc的方式在K8S中部署apisix-gateway 简介 我的apisix使用etcd作为数据存储服务器,官方的使用pvc方式或者docker-compose的方式,对于新手不太友好,本篇是 ...
- K8S中部署apisix(非ingress)
不使用pvc的方式在K8S中部署apisix-gateway 简介 因为公司项目准备重构,现在做技术储备,之前公司项目使用的ocelot做网关,ocelot是.net平台下的一个网关,也是很不错,但是 ...
- 在ubuntu16.04中再次体验.net core 2.0
在上一篇文章中在ubuntu16.04中初次体验.net core 2.0 简单介绍了一下ubuntu中运行.net core 2.0.配置nginx反向代理以及安装supervisor守护进程……本 ...
随机推荐
- 自定义组件-BreadcrumbTreeView 的使用
一.问题概述 树形结构是开发中常用的一种组织数据的结构,不少平台也提供了对应的控件.而在android平台中,出于使用手指操作树形结构不是很方便的原因,并没有提供树形结构控件.但在实际应用中,不可避免 ...
- Ngnix+tomcat负载均衡
系统环境 Centos6.5 nginx1.4.7 https://nginx.org/download/nginx-1.4.7.tar.gz tomcat7.0.79 http://apache. ...
- softmax函数
该函数作用于输出层之上,用于改善输出层神经元饱和时与该神经元直接相关的w和bias学习率下降的问题. 定义: 这表明,在用柔性最大值函数定义输出神经元的输出时,神经元的输出是一种概率分布,所有输出层神 ...
- iptables规则的删除-怎么删除一条已有的iptables规则
语法是: iptables -D chain rulenum [options] 其中: chain 是链的意思,就是INPUT FORWARD 之类的定语 rulenum 是该条规则 ...
- Vim中常用的命令行
Vim中常用的命令行... ------------------- 一些真正强大的武器总不是那么容易驾驭的,主角总得付出一些努力才能收获到更加强大的力量,对于 Vim 这种上古神器来说更是如此.由于它 ...
- 【Unity游戏开发】浅谈Unity游戏开发中的单元测试
一.单元测试的定义与作用 单元测试定义:单元测试在传统软件开发中是非常重要的工具,它是指对软件中的最小可测试单元进行检查和验证,一般情况下就是对代码中的一个函数去进行验证,检查它的正确性.一个单元测试 ...
- Android笔记: 实现手机震动效果
1.震动是系统的服务,首先需添加震动权限 <uses-permission android:name="android.permission.VIBRATE" /> 2 ...
- asp.net mvc 接入美圣短信 验证码发送
第1步:登录美圣短信控制台 http://www.rcscloud.cn/hy/HY_ZH/login 账号:******* 密码:******* http://www.rcscloud.cn/com ...
- 微信小程序结合后台数据管理实现商品数据的动态展示、维护
微信小程序给我们提供了一个很好的开发平台,可以用于展现各种数据和实现丰富的功能,本篇随笔介绍微信小程序结合后台数据管理实现商品数据的动态展示.维护,介绍如何实现商品数据在后台管理系统中的维护管理,并通 ...
- JavaScript操作DOM节点
DOM (文档对象模型(Document Object Model)) 文档对象模型(Document Object Model,简称DOM),是W3C组织推荐的处理可扩展标志语言的标准编程接口.在网 ...