在mac下如何部署hyperledgerfabric本地开发环境

这篇文章主要为大家展示了“在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启动都是这个样子:

在mac下如何部署hyperledger fabric本地开发环境

这一步要单独介绍一下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)

可以浏览一下镜像库

在mac下如何部署hyperledger fabric本地开发环境

当前的最新版本是0.2.1

本地的版本可以通过

vagrant box update的方式进行更新。

然后安装好镜像以后,一般会报一个错误。就是连接不到 google.com上去去更新代码,因为会在当前默认的工程目录下去生成文件。出错情况是这样的:

在mac下如何部署hyperledger fabric本地开发环境

==> 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目录下

在mac下如何部署hyperledger fabric本地开发环境

创建一个和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 就可以了就生成了一个目录结构了。生成结果如下

在mac下如何部署hyperledger fabric本地开发环境

其实如果这种方式安装好tools源码后还是不能编译通过的,我找了好久才发现。在hyperledger目录下还有一个自己的工作空间。

是在vagrant up时生成的。我们进入fabric目录看到

在mac下如何部署hyperledger fabric本地开发环境

这里又需要生成,然后我以为只在自己的第一个工作空间添加上就好了,谁知它还会不断去安装tools源码,原来是这里还需要,只要把我们

刚才在另一个目录下git clone下载好的源码拷贝到这里就行了。

上面那个gotools目录是需要在devenv目录下下执行vagrant up时才会生成 的,只要把这个问题解决了。安装虚拟环境就没有问题了。

部署步骤:

打开ssh

cd $GOPATH/src/github.com/hyperledger/fabric/devenv

vagrant ssh

这个时候如果没装之前的ssh,就会报错。 

在mac下如何部署hyperledger fabric本地开发环境

以上登录成功以后会显示:@hyperledger-devenv  这样 就表示虚拟环境安装成功了。如果只是出现的unbunt的登录,那表示安装过程中有错误,虽然能登录进来会有很多东西缺失导致编译失败。

在mac下如何部署hyperledger fabric本地开发环境

回到 要目录下我们查看,会有一个hyperledger的目录这个目录是映射我们的宿主主机的,当前我们在自己的电脑上更新了源代码,这里也会自动更新的,方便我们开发。

安全验证(可选):

在mac下如何部署hyperledger fabric本地开发环境

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过程会比较久我这里大概用了将近一小时左右,要安装下载一堆东西

在mac下如何部署hyperledger fabric本地开发环境

下载完成以后会出现下面安装的的界面。

在mac下如何部署hyperledger fabric本地开发环境

上面完成后执行:peer node start --peer-chaincodedev 这样,peer节点就起来了。

在mac下如何部署hyperledger fabric本地开发环境

编译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的名称,可以随便定,只要在后面的过程中对应使用就行了。

在mac下如何部署hyperledger fabric本地开发环境

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文件用户列表:

在mac下如何部署hyperledger fabric本地开发环境

在mac下如何部署hyperledger fabric本地开发环境

peer窗口可以看到注册信息:

在mac下如何部署hyperledger fabric本地开发环境

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"]}'

在mac下如何部署hyperledger fabric本地开发环境

peer窗口

在mac下如何部署hyperledger fabric本地开发环境

chaincode窗口

部署,调用和查询三个交易在这几个窗口中都可以看到。

这个部署总算是完成了,但是上面黑色窗口的部门我没用,我跑了一下他自带的智能合约,

在mac下如何部署hyperledger fabric本地开发环境

真心感觉 hyperledger太庞大了,不是一般人能玩的。高度模块化 ,而且现在处于开发阶段变化特别大。比如上面有一部门是要,编译和启动用户模块membersrvc。在现在的git分支中没有这个代码 了不知道,为什么。所以就没用,但是在0.6分支还是有这块模块的。

在mac下如何部署hyperledger fabric本地开发环境

在mac下如何部署hyperledger fabric本地开发环境

但是在master分支下这块儿的代码没有,也请有分析过的给指导一下。

在mac下如何部署hyperledger fabric本地开发环境

以上是“在mac下如何部署hyperledger fabric本地开发环境”这篇文章的所有内容,感谢各位的阅读!相信大家都有了一定的了解,希望分享的内容对大家有所帮助,如果还想学习更多知识,欢迎关注创新互联行业资讯频道!


当前名称:在mac下如何部署hyperledgerfabric本地开发环境
URL地址:http://scyanting.com/article/pcgigp.html