基于Ubuntu 16.04构建Hyperledger Fabric网络

在写这篇文章之前,由于刚入手区块链所以在搭建Hyperledger Fabric环境的时候踩了不少坑,可谓步履艰辛,所以在这里写一篇文章来分享一下自己的经验,希望对刚入手区块链的小伙伴neng能有所帮助。

第一步:下载最新的VM ware。(安装虚拟机)

 

第二步:下载Ubuntu 16.04 镜像,按着步奏导入就好。(在虚拟机上创创建Linux系统)

进入Linux系统,若使用的是服务器版本,则可以使用如下命令换成高速的源

  • 先备份原来的源文件

$ sudo cp /etc/apt/sources.list /etc/apt/sources.list.bak  (注:如果这里出现权限不够可用:sudo chmod 777 sources.list命令解决)

  • 打开source.list文件,删除原来的内容

$ sudo vim /etc/apt/sources.list      (注:这一步也可直接打开sources.list文件进行替换,替换后保存即可,如果权限不够可用:sudo chmod 777 sources.list解决。如果vim有错的话可以试一下用:sudo apt-get install vim命令解决)

将sources.list中内容用以下内容替换(这里用的是阿里源):

# deb cdrom:[Ubuntu 16.04 LTS _Xenial Xerus_ - Release amd64 (20160420.1)]/ xenial main restricted  
deb-src http://archive.ubuntu.com/ubuntu xenial main restricted #Added by software-properties  
deb http://mirrors.aliyun.com/ubuntu/ xenial main restricted  
deb-src http://mirrors.aliyun.com/ubuntu/ xenial main restricted multiverse universe #Added by software-properties  
deb http://mirrors.aliyun.com/ubuntu/ xenial-updates main restricted  
deb-src http://mirrors.aliyun.com/ubuntu/ xenial-updates main restricted multiverse universe #Added by software-properties  
deb http://mirrors.aliyun.com/ubuntu/ xenial universe  
deb http://mirrors.aliyun.com/ubuntu/ xenial-updates universe  
deb http://mirrors.aliyun.com/ubuntu/ xenial multiverse  
deb http://mirrors.aliyun.com/ubuntu/ xenial-updates multiverse  
deb http://mirrors.aliyun.com/ubuntu/ xenial-backports main restricted universe multiverse  
deb-src http://mirrors.aliyun.com/ubuntu/ xenial-backports main restricted universe multiverse #Added by software-properties  
deb http://archive.canonical.com/ubuntu xenial partner  
deb-src http://archive.canonical.com/ubuntu xenial partner  
deb http://mirrors.aliyun.com/ubuntu/ xenial-security main restricted  
deb-src http://mirrors.aliyun.com/ubuntu/ xenial-security main restricted multiverse universe #Added by software-properties  
deb http://mirrors.aliyun.com/ubuntu/ xenial-security universe  
deb http://mirrors.aliyun.com/ubuntu/ xenial-security multiverse 

按esc按键然后:wq保存退出。

然后使用如下命令更新一下

$ sudo apt-get update

执行完成后环境就基本上准备好了,如果使用的是服务器版本,觉得使用不方便的话,可以使用xshell之类的远程连接工具连接你的虚拟机。如果你的环境搭建再云服务器上,例如阿里云或者腾讯云,可以不用更新源,直接在自己的主机上使用远程连接工具连接上云主机,环境就算完成了(若在本地不能连接上云主机,或者虚拟机,检查一下ssh是否已经安装并启动,若没有,可以参加网上的教程,配置远程连接)。

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

$ sudo apt-get install ssh

 

第三步:go的安装

Ubuntu的apt-get自带的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
接下来编辑当前用户的环境变量
vi ~/.profile
在最后添加以下内容

将光标移动到文档的最后按o键然后将

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

复制粘贴到最后,按ESC键,然后按:wq保存退出。

如图
这里写图片描述

最后载入环境变量
source ~/.profile

我们把go的目录GOPATH设置在当前用户的文件夹下,所以记得要创建go文件夹
cd ~ 回到根目录
mkdir go 创建go文件夹
go环境安装完成!!

查看go版本,测试环境配置是否成功

$ go version
go version go1.9 linux/amd64

 

第四步:安装docker

  • 如果系统中有旧版本的Docker,需要先使用如下命令卸载

$ sudo apt-get remove docker docker-engine docker.io

  • 更新apt包索引

$ sudo apt-get update

  • 安装软件包以允许apt通过HTTPS使用远程库

$ sudo apt-get install apt-transport-https ca-certificates curl software-properties-common

  • 添加Docker的官方GPG密钥

$ curl -fsSL https://download.docker.com/linux/ubuntu/gpg | sudo apt-key add -

  • 使用以下命令设置稳定版本的远程库

