VirtualBox安装hyperledger fabric的有效教程和踩过的坑

前言:

看了网上安装hyperledger fabric很多教程,也尝试了很多种方法,使用不同的教程可能会发现有不同的坑。
这里,通过自己踩过的坑和成功的尝试,跟大家分享一下。

我使用的虚拟机版本是:VirtualBox的Ubuntu18.04(64 bit)。

文章引用:
hyperledger fabric的官网:https://hyperledger-fabric.readthedocs.io/en/release-1.1/index.html
我参考的有效安装教程:https://www.cnblogs.com/studyzy/p/7437157.html
     · 这篇文章的安装过程主要参考上面教程
我参考的解决docker的坑的教程:https://www.codetd.com/article/2377201

文章目录

      • 1. 检查apt source
      • 2. Go的安装
      • 3. Docker安装
        • 3.1 安装教程
        • 3.2 安装出现的坑
          • (1)出现的问题:
          • (2)解决方案
      • 4. Docker-Compose的安装
      • 5. Fabric源码下载
      • 6. Fabric Docker镜像的下载
      • 7.启动Fabric网络并完成ChainCode的测试
      • 8.手动测试一下Fabric网络

详细教程

1. 检查apt source

(1)检查apt source是否是国内的【原因:国外的apt source速度太慢了】

sudo vi /etc/apt/sources.list

打开这个apt源列表,如果其中看到是http://us.xxxxxx之类的,那么就是外国的;
如果看到是http://cn.xxxxx之类的,那么就不用换的。

(2)如果想将美国的源替换成国内的,需要做一下批量的替换。输入以下指令:

:%s/us./cn./g

然后输入:wq即可保存退出。

(3)更新一下源:

sudo apt-get update

(4)安装ssh:

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

sudo apt-get install ssh

2. Go的安装

【坑】 很多教程会让大家使用apt-get安装Go,但是安装下来的版本比较旧

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

【具体步骤】

(1)参考官方网站 https://golang.org/dl/ ,下载最新版的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

(2)编辑当前用户的环境变量:

vi ~/.profile

(3)在末尾添加以下内容:

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

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

source ~/.profile

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

cd ~
mkdir go

3. Docker安装

【注意】安装这一步的时候很容易出现问题,大家先看完下面可能出现的坑再继续

3.1 安装教程

(1)本教程种使用阿里提供的镜像,安装也非常方便。通过以下命令来安装Docker

curl -sSL http://acs-public-mirror.oss-cn-hangzhou.aliyuncs.com/docker-engine/internet | sh -

(2)安装完成后,修改当前用户(e.g.用户名叫 fabric)权限:

sudo usermod -aG docker fabric

(3)注销并重新登录,然后添加阿里云的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

注:
(a)不同的版本添加方法是不一样的,官方文档: https://cr.console.aliyun.com/#/accelerator
(b)觉得阿里云镜像不好用,喜欢用DaoClound的也可以用DaoClound的镜像,设置文档为:https://www.daocloud.io/mirror#accelerator-doc

3.2 安装出现的坑

(1)出现的问题:

VirtualBox安装hyperledger fabric的有效教程和踩过的坑_第1张图片

(2)解决方案
  • 理论上: 换个源应该是可以的,大家可以根据网上其他的教程尝试一下。但是换了很多个都没办法解决我的问题,因此我采用了下面的解决方案:
  • 具体步骤:

(1)删掉 /etc/apt/sources.list.d 目录下 所有的仓库源。

	【注】 /etc/apt/sources.list 是包管理工具 apt 所用的记录软件包仓库位置的配置文件;
 			同样的还有位于 /etc/apt/sources.list.d/*.list 的各文件。

(2)若删完之后 apt-get update 仍然失败,尝试重新去原来曾经使用正常的软件源官网 下载Ubuntu对应版本的镜像源(这里用的是中科大教育ustc.edu的源,Ubuntu18.04)

中科大教育ustc.edu的源的官网:https://mirrors.ustc.edu.cn/
镜像源页面:https://mirrors.ustc.edu.cn/repogen/

中科大的软件源,下载时有三个选项,分别是:
· HTTP 协议:可选项有 HTTP 和 HTTPS,这里选择的是 HTTPS
· 网络协议:可选项有 IPv4 和 IPv6,这里选择的是 IPv4
· Ubuntu 版本:因为博主自己使用的虚拟机是 18.04,所以这里选择的是 bionic(18.04)
	注意:一定选择合适自己虚拟机的版本,否则会更新失败

VirtualBox安装hyperledger fabric的有效教程和踩过的坑_第2张图片
(3) 进入文件所在目录,把这个 sources.list 文件移动到 /etc/apt/ 目录下覆盖。

sudo mv sources.list /etc/apt/

(4)软件源更新可用,可通过运行下面指令验证:

sudo apt-get update

4. Docker-Compose的安装

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

sudo apt-get install python-pip

(2)安装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源码下载

(1)使用Git命令下载源码,首先需要建立对应的目录,然后进入该目录,Git下载源码:

mkdir -p ~/go/src/github.com/hyperledger 
cd ~/go/src/github.com/hyperledger 
git clone https://github.com/hyperledger/fabric.git

(2)由于Fabric一直在更新,我们以使用v1.0.0版本为例,切换到v1.0.0版本的源码:

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

6. Fabric Docker镜像的下载

(1)运行官方文件提供的批量下载的脚本:

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

(2)下载完毕后,检查下载的镜像列表:

docker images

得到的结果如下:
VirtualBox安装hyperledger fabric的有效教程和踩过的坑_第3张图片

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

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

./network_setup.sh up

VirtualBox安装hyperledger fabric的有效教程和踩过的坑_第4张图片
这个做了以下操作:

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等功能。

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

VirtualBox安装hyperledger fabric的有效教程和踩过的坑_第5张图片

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

8.手动测试一下Fabric网络

我们仍然是以现在安装好的Example02为例:
在官方例子中,channel名字是mychannel,链码的名字是mycc。

(1)首先进入CLI,我们重新打开一个命令行窗口,输入:

docker exec -it cli bash

(2)运行以下命令可以查询a账户的余额:

peer chaincode query -C mychannel -n mycc -c '{"Args":["query","a"]}'

可以看到余额是90:
VirtualBox安装hyperledger fabric的有效教程和踩过的坑_第6张图片

(2)把a账户的余额再转30元给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","30"]}'

运行结果为:

VirtualBox安装hyperledger fabric的有效教程和踩过的坑_第7张图片

(3)转账完毕, 我们查询一下a账户的余额:
VirtualBox安装hyperledger fabric的有效教程和踩过的坑_第8张图片

(4)关闭Fabric网络,首先需要运行exit命令退出cli容器。

exit

(5)关闭Fabric的命令与启动类似,命令为:

cd ~/go/src/github.com/hyperledger/fabric/examples/e2e_cli

./network_setup.sh down

VirtualBox安装hyperledger fabric的有效教程和踩过的坑_第9张图片

后记:
现在我们整个Fabric的环境已经测试完毕,希望我的文章对大家有所帮助,少走一些坑!

你可能感兴趣的:(blockchain)