首页 > 代码库 > HyperLedger-fabric V0.6 for CentOS7.2环境搭建

HyperLedger-fabric V0.6 for CentOS7.2环境搭建

BlockChain联盟链中的Hyperledger项目中的Fabrica项目是商业联盟应用区块链的基石之作,现在来搭建一个运行环境,进行技术验证。

安装组件如下:

1.Docker-compose:Docker 容器管理;    
2.Go lang SDK:Go 语言开发、编译环境;    
3.Git:git 镜像克隆与提交;    
4.Rest Client: rest API 测试;    
容器主要运行有:MemberSrv 和Peer;

一、HyperLedger Fabric环境资源准备

1、docker的安装

a)检查版本

$ uname –r

3.10.0-229.el7.x86_64

b)更新Centos

$ sudo yum update

c)安装需要软件

yum install –y  docker

d)把服务设备成开机启动并启动服务

systemctl enable docker.service

systemctl start docker

e)验证 docker正确安装(通过运行一个测试镜像,当容器运行时,它打印一个信息性消息并退出。)

docker run hello-world

技术分享

2、Docker Compose安装

Compose 定位是 “定义和运行多个 Docker 容器的应用”,可以很方便的从官方拉下来一些镜像,在此基础上再进行改造。它允许用户通过一个单独的 dockercompose.yml 模板文件(YAML 格式)来定义一组相关联的应用容器为一个项目(project)。

a).安装容器Compose(使用官方提供的方法,安装1.10.1版本):

curl -L https://github.com/docker/compose/releases/download/1.10.1/docker-compose-`uname -s`-`uname -m` > /usr/local/bin/docker-compose
chmod +x /usr/local/bin/docker-compose

docker-compose version

b).从 DockerHub上拉取镜像

mkdir /opt/fabric

cd /opt/fabric/

docker pull hyperledger/fabric-peer:latest  #拉取peer的镜像

docker pull hyperledger/fabric-membersrvc:latest   #拉取memberserver的镜像

docker images     #确认镜像拉取成功

c).在新建的/opt/fabric目录下建立Docker-compose.yml文件

vim  docker-compose.yml

内容如下:

#定义第一台虚拟机名称为membersrvc

membersrvc:

#指定镜像  
  image: hyperledger/fabric-membersrvc  
#暴露端口信息,  使用宿主:容器 格式,

ports:  
    - "7054:7054"  
##覆盖容器启动后默认执行的命令 

command: membersrvc  
#定义第二台虚拟机名称为vp0

vp0:  
  image: hyperledger/fabric-peer  
  ports:  
    - "7050:7050"  
    - "7051:7051"  
    - "7053:7053"  
#设置环境变量 

environment:  
    - CORE_PEER_ADDRESSAUTODETECT=true  
    - CORE_VM_ENDPOINT=unix:///var/run/docker.sock  
    - CORE_LOGGING_LEVEL=DEBUG  
    - CORE_PEER_ID=vp0  
    - CORE_PEER_PKI_ECA_PADDR=membersrvc:7054  
    - CORE_PEER_PKI_TCA_PADDR=membersrvc:7054  
    - CORE_PEER_PKI_TLSCA_PADDR=membersrvc:7054  
    - CORE_SECURITY_ENABLED=true  
    - CORE_SECURITY_ENROLLID=test_vp0  
    - CORE_SECURITY_ENROLLSECRET=MwYpmSRjupbT  
#数据卷所挂载路径设置。可以设置宿主机路径( HOST:CONTAINER ),该指令中路径支持相对路径

volumes:  
      - /var/run/:/var/run/  
#链接到其它服务中的容器 

links:  
    - membersrvc

#覆盖容器启动后默认执行的命令  
  command:  
    sh -c "sleep 5; peer node start --peer-chaincodedev"

 

d)运行docker-compose up 命令启动2个容器(MemberServer和Peer.到此,我们可以具备启动和运行chaincode,并进行权限管理的Fabric(虽然只有一个Peer)):

docker-compose up –d  #在后台运行容器

技术分享

直到启动日志显示如下内容,说明启动成功:

技术分享

使用Ctrl+z停止当前日志的显示后,运行docker-compose ps 可以看到服务和对应的端口映射:

技术分享

可以做些常用操作:

docker-compose logs -f vp0      #查看vp0的日志

docker-compose exec vp0 bash       #进入到vp0执行它的bash,exit命令可以退出,Ctrl+z退出而不停止容器。

docker-compose exec membersrvc bash   #进入到membersrvc执行它的bash,exit命令可以退出。

 

3、运行与发布Chaincode

a)进入vp0的bash,运行如下命令

docker-compose exec vp0 bash

cd $GOPATH/src/github.com/hyperledger/fabric/examples/chaincode/go

cp chaincode_example02/chaincode_example02.go $GOPATH/src/    #复制目录里面的例2到$GOPATH/src/ 进行编译

cd $GOPATH/src/

go build ./chaincode_example02.go     #编译成功会在GOPATH/src目录生成chaincode_example02文件

(chaincode_example02.go 源码链接https://raw.githubusercontent.com/hyperledger/fabric/master/examples/chaincode/go/chaincode_example02/chaincode_example02.go)

技术分享

b)发布chaincode在GOPATH/src 下运行

CORE_CHAINCODE_ID_NAME=mycc CORE_PEER_ADDRESS=0.0.0.0:7051 ./chaincode_example02

技术分享

直至出现“Received REGISTERED”字样,代表成功。

使用exit命令或Ctrl+z退出终端。

 

4、firefox中安装POST接口测试工具:

在firefox的附加组件中下载Restclient插件安装

技术分享

重启firefox后,打开RESTClient,进行POST测试

技术分享

 

5、系统环境测试:deploy(部署),invoke(调用),query(查询) chaincode(智能合约)(vp0中peer的用户名和密码在 membersrvc.yaml 文件里为jim: 6avZQLwcUe9b)

已经建成的环境架构,目前Farbric Peer只有一个vp0

技术分享

a)进入vp0容器

docker-compose exec vp0 bash

b)login

CLI方式

peer network login jim

输入密码:6avZQLwcUe9b

Rest方式(在Body中放入如下代码):

{  
"enrollId": "jim",  
"enrollSecret": "6avZQLwcUe9b"  
}

技术分享

返回用户已登录。

c)deploy(部署)

CLI方式

CORE_SECURITY_ENABLED=true CORE_SECURITY_PRIVACY=true peer chaincode deploy -u jim -n mycc -c ‘{"Args": ["init", "a","100", "b", "200"]}‘

技术分享

d)Invoke(调用)

CLI方式

CORE_SECURITY_ENABLED=true CORE_SECURITY_PRIVACY=true peer chaincode invoke -u jim -l golang -n mycc -c ‘{"Args": ["invoke", "a", "b", "10"]}‘

技术分享

e)query(查询)

CLI方式

CORE_SECURITY_ENABLED=true CORE_SECURITY_PRIVACY=true peer chaincode query -u jim -l golang -n mycc -c ‘{"Function": "query", "Args": ["b"]}‘

 

后记:Fabric V0.6和V1.0的架构完全不一样,也就是说在V0.6环境下开发的应用,没法在V1.0上运行,V0.6注定是一个过渡版本,期待V1.0在2017-3月能正式发布。

本文出自 “坚强的技术交流blog” 博客,请务必保留此出处http://newthink.blog.51cto.com/872263/1897340

HyperLedger-fabric V0.6 for CentOS7.2环境搭建