您的位置:首页 > 其它

快速搭建一个Hyperledger Fabric 1.0的环境(目前很多环境搭建方法都会中途挂掉,这个亲测有效!)

2017-10-17 15:09 801 查看


超级记账本:快速搭建一个Hyperledger Fabric 1.0的环境

下面开始我们的环境搭建工作:

1. 使用VirtualBox并在其中安装好Ubuntu

这一步其实没啥好说的,下载好最新版的VirtualBox,下载Ubuntu Server,我用的是Ubuntu16.04.2 X64 Server。在安装完Ubuntu后,需要保证apt source是国内的,不然如果是国外的话会很慢很慢的。具体做法是

sudo vi /etc/apt/sources.list


打开这个apt源列表,如果其中看到是http://us.xxxxxx之类的,那么就是外国的,如果看到是http://cn.xxxxx之类的,那么就不用换的。我的是美国的源,所以需要做一下批量的替换。在命令模式下,输入:

:%s/us./cn./g


就可以把所有的us.改为cn.了。然后输入:wq即可保存退出。

sudo apt-get update


更新一下源。

然后安装ssh,这样接下来就可以用putty或者SecureCRT之类的客户端远程连接Ubuntu了。

sudo apt-get install ssh


2. Go的安装

Ubuntu的apt-get虽然提供了Go的安装,但是版本比较旧,最好的方法还是参考官方网站,下载最新版的Go。具体涉及到的命令包括:

wget https://storage.googleapis.com/golang/go1.9.linux-amd64.tar.gz sudo tar -C /usr/local -xzf go1.9.linux-amd64.tar.gz


【注意:不要使用apt方式安装go,apt的go版本太低了!】


接下来编辑当前用户的环境变量:

vi ~/.profile


添加以下内容:

export PATH=$PATH:/usr/local/go/bin
export GOROOT=/usr/local/go
export GOPATH=$HOME/go
export PATH=$PATH:$HOME/go/bin


编辑保存并退出vi后,记得把这些环境载入:

source ~/.profile


我们把go的目录GOPATH设置为当前用户的文件夹下,所以记得创建go文件夹

cd ~
mkdir go


3. Docker安装

我们可以使用阿里提供的镜像,安装也非常方便。通过以下命令来安装Docker

curl -sSL http://acs-public-mirror.oss-cn-hangzhou.aliyuncs.com/docker-engine/internet | sh -
如果安装失败:

简单方法

$ sudo apt-get update
$ sudo apt-get install docker
搞定!
但是这种方法有一个缺点:安装的不一定是最新的docker,安装版本是1.10.2,不过,对于docker使用没任何什么问题,如果要后续升级方便,可以使用下面的方法。

另一种方法

1.切换到root权限或者用sudo
2.升级source列表并保证https和ca证书成功安装
# apt-get update
# apt-get install apt-transport-https ca-certificates
3.增加新的GPG 密钥
# apt-key adv --keyserver hkp://p80.pool.sks-keyservers.net:80 --recv-keys 58118E89F3A912897C070ADBF76221572C52609D
4.新增或编辑source列表里的docker.list文件
# vi /etc/apt/sources.list.d/docker.list  //如果不存在就新增
5.删除已有的entries
6.按照系统版本增加entry(Ubuntu Xenial 16.04 (LTS))
deb https://apt.dockerproject.org/repo ubuntu-xenial main
7.重新执行更新操作,并删除老的repo
# apt-get purge lxc-docker  //没有安装的话,跳过
8.查看是否有正确的可用版本
# apt-cache policy docker-engine
如图:



9.从14.04版本以上开始docker推荐安装linux-image-extra
# apt-get install linux-image-extra-$(uname -r)
10.安装docker
# apt-get update
# apt-get install docker-engine
# service docker start
# docker run hello-world


安装完成后需要修改当前用户(我使用的用户叫fabric)权限:

sudo usermod -aG docker fabric


注销并重新登录,然后添加阿里云的Docker Hub镜像:

sudo mkdir -p /etc/docker
sudo tee /etc/docker/daemon.json <<-'EOF'
{
"registry-mirrors": ["https://obou6wyb.mirror.aliyuncs.com"]
}
EOF
sudo systemctl daemon-reload
sudo systemctl restart docker


不同的版本添加方法是不一样的,官方的文档如下:
https://cr.console.aliyun.com/#/accelerator

当然觉得阿里云镜像不好用,喜欢用DaoClound的也可以用DaoClound的镜像。DaoCloud的镜像设置文档为:https://www.daocloud.io/mirror#accelerator-doc

4. Docker-Compose的安装

Docker-compose是支持通过模板脚本批量创建Docker容器的一个组件。在安装Docker-Compose之前,需要安装Python-pip,运行脚本:

sudo 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
sudo mv ~/docker-compose /usr/local/bin/docker-compose
chmod +x /usr/local/bin/docker-compose


5. Fabric源码下载

我们可以使用Git命令下载源码,首先需要建立对应的目录,然后进入该目录,Git下载源码:


mkdir -p ~/go/src/github.com/hyperledger
cd ~/go/src/github.com/hyperledger
git clone https://github.com/hyperledger/fabric.git[/code] 
由于Fabric一直在更新,所有我们并不需要最新最新的源码,需要切换到v1.0.0版本的源码即可:

cd ~/go/src/github.com/hyperledger/fabric
git checkout v1.0.0


6. Fabric Docker镜像的下载

这个其实很简单,因为我们已经设置了Docker Hub镜像地址,所以下载也会很快。官方文件也提供了批量下载的脚本。我们直接运行:

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


得到的结果如下:




7.启动Fabric网络并完成ChainCode的测试

我们仍然停留在e2e_cli文件夹,这里提供了启动、关闭Fabric网络的自动化脚本。我们要启动Fabric网络,并自动运行Example02 ChainCode的测试,执行一个命令:

./network_setup.sh up


这个做了以下操作:

7.1编译生成Fabric公私钥、证书的程序,程序在目录:fabric/release/linux-amd64/bin

7.2基于configtx.yaml生成创世区块和通道相关信息,并保存在channel-artifacts文件夹。

7.3基于crypto-config.yaml生成公私钥和证书信息,并保存在crypto-config文件夹中。

7.4基于docker-compose-cli.yaml启动1Orderer+4Peer+1CLI的Fabric容器。

7.5在CLI启动的时候,会运行scripts/script.sh文件,这个脚本文件包含了创建Channel,加入Channel,安装Example02,运行Example02等功能。

最后运行完毕,我们可以看到这样的界面:





如果您看到这个界面,这说明我们整个Fabric网络已经通了。

8.手动测试一下Fabric网络

我们仍然是以现在安装好的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的环境已经测试完毕,恭喜,一切正常,接下来我们就是去做自己的区块链的开发。希望我的文章对大家有所帮助。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: