使用Putty连上服务器后,执行以下命令,做好部署前的准备。
在. bashrc文件尾部添加以下命令:
- #centos 7.1安装docker
- rpm -Uvh http://dl.Fedoraproject.org/pub/epel/6/x86_64/epel-release-6-8.noarch.rpm
- yum -y install docker-io
- service docker start
- # 开机自动启动
- chkconfig docker on
- docker run hello-world
- #安装docker-compose
- yum -y install epel-release
- yum install python-pip
- pip install --upgrade pip
- pip install docker-compose
- docker-compose version
- #安装nodejs:
- yum install nodejs
- node -v
- npm -v
- #搭建Go语言环境
- #如果是mini版CentOS,还要先安装wget
- yum install wget
- wget http://www.golangtc.com/static/go/1.8/go1.8.linux-amd64.tar.gz
- #将软件安装在目录/usr/local下
- tar -C /usr/local -xzf go1.8.linux-amd64.tar.gz
- #在/opt下面新建gopath目录,其中有3个子目录src、pkg、bin
- cd /opt;mkdir gopath;cd gopath
- mkdir src;mkdir pkg;mkdir bin;
- #修改环境变量配置文件
- yum install vim
- vim ~/.bashrc
使用“:wq”退出vim并保存修改
- export PATH=$PATH:/usr/local/go/bin;
- export GOPATH=/opt/gopath;
准备工作已经搞定,接下来开始部署Fabric
- #命令生效 运行
- source ~/.bashrc
- #测试go语言环境是否安装成功
- go version
0.6版比1.0简单些,我们这里用到peer,baseimage,membersrvc3个镜像。@H_404_11@
@H_404_11@
- docker pull hyperledger/fabric-peer
- docker pull hyperledger/fabric-membersrvc
- docker pull hyperledger/fabric-baseimage:x86_64-0.3.0
- #修改Tag为latest
- docker tag hyperledger/fabric-baseimage:x86_64-0.3.0 hyperledger/fabric-baseimage:latest
- #查看pull下来的镜像
- docker images
使用
yeasy提供的很好的HyperLedger的模板
- git clone https://github.com/yeasy/docker-compose-files
- #进入Git下载下来的Docker-compose目录
- cd docker-compose-files/hyperledger/0.6/pbft/
文件夹里提供了多种启动节点的方式
4-peers.yml
:
非安全模式
,
没有权限认证
,
启动4个
PBFT peer 节点
4-peers-with-explorer.yml :
启动 4 个 PBFT peer 节点 + 1 个 Blockchain-explorer,可以通过 Web 界面监控集群状态。
4-peers-with-membersrvc.yml:安全模式,
启动 4 个 P
BFT peer 节点 + 1 个 CA 节点,并启用 CA 功能。
4-peers-with-membersrvc-explorer.yml :
启动 4 个 PBFT peer 节点 + 1 个 CA 节点 + 1 个 Blockchain-explorer,并启用 CA 功能。
系统开始打出日志
- #我们选择最简单的
- docker-compose -f 4-peers.yml up
@H_404_11@日志不断滚动,而且没有报error 或者 exit就表示成功跑起了,接下来是跑Fabric的example2@H_404_11@
打开新的Putty,连接到pbft_vp0_1里面去
- docker exec -it pbft_vp0_1 bash
进入容器后,就可以部署
Example02到Fabric上,也就是智能合约可以发布区块链里面了,使用deploy命名
- peer chaincode deploy -p github.com/hyperledger/fabric/examples/chaincode/go/chaincode_example02 -c '{"Function":"init","Args": ["a","100","b","200"]}'
@H_404_11@
@H_404_11@
这个example演示两个账户a和b,a有余额100元,b有余额200元,并返回了ChainCode:@H_404_11@ee5b24a1f17c356dd5f6e37307922e39ddba12e5d2e203ed93401d7d05eb0dd194fb9070549c5dc31eb63f4e654dbd5a1d86cbb30c48e3ab1812590cd0f78539
@H_404_11@
下面我们把这个ID放入一个变量中,并查询一下a账户的余额,使用query命令:
- CC_ID="ee5b24a1f17c356dd5f6e37307922e39ddba12e5d2e203ed93401d7d05eb0dd194fb9070549c5dc31eb63f4e654dbd5a1d86cbb30c48e3ab1812590cd0f78539"
- peer chaincode query -n ${CC_ID} -c '{"Function": "query","Args": ["a"]}'
@H_404_11@
@H_404_11@
我们让a给b转账10元,使用invoke命令:
@H_404_11@
- peer chaincode invoke -n ${CC_ID} -c '{"Function": "invoke","10"]}'
查询a账户的余额
- peer chaincode query -n ${CC_ID} -c '{"Function": "query","Args": ["a"]}'