Hyperledger Fabric 环境部署及e2e_cli运行测试

版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/zjw6463/article/details/81355376

一、软件下载与安装

       1、Oracle VM VirtualBox 是一款虚拟机软件。(官网下载地址https://www.virtualbox.org/wiki/Downloads

       2、Vagrant 是一个可创建轻量级、高复用性和便于移植的开发环境的工具,用于创建和部署虚拟化开发环境。(官网下载地址https://www.vagrantup.com/downloads.html

       3、Git 一个开源的分布式版本控制系统。(官网下载地址https://git-scm.com/downloads

二、开发环境搭建

       上述软件安装完成后,开始使用Vagrant创建开发环境的虚拟机。首先选择一个文件夹,使用如下命令将Hyperledger Fabric项目克隆到本地并启动Vagrant。

#克隆项目
git clone https://github.com/hyperledger/fabric.git

#进入vagrant虚拟机目录
cd fabric/devenv

#启动vagrant
vagrant up

#连接virtualbox虚拟机
vagrant ssh

第一次执行vagrant up命令时,系统会先寻找是否存在所需的box镜像文件,如果没有找到,则会自动进行下载,创建VirtualBox虚拟机,之后会采用ssh协议连接虚拟机,执行已经写好的shell脚本进行开发环境的配置。环境配置如下:

(1)更新系统

sudo apt-get update

(2)安装一些基础的工具软件

sudo apt-get install -y build-essential git make curl unzip g++ libtool

(3)安装Docker和docker-compose

#1、添加远程仓库地址

#安装以下包以使apt可以通过HTTPS使用存储库(repository) 
sudo apt-get -y install apt-transport-https ca-certificates curl

#添加Docker官方的GPG密钥
curl -fsSL https://download.docker.com/linux/ubuntu/gpg | sudo apt-key add -

#使用下面的命令来设置stable存储库
sudo add-apt-repository "deb [arch=amd64] https://download.docker.com/linux/ubuntu $(lsb_release -cs) stable"

#更新一下apt包索引
sudo apt-get update

#2、安装Docker
sudo apt-get -y install docker-ce

#3、测试Docker
sudo docker run hello-world

如果显示一下结果,则表示Docker安装成功

vagrant@ubuntu-xenial:~$ sudo docker run hello-world
Unable to find image 'hello-world:latest' locally
latest: Pulling from library/hello-world
9db2ca6ccae0: Pull complete 
Digest: sha256:4b8ff392a12ed9ea17784bd3c9a8b1fa3299cac44aca35a85c90c5e3c7afacdc
Status: Downloaded newer image for hello-world:latest

Hello from Docker!
This message shows that your installation appears to be working correctly.

        在Docker安装完成之后,还需额外安装docker-compose工具,从而可以通过配置文件来部署与启动容器,docker-compose安装使用如下命令

sudo curl -L "http://github.com/docker/compose/releases/download/1.11.2/docker-compose-$(uname -s)-$(uname -m)" -o /usr/local/bin/docker-compose

sudo chmod +x /usr/local/bin/docker-compose 

        查看Docker和docker-compose的版本,如显示一下结果,则Docker环境安装完成。

vagrant@ubuntu-xenial:~$ docker -v
Docker version 18.06.0-ce, build 0ffa825

vagrant@ubuntu-xenial:~$ docker-compose -v
docker-compose version 1.11.2, build dfed245

       由于国内无法访问Docker官方站点,可以访问一些镜像站,比如阿里云、CloudDao等,通过下面命令设置CloudDao配置Docker加速器,快速下载Docker镜像。

curl -sSL https://get.daocloud.io/daotools/set_mirror.sh | sh -s http://176a5be3.m.daocloud.io

#重启服务
sudo systemctl restart docker.service

 

(4)安装Go语言环境

         1、首先访问官网https://golang.org/dl/,如下图

        2、选择Linux版本,复制下载链接,使用如下命令下载。

#创建一个文件夹
mkdir Download

#进去该文件夹
cd Download

#下载
wget https://storage.googleapis.com/golang/go1.10.3.linux-amd64.tar.gz

       3、解压压缩文件go1.10.3.linux-amd64.tar.gz到/usr/local/目录下,安装Go

sudo tar -C /usr/local -xzf go1.10.3.linux-amd64.tar.gz 

      4、配置Go环境变量

mkdir $HOME/go
sudo vim /etc/profile

#在/etc/profile文件中的判断语句下方添加下面的Go环境变量
export PATH=$PATH:/usr/local/go/bin
export GOPATH=$HOME/go


#修改后的profile文件如下所示:
if [ -d /etc/profile.d ]; then
  for i in /etc/profile.d/*.sh; do
    if [ -r $i ]; then
      . $i
    fi
  done                                                        
  unset i                                                     
fi                                                            

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

#执行source命令使其生效,然后使用go env命令输出Go环境配置信息。
source /etc/profile
go env

       5、测试Go语言

       输入以下命令:

cd $GOPATH
mkdir -p src/hello
cd src/hello/
vim hello.go

       输入测试代码:

package main
import "fmt"
func main(){
        fmt.Printf("hello, world\n")
}

       保存退出,使用go build命令编译后执行,显示如下结果则代表Go环境配置成功。

vagrant@ubuntu-xenial:~/go/src/hello$ go build
vagrant@ubuntu-xenial:~/go/src/hello$ ls
hello  hello.go
vagrant@ubuntu-xenial:~/go/src/hello$ ./hello
hello, world
vagrant@ubuntu-xenial:~/go/src/hello$ 

 

(5)安装Node.js, Node.js是一个JavaScript的运行环境,可以方便地搭建响应速度快、易于扩展的网络应用

sudo apt-get install nodejs
sudo apt install nodejs-legacy
sudo apt install npm

     如要安装最新的可参看该博客https://blog.csdn.net/u014361775/article/details/78865582

(6)安装Java环境,因为Fabric支持Java链码的编写。

sudo apt-get install -y openjdk-8-jdk maven

           如下显示则安装成功

vagrant@ubuntu-xenial:~$ java -version
openjdk version "1.8.0_171"
OpenJDK Runtime Environment (build 1.8.0_171-8u171-b11-0ubuntu0.16.04.1-b11)
OpenJDK 64-Bit Server VM (build 25.171-b11, mixed mode)
vagrant@ubuntu-xenial:~$ javac -version
javac 1.8.0_171

   

到此配置基本完成,Vagrant提供了一种便捷且全面的开发环境搭建方式,它需要基于VirtualBox虚拟机,然而最终应用往往是运行在物理服务器上的。而针对物理机上Fabric开发环境的构建,Fabric最核心的两项是Go语言环境和Docker环境的构建。Fabric源码采用Go语言进行编写,而Fabric应用则均以Docker容器的方式运行。至于其他的工具与软件,可以根据开发是的需求自行选择。

 

三、e2e_cli测试运行

 因为前面的配置都是在VM上的,所以测试就在VM上了。 

(1)拉取源码

#新建目录,因为fabric里面的包引用都是有特别的路径的
cd $GOPATH/src
mkdir -p github.com/hyperledger
cd github.com/hyperledger

#下载源码
git clone https://github.com/hyperledger/fabric.git

#如果怕下载慢,可以直接把主机中的fabric拷贝过来,共享文件夹在VM的 /hyperledger
cp -rf /hyperledger/fabric/ fabric

(2)编译configtxgen工具

             在fabric目录下执行已选命令:

cd $GOPATH/src/github.com/hyperledger/fabric
make configtxgen
# 如果出错:'ltdl.h' file not found
sudo apt install libtool libltdl-dev
# 然后再运行make
make configtxgen

           编译成功后输出:

.build/bin/configtxgen
CGO_CFLAGS=" " GOBIN=/root/go/src/github.com/hyperledger/fabric/.build/bin go install -tags "" -ldflags "-X github.com/hyperledger/fabric/common/tools/configtxgen/metadata.CommitSHA=" github.com/hyperledger/fabric/common/tools/configtxgen
Binary available as .build/bin/configtxgen

        编译后执行文件放在Fabric目录下的的build/bin/configtxgen

(3)执行完整脚本

        进入examples/e2e_cli目录,首先从Docker Hub拉取镜像:

# 使脚本可执行
chmod +x download-dockerimages.sh
# 执行脚本
./download-dockerimages.sh

       然后就会开始给你下载镜像, 完成后输入一下命令查看:

docker images

    如果有些没成功,可输入以下命令手动下载:

docker pull hyperledger/fabric-orderer:latest
docker pull hyperledger/fabric-peer:latest
docker pull hyperledger/fabric-zookeeper:latest
docker pull hyperledger/fabric-couchdb:latest
docker pull hyperledger/fabric-kafka:latest
docker pull hyperledger/fabric-ca:latest
docker pull hyperledger/fabric-ccenv:latest
docker pull hyperledger/fabric-javaenv:latest

   完成后执行脚本

#如果没有设置channel-ID参数,channel名默认是mychannel。  
./network_setup.sh up <channel-ID>

    开始执行

 ____    _____      _      ____    _____           _____   ____    _____ 
/ ___|  |_   _|    / \    |  _ \  |_   _|         | ____| |___ \  | ____|
\___ \    | |     / _ \   | |_) |   | |    _____  |  _|     __) | |  _|  
 ___) |   | |    / ___ \  |  _ <    | |   |_____| | |___   / __/  | |___ 
|____/    |_|   /_/   \_\ |_| \_\   |_|           |_____| |_____| |_____|

Channel name : mychannel
Check orderering service availability...

   执行成功后输出:

===================== Query successful on peer1.org3 on channel 'mychannel' ===================== 

===================== All GOOD, End-2-End execution completed ===================== 


 _____   _   _   ____            _____   ____    _____ 
| ____| | \ | | |  _ \          | ____| |___ \  | ____|
|  _|   |  \| | | | | |  _____  |  _|     __) | |  _|  
| |___  | |\  | | |_| | |_____| | |___   / __/  | |___ 
|_____| |_| \_| |____/          |_____| |_____| |_____|

    此时,网络启动运行并测试成功。

猜你喜欢

转载自blog.csdn.net/zjw6463/article/details/81355376