扫二维码与项目经理沟通
我们在微信上24小时期待你的声音
解答本文疑问/技术咨询/运营咨询/技术建议/互联网交流
这篇文章主要为大家展示了“在mac下如何部署hyperledger fabric本地开发环境”,内容简而易懂,条理清晰,希望能够帮助大家解决疑惑,下面让小编带领大家一起研究并学习一下“在mac下如何部署hyperledger fabric本地开发环境”这篇文章吧。
创新互联长期为1000多家客户提供的网站建设服务,团队从业经验10年,关注不同地域、不同群体,并针对不同对象提供差异化的产品和服务;打造开放共赢平台,与合作伙伴共同营造健康的互联网生态环境。为三沙企业提供专业的网站设计、成都做网站,三沙网站改版等技术服务。拥有十多年丰富建站经验和众多成功案例,为您定制开发。
准备工作:
Git client(https://git-scm.com/downloads) Go - 1.6 or later(https://golang.org/) Vagrant - 1.8.6 or later(https://www.vagrantup.com/) VirtualBox - 5.0 or later(https://www.virtualbox.org/)
这些都必须要用到,git主要用于同步源码,go主要是搭建go语言的编译环境,因为源码是go语言编写的。点击文档说明的链接下载,安装方法和环境变量的设置可以百度,一大堆的参考资料,基本都比较靠谱。后两个就更简单,下载下来安装就行了。另外,由于后面要用到ssh命令,我下载了一个Cygwin64 Terminal,安装选择包的时候搜索openssh,然后选择这个包,安装之后,也需要配置环境变量,具体自己百度。
搭建步骤:
第一步:
首先确保你之前安装go语言的编译环境搭建好了。
然后在git命令行中输入 :
git config --get core.autocrlfgit config --global core.autocrlf false
第二步:
把github中的fabric源码拉下来
cd $GOPATH/src mkdir -p github.com/hyperledger cd github.com/hyperledger git clone https://github.com/hyperledger/fabric.git
$GOPATH这个目录在windows下可以随便定,建议后面的按他说的来。源文档的git clone命令可能是针对有Linux id的来的,可以不用他的命令。
第三步:
用Vagrant来配置虚拟机
cd $GOPATH/src/github.com/hyperledger/fabric/devenv vagrant up
vagrant up第一次时间非常长,有时还断,所以建议FQ,而且要全局加速,亲测速度确实要稳定一些。文档里说运行了这个命令之后就可以喝咖啡去了,要a few minutes,我表示不服。
Vagrant装好之后,大部分的工作就完成了,然后就是部署一些东西。
之后的vagrant up启动都是这个样子:
这一步要单独介绍一下vagrant有许多命令,大概方式 就是它会从vagrant 的box的镜像中去下载最新版本的镜像大概有1G多吧,然后进行安装我们可以通过迅雷手动下载,最新版本。然后通过
vagrant box add hyperledger/fabric-baseimage virtualbox.box
的方式直接添加这个镜像文件。下载地址(https://atlas.hashicorp.com/hyperledger/boxes/fabric-baseimage/versions/0.2.1/providers/virtualbox.box)
可以浏览一下镜像库
当前的最新版本是0.2.1
本地的版本可以通过
vagrant box update的方式进行更新。
然后安装好镜像以后,一般会报一个错误。就是连接不到 google.com上去去更新代码,因为会在当前默认的工程目录下去生成文件。出错情况是这样的:
==> default: package golang.org/x/tools/go/gcimporter15: unrecognized import path "golang.org/x/tools/go/gcimporter15" (https fetch: Get https://golang.org/x/tools/go/gcimporter15?go-get=1: dial tcp 216.239.37.1:443: i/o timeout)
golang.org/x/tools/go/这些地址都是连接不上的,因为被墙了。但其实这些代码都在github有的,我们要手动创建目录然后通过github去下载它。比如这个tools目录。
mkdirgolang.org/x这个目录在src目录下
创建一个和github.com平级的golang.rog 目录,然后呢进入x目录
localhost:golang.org pro$ cd x/ localhost:x pro$ ls localhost:x pro$ git clone https://github.com/golang/tools.git
在x目录下执行git clone 就可以了就生成了一个目录结构了。生成结果如下
其实如果这种方式安装好tools源码后还是不能编译通过的,我找了好久才发现。在hyperledger目录下还有一个自己的工作空间。
是在vagrant up时生成的。我们进入fabric目录看到
这里又需要生成,然后我以为只在自己的第一个工作空间添加上就好了,谁知它还会不断去安装tools源码,原来是这里还需要,只要把我们
刚才在另一个目录下git clone下载好的源码拷贝到这里就行了。
上面那个gotools目录是需要在devenv目录下下执行vagrant up时才会生成 的,只要把这个问题解决了。安装虚拟环境就没有问题了。
部署步骤:
打开ssh:
cd $GOPATH/src/github.com/hyperledger/fabric/devenv vagrant ssh
这个时候如果没装之前的ssh,就会报错。
以上登录成功以后会显示:@hyperledger-devenv 这样 就表示虚拟环境安装成功了。如果只是出现的unbunt的登录,那表示安装过程中有错误,虽然能登录进来会有很多东西缺失导致编译失败。
回到 要目录下我们查看,会有一个hyperledger的目录这个目录是映射我们的宿主主机的,当前我们在自己的电脑上更新了源代码,这里也会自动更新的,方便我们开发。
安全验证(可选):
To set up the local development environment with security enabled, you must first build and run the Certificate Authority(CA) server:
这个是可选项,主要用作member的身份认证,具体作用体现在后面的命令加不加username上。
make membersrvc && membersrvc
运行验证peer:
开另外一个命令行窗口,运行
cd $GOPATH/src/github.com/hyperledger/fabric/devenv vagrant ssh
然后,要注意的是,以下操作都是在上面的vagrant ssh登录以后才进行的操作。不是在当前的宿主机系统源码上进行的操作。
cd $GOPATH/src/github.com/hyperledger/fabric make peer peer node start --peer-chaincodedev
make peer过程会比较久我这里大概用了将近一小时左右,要安装下载一堆东西
下载完成以后会出现下面安装的的界面。
上面完成后执行:peer node start --peer-chaincodedev 这样,peer节点就起来了。
编译chaincode:
另开一个命令行窗口,运行:
cd $GOPATH/src/github.com/hyperledger/fabric/devenv vagrant ssh
然后选择源码中的一个例子chaincode机型编译
cd$GOPATH/src/github.com/hyperledger/fabric/examples/chaincode/go/chaincode_example02 go build
注册和运行chaincode:
CORE_CHAINCODE_ID_NAME=mycc CORE_PEER_ADDRESS=0.0.0.0:7051 ./chaincode_example02
mycc是chaincode的名称,可以随便定,只要在后面的过程中对应使用就行了。
ready for invocations 这样 就是这步OK了
CLI调试:
我没有用REST方式,用的CLI。
用户注册:
再 通过vagrant ssh打开一个终端再 登录。
cd $GOPATH/src/github.com/hyperledger/fabric/peer peer network login
username要从membersrvc.yaml里边选,比如alice试了几次别的用户都不成功,然后会要求输入密码,把后面的密码输入就行了。然后注册会成功。
membersrvc.yaml文件用户列表:
peer窗口可以看到注册信息:
Chaincode的部署交易:
peer chaincode deploy -n mycc -c '{"Function":"init", "Args": ["a","100", "b", "200"]}'
如果使用了安全模式:
CORE_SECURITY_ENABLED=true CORE_SECURITY_PRIVACY=true peer chaincode deploy -u jim -n mycc -c '{"Function":"init", "Args": ["a","100", "b", "200"]}'
Chaincode的调用交易:
peer chaincode invoke -l golang -n mycc -c '{"Function": "invoke", "Args": ["a", "b", "10"]}'
如果使用了安全模式:
CORE_SECURITY_ENABLED=true CORE_SECURITY_PRIVACY=true peer chaincode invoke -u jim -l golang -n mycc -c '{"Function": "invoke", "Args": ["a", "b", "10"]}'
Chaincode的查询交易:
peer chaincode query -l golang -n mycc -c '{"Function": "query", "Args": ["b"]}'
安全模式:
CORE_SECURITY_ENABLED=true CORE_SECURITY_PRIVACY=true peer chaincode query -u jim -l golang -n mycc -c '{"Function": "query", "Args": ["b"]}'
peer窗口
chaincode窗口
部署,调用和查询三个交易在这几个窗口中都可以看到。
这个部署总算是完成了,但是上面黑色窗口的部门我没用,我跑了一下他自带的智能合约,
真心感觉 hyperledger太庞大了,不是一般人能玩的。高度模块化 ,而且现在处于开发阶段变化特别大。比如上面有一部门是要,编译和启动用户模块membersrvc。在现在的git分支中没有这个代码 了不知道,为什么。所以就没用,但是在0.6分支还是有这块模块的。
但
但是在master分支下这块儿的代码没有,也请有分析过的给指导一下。
以上是“在mac下如何部署hyperledger fabric本地开发环境”这篇文章的所有内容,感谢各位的阅读!相信大家都有了一定的了解,希望分享的内容对大家有所帮助,如果还想学习更多知识,欢迎关注创新互联行业资讯频道!
我们在微信上24小时期待你的声音
解答本文疑问/技术咨询/运营咨询/技术建议/互联网交流