$ sudo add-apt-repository "deb [arch=amd64] https://download.docker.com/linux/ubuntu $(lsb_release -cs) stable"

  • 再次更新apt包索引

$ sudo apt-get update

  • 使用apt安装docker-ce

$ sudo apt-get install docker-ce

然后修改当前用户的权限
sudo usermod -aG docker XXX
注销并重新登录,然后添加阿里云的Docker Hub镜像:
建立docker文件 sudo mkdir -p /etc/docker

sudo gedit /etc/docker/daemon.json

{

"registry-mirrors": ["https://obou6wyb.mirror.aliyuncs.com"]

}

保存并退出

sudo systemctl daemon-reload

sudo systemctl restart docker

最后 docker version 结果如下则成功。

这里写图片描述

docker安装完成!

如果只显示Client而不显示Server可尝试用一下命令解决

sudo groupadd docker     #添加docker用户组
sudo gpasswd -a $USER docker     #将登陆用户加入到docker用户组中
newgrp docker     #更新用户组
docker ps    #测试docker命令是否可以使用sudo正常使用


第五步docker-compose的安装

Docker-compose是支持通过模板脚本批量创建Docker容器的一个组件。在安装Docker-Compose之前,需要安装Python-pip,运行指令:
sudo apt-get install python-pip
然后安装docker-compose,考虑到国内外墙的原因,为了下载速度更快,我们选择从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

官方推荐为1.8.0版本以上,这里我们下载的是1.12.0。
查看docker-compose version 如下,docker-compose 安装成功!!

这里写图片描述

要是上面方法不行,还有一种方法就是直接sudo pip install docker-compose 效果一样(更新)

 

第六步:fabric源码下载

首先建好存放源码的文件夹(也可手动建)路径如下:
mkdir -p ~/go/src/github.com/hyperledger
cd ~/go/src/github.com/hyperledger
用git命令下载完整源码
git clone https://github.com/hyperledger/fabric.git(可能下载较慢需耐心等待,也有可能下载失败,不要灰心多下载几次,可能是因为网络原因)

上面的太慢的话可以用这个地址下载:git clone https://gerrit.hyperledger.org/r/fabric

*tips* Fabric代码一直在更新,以后如果只想下载最新的代码,可以通过–single-branch -b master –depth 1 命令选项来只获取master分支最新的代码。
由于我们只是在搭建环境。不需要最新的代码,所以只需要切换到v1.0.0大版本就行。

cd ~/go/src/github.com/hyperledger/fabric 进入fabric目录
git checkout v1.0.0

Fabric源码下载完成!!

 

第七步: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
结果如下图
这里写图片描述

其每个镜像的主要功能就不一一列举了,具体可看《区块链原理,设计与应用》这本书,讲的还是很详细的。

 

第八步:启动fabric网络完成chaincode的测试

现在还停留在e2e_cli文件中(如果没有先进入),这里提供了启动、关闭Fabric网络的自动化脚本。我们要启动Fabric网络,并自动运行Example02 ChainCode的测试,执行一个命令:
./network_setup.sh up

这个指令具体进行了如下操作:
编译生成Fabric公私钥、证书的程序,程序在目录:fabric/release/linux-amd64/bin

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

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

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

在CLI启动的时候,会运行scripts/script.sh文件,这个脚本文件包含了创建Channel,加入Channel,安装Example02,运行Example02等功能。
稍等一会以后,会看见这个界面,那就恭喜啦,整个Fabric网络已经通了 ,
这里写图片描述

ctrl+c退出
启动成功!!

 

第九步:手动测试fabric网络

这里有官方提供的小例子,在官方例子中,channel名字是mychannel,链码的名字是mycc。
首先进入CLI,然后重新打开一个命令行窗口,输入:
docker exec -it cli bash
这时用户为root@748dafdc900b,在/opt/gopath/src/github.com/hyperledger/fabric/peer目录下,运行以下命令可以查询a账户的余额:
peer chaincode query -C mychannel -n mycc -c '{"Args":["query","a"]}'
这里写图片描述

方框内可以看见余额为:90

下面我们可以进行转账操作,操作为invoke ,由a转b 50:
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","50"]}'

现在转账完毕, 我们试一试再查询一下a账户的余额,重复之前的查询指令,结果为:
这里写图片描述
结果正确,a的余额只有40了。
最后,我们需要关闭Fabric,这里先使用exit命令退出cli容器。
exit
然后类似于启动指令:
cd ~/go/src/github.com/hyperledger/fabric/examples/e2e_cli
./network_setup.sh down

这里写图片描述

到这,我们整个Fabric的环境已经测试完毕!!去做研究或者开发吧!!!

写这篇文章参考了:

基于Ubuntu 16.04快速构建Hyperledger Fabric网络

区块链之Hyperledger(超级账本)Fabric v1.0 的环境搭建(超详细教程)

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值