759876uyt 发表于 2017-2-14 09:13:30

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 –ydocker
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-composechmod +x /usr/local/bin/docker-composedocker-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文件
vimdocker-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月能正式发布。

页: [1]
查看完整版本: HyperLedger-fabric V0.6 for CentOS7.2环境搭建