声明:本文大部分参考https://blog.csdn.net/tiandiwuya/article/details/78771475,若有侵权,请与我联系,当即删帖。css
本文纯作备忘,鉴于17年时候搭建过程那个曲折啊,但愿能给其余小伙伴有所启发。html
环境:阿里云服务器(我要去要广告费了,哈哈) 系统:Ubuntu 16.04 64位python
系统环境搭建略(云服务器很是方便,本身以前一直在这折腾虚拟机)。。。linux
Fabric环境搭建:git
下载最新版的gogithub
打开Terminal,输入命令(如下命令都是以root管理员的角色进行的)golang
su
输入密码:*****
wget https://storage.googleapis.com/golang/go1.9.2.linux-amd64.tar.gz
tar -C /usr/local -xzf go1.8.4.linux-amd64.tar.gz
sql
编辑当前用户的环境变量docker
vi /etc/profile
添加如下内容api
export PATH=$PATH:/usr/local/go/bin export GOROOT=/usr/local/go export GOPATH=$HOME/go export PATH=$PATH:$HOME/go/bin
编辑保存并退出vi后,记得使这些环境变量生效
source /etc/profile
把go的目录GOPATH设置为当前用户的文件夹下,因此记得建立go文件夹
cd ~ mkdir go
有时候wget获取go安装包的时候会由于网络问题失败,也能够用apt安装go,只不过版本是比较老旧的1.6.2,可是我在测试中也能够正常使用
apt-get install golang
添加的环境变量为
export PATH=$PATH:/usr/lib/go-1.6 export GOROOT=/usr/lib/go-1.6 export GOPATH=$HOME/go export PATH=$PATH:$HOME/go/bin
可使用阿里提供的镜像仓库,执行如下命令来安装Docker
curl -sSL http://acs-public-mirror.oss-cn-hangzhou.aliyuncs.com/docker-engine/internet | sh -
有的时候在第一步中没法安装成功,也可使用官方提供的脚原本安装docker
curl -sSl https://get.docker.com/ | sh
安装成功后启动docker服务:
service docker start
Docker-compose是支持经过模板脚本批量建立Docker容器的一个组件。在安装Docker-Compose以前,须要安装Python-pip,运行脚本:
apt-get install python-pip
而后是安装docker-compose,咱们从官方网站(https://github.com/docker/compose/releases)下载也能够从国内的进行DaoClound下载,为了速度快接下来从DaoClound安装Docker-compose,运行脚本:
curl -L https://get.daocloud.io/docker/compose/releases/download/1.12.0/docker-compose-`uname -s`-`uname -m` > ~/docker-compose mv ~/docker-compose /usr/local/bin/docker-compose chmod +x /usr/local/bin/docker-compose
能够用go get命令下载源码
go get github.com/hyperledger/fabric
若是下载失败也可使用git命令下载源码
mkdir -p ~/go/src/github.com/hyperledger cd ~/go/src/github.com/hyperledger git clone https://github.com/hyperledger/fabric.git
因为Fabric一直在更新,全部咱们并不须要最新最新的源码,须要切换到v1.0.0版本的源码便可:
cd ~/go/src/github.com/hyperledger/fabric git checkout v1.0.0
官方文件提供了批量下载的脚本。咱们直接运行:
cd ~/go/src/github.com/hyperledger/fabric/examples/e2e_cli/ source download-dockerimages.sh -c x86_64-1.0.0 -f x86_64-1.0.0
全部会用到的Fabric docker镜像都会下载下来了。
下载完毕后,咱们运行如下命令检查下载的镜像列表:
docker images
获得的结果以下:
6、启动Fabric网络并完成ChainCode的测试
咱们仍然停留在e2e_cli文件夹,这里提供了启动、关闭Fabric网络的自动化脚本。咱们要启动Fabric网络,并自动运行Example02 ChainCode的测试,执行一个命令:
bash network_setup.sh up
这个作了如下操做:
6.1编译生成Fabric公私钥、证书的程序,程序在目录:fabric/release/linux-amd64/bin
6.2基于configtx.yaml生成创世区块和通道相关信息,并保存在channel-artifacts文件夹。
6.3基于crypto-config.yaml生成公私钥和证书信息,并保存在crypto-config文件夹中。
6.4基于docker-compose-cli.yaml启动1Orderer+4Peer+1CLI的Fabric容器。
6.5在CLI启动的时候,会运行scripts/script.sh文件,这个脚本文件包含了建立Channel,加入Channel,安装Example02,运行Example02等功能。
最后运行完毕,咱们能够看到这样的界面:
若是您看到这个界面,这说明咱们整个Fabric网络已经通了。
相似这样的错误,是由于channel已经创建,命名冲突
解决办法:移除docker,从新启动。
-)强制删除所有容器 docker rm -f $(docker ps -aq)
而后从新执行
咱们仍然是以如今安装好的Example02为例,在官方例子中,channel名字是mychannel,链码的名字是mycc。咱们首先进入CLI,咱们从新打开一个命令行窗口,输入:
docker exec -it cli bash
运行如下命令能够查询a帐户的余额:
peer chaincode query -C mychannel -n mycc -c '{"Args":["query","a"]}'
能够看到余额是90:
而后,咱们试一试把a帐户的余额再转20元给b帐户,运行命令:
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帐户的余额,没问题的话,应该是只剩下70了。咱们看看实际状况:
果真,一切正常。最后咱们要关闭Fabric网络,首先须要运行exit命令退出cli容器。关闭Fabric的命令与启动相似,命令为:
cd ~/go/src/github.com/hyperledger/fabric/examples/e2e_cli
./network_setup.sh down
如今咱们整个Fabric的环境已经测试完毕,恭喜,一切正常,接下来咱们就是去作本身的区块链的开发。
本次搭建只遇到了一个错误,是跟阿里云相关,在我另外一篇随笔里面http://www.cnblogs.com/szqmvp/p/7838482.html 。
好了,如今算是正式开始自学相关技术,今年要踏入大热的大区块链开发了,欢迎你们互相交流,共同进步,改变世界。