环境说明:
vmware workstation 12
ubuntu 16 desktop版本的
windows10
下面我将一步一步的进行操作搭建起fabric的开发环境,可以运行简单的例子程序。第一步是将需要的工具安装上,前提ubuntu可以上网。为了避免访问github.com等网站被墙,需要提前给ubuntu设置好网络代理,前提主机可以用工具进行。
如何设置网络代理:参考https://www.atgfw.org/2015/04/0.html
需要的工具安装:
git:
先执行以下: apt-get update, 然后直接执行apt install git进行安装。
golang:
参考:http://www.linuxdiyf.com/linux/24581.html
我的配置:
export GOROOT="/usr/local/go" //这个是你的golang解压后的路径
export GOBIN=$GOROOT/bin
export GOPATH=/opt/gopath //这个目录后面自己会创建出来,不要忘了在该目录下建立bin, src, pkg三个目录
export PATH=$PATH:$GOBIN
curl:
参考:http://www.linuxidc.com/Linux/2014-11/109910.htm
docker:
直接执行集成脚本:curl -sSL http://acs-public-mirror.oss-cn-hangzhou.aliyuncs.com/docker-engine/internet | sh -
然后执行run测试一下,如下图所示:
pip:
执行:apt install python-pip
docker-composer:
参考:https://yeasy.gitbooks.io/docker_practice/content/compose/install.html
执行:sudo pip install -U docker-compose
可以执行:docker-compose --version检查一下是否安装成功,如下图所示:
node.js:
(建议创建一个目录专门存放需要下载的压缩包)
在该目录下执行:wget https://nodejs.org/download/release/v6.9.5/node-v6.9.5-linux-x64.tar.gz
然后进行解压:tar -zxvf node-v6.9.5-linux-x64.tar.gz
然后进入到该解压包的bin/下,可以看到一个node的执行文件,执行./node -v可以看到版本号:6.9.5
对配置文件.bashrc进行设置:vim ~/.bashrc
在PATH变量后面加上一个冒号和你的该node执行文件的路径,如下图所示:(保存退出)
然后执行:
source ~/.bashrc
可以检查一下是否安装成功了:
布置环境:
1:下载代码
创建一个放项目的目录:mkdir -p /opt/gopath/src/github.com/hyperledger (很多资料和脚本都会自动去找这个目录,建议这样创建)
进入该目录:cd /opt/gopath/src/github.com/hyperledger/
下载代码:git clone http://gerrit.hyperledger.org/r/fabric
或者: git clone https://git.oschina.net/mellymeng/fabric.git
这是目录下回多一个文件夹fabric,进去就是fabric项目了。
2:下载镜像
可以使用脚本进行自动下载:
curl -sSL https://goo.gl/iX9dek | bash
如果你报端口443拒绝连接可以参考一下我的解决方法,比较傻瓜式的:
其中prepare文件中将https://goo.gl/iX9dek网页上面的脚本内容拷贝进去,保存。
这个脚本文件会把平台需要的二进制文件下载下来(多一个bin目录), 而来会把需要的镜像都下载下来。(需要等待一些时间)
下载镜像会比较的慢,请用阿里加速器,我之前有写这方面博客(http://blog.csdn.net/mellymengyan/article/details/77323691),或者百度一下。
镜像下载以后:
并且会多一个bin目录,下面是需要的二进制执行文件:
下面编辑一下配置文件~/.bashrc将该bin目录加上:
编译代码:
执行make docker命令,一直到success。
(中间会出现各种各样的问题,可以参考我的前面的文章,看看有没有帮助:http://blog.csdn.net/mellymengyan/article/details/77529747)
运行e2e_cli例子(自动):
进入到fabric目录中,执行:git checkout v1.0.0, 将版本1.0确认一下。
进入examples/e2e_cli中,执行:source download-dockerimages.sh -c x86_64-1.0.0 -f x86_64-1.0.0, 将所有需要的镜像全部下载下来,latest版本,最终将会看到如下:
在e2e_cli中,有自动启动,关闭网络的脚本,并且在脚本中设置了自动执行测试的脚本,测试中用到了example02 chaincode例子。接下来执行
./network_setup.sh up 命令启动fabric网络。启动过程中主要分为两个过程:
1:进行相关的部署和准备工作:
2:执行测试脚本,部署example02例子并执行:
最后出现这个画面,说明所有的测试都是正常的,成功的!
运行e2e_cli例子(手动):
我们可以直接在上面fabric网络启动起来,并跑完测试例子的基础上进行手动测试:
执行docker ps,查看当前的容器状态:
上面三个dev开头的容器是三个链码容器,一个fabric-tools充当客户端cli, 4个fabric-peer, 一个fabric-order提供节点共识服务。
接下里我们执行:docker exec -it cli bash 进入cli容器,进行操作测试:
首先,在example02上面已经对a进行了初始化,所以我们不用再初始化了,直接进行查询:
peer chaincode query -C mychannel -n mycc -c '{"Args":["query","a"]}'
查询结果为90, 说明a现在有90元。下面我们做一个交易,a向b转账20元。
peer chaincode invoke -o orderer.example.com:7050 --tls true --cafile /opt/gopath/src/github.com/hyperledger/fabric/peer/crypto/ordererOrganizations/example.com/orderers/orderer.example.com/msp/tlscacerts/tlsca.example.com-cert.pem -C mychannel -n mycc -c '{"Args":["invoke","a","b","20"]}'
然后再查询a: peer chaincode query -C mychannel -n mycc -c '{"Args":["query","a"]}'
发现A还剩70了,说明是正确的。通过exit来退出该容器。
至此,例子和环境都成功了。最后执行./network_setup.sh down, 进行网络的关闭和清理。