zoukankan      html  css  js  c++  java
  • Hyperledger Fabric 环境搭建(1)

    1,Fabric的程序模块组成

    Fabric不是一个单独的程序而是由一组模块组成,这些模块中的每一个都是一个可独立运行的可执行文件。

    (1)peer  主节点模块,负责存储区块链数据,运行维护链码;

    (2)orderer  负责对交易进行排序,并将排好序的交易打包成区块;

    (3)cryptogen  组织和证书生成模块;

    (4)configtxgen  区块和交易生成模块;

    (5)configtxlator  区块和交易解析模块。

    开发一个Fabric应用都需要这些模块的参与。

    2,安装Golang运行环境

    安装Fabric之前要先安装Golang的运行环境和相关软件

    使用wget命令行下载安装包到linux
    wget https://studygolang.com/dl/golang/go1.12.linux-amd64.tar.gz
    
    解压到/usr/local
    tar -C /usr/local -xzf go1.12.linux-amd64.tar.gz
    vi /etc/profile   编辑环境变量文件
    export GOROOT=/usr/local/go    go的安装目录
    export PATH=$PATH:$GOROOT/bin    添加到环境比变量
    export GOPATH=/root/go      设置go的工作目录
    export PATH=$PATH:$GOPATH/BIN
    刷新环境变量
    source /etc/profile
    查看go是否安装成功
    go --version

    3,安装Docker

    https://docs.docker.com/install/linux/docker-ce/centos/

    安装docker

    curl -sSL https://get.daocloud.io/docker | sh
    查看是否下载成功,下载的版本是什么:docker version
    开启docker服务:service docker start
    查看docker运行状态:sudo service docker status
    安装完成后要修改当前用户的权限:
    sudo usermod -aG docker 用户名
    注销并重新登陆,随后添加DaoCloud镜像(加速器):
    curl -sSL https://get.daocloud.io/daotools/set_mirror.sh | sh -s http://36051225.m.daocloud.io
    重新启动docker:
    service docker start
    sudo service docker status
    把docker设置成开机自启动:
    systemctl enable docker

    安装docker-compose

    ubuntu:
    sudo apt-get install python-pip
    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
    
    centos:
    yum -y install epel-release
    sudo yum install python-pip
    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 

    4,Fabric的两种安装方式

    4.1利用源码直接编译

    利用已有Makefile文件进行make编译,编译完成后,这些模块就可以直接运行了。

    第一步:创建目录并下载代码

    mkdir -p $GOPATH/src/github.com/hyperledger
    cd $GOPATH/src/github.com/hyperledger 
    git clone https://github.com/hyperledger/fabric.git  (或者 git clone https://gerrit.hyperledger.org/r/fabric
    
    其中$GOPATH为Golang的工作目录

    第二步:安装相关依赖软件

    go get github.com/golang/protobuf/protoc-gen-go
    mkdir -p $GOPATH/src/github.com/hyperledger/fabric/.build/docker/gotools/bin
    cp $GOPATH/bin/protoc-gen-go $GOPATH/src/github.com/hyperledger/fabric/.build/docker/gotools/bin

    注意:

    (1)如果用go get 命令没有反应,可能是网址被屏蔽,参考https://blog.csdn.net/qq_22211217/article/details/101854419解决

    我用的是 设置代理 如下命令

    go env -w GOPROXY=https://github.com/goproxy

    (2)go get下载的文件会自动存放到$GOBIN对应的目录中,如果没有设置GOBIN,则会存放到$GOPATH/bin下面

    第三步:编译Fabric模块

    进入Fabric源码所在文件夹,执行下面命令可以一次编译完成fabric的5个主要模块。

    cd $GOPATH/src/github.com/hyperledger/fabric
    make release

    编译结果

    [root@localhost fabric]# make release
    Building release/linux-amd64/bin/configtxgen for linux-amd64
    mkdir -p release/linux-amd64/bin
    CGO_CFLAGS=" " GOOS=linux GOARCH=amd64 go build -o /root/go/src/github.com/hyperledger/fabric/release/linux-amd64/bin/configtxgen -tags "" -ldflags "-X github.com/hyperledger/fabric/common/tools/configtxgen/metadata.CommitSHA=8196d66" github.com/hyperledger/fabric/common/tools/configtxgen
    Building release/linux-amd64/bin/cryptogen for linux-amd64
    mkdir -p release/linux-amd64/bin
    CGO_CFLAGS=" " GOOS=linux GOARCH=amd64 go build -o /root/go/src/github.com/hyperledger/fabric/release/linux-amd64/bin/cryptogen -tags "" -ldflags "-X github.com/hyperledger/fabric/common/tools/cryptogen/metadata.CommitSHA=8196d66" github.com/hyperledger/fabric/common/tools/cryptogen
    Building release/linux-amd64/bin/idemixgen for linux-amd64
    mkdir -p release/linux-amd64/bin
    CGO_CFLAGS=" " GOOS=linux GOARCH=amd64 go build -o /root/go/src/github.com/hyperledger/fabric/release/linux-amd64/bin/idemixgen -tags "" -ldflags "-X github.com/hyperledger/fabric/common/tools/idemixgen/metadata.CommitSHA=8196d66" github.com/hyperledger/fabric/common/tools/idemixgen
    Building release/linux-amd64/bin/discover for linux-amd64
    mkdir -p release/linux-amd64/bin
    CGO_CFLAGS=" " GOOS=linux GOARCH=amd64 go build -o /root/go/src/github.com/hyperledger/fabric/release/linux-amd64/bin/discover -tags "" -ldflags "-X github.com/hyperledger/fabric/cmd/discover/metadata.CommitSHA=8196d66" github.com/hyperledger/fabric/cmd/discover
    Building release/linux-amd64/bin/configtxlator for linux-amd64
    mkdir -p release/linux-amd64/bin
    CGO_CFLAGS=" " GOOS=linux GOARCH=amd64 go build -o /root/go/src/github.com/hyperledger/fabric/release/linux-amd64/bin/configtxlator -tags "" -ldflags "-X github.com/hyperledger/fabric/common/tools/configtxlator/metadata.CommitSHA=8196d66" github.com/hyperledger/fabric/common/tools/configtxlator
    Building release/linux-amd64/bin/peer for linux-amd64
    mkdir -p release/linux-amd64/bin
    CGO_CFLAGS=" " GOOS=linux GOARCH=amd64 go build -o /root/go/src/github.com/hyperledger/fabric/release/linux-amd64/bin/peer -tags "" -ldflags "-X github.com/hyperledger/fabric/common/metadata.Version=1.4.4 -X github.com/hyperledger/fabric/common/metadata.CommitSHA=8196d66 -X github.com/hyperledger/fabric/common/metadata.BaseVersion=0.4.16 -X github.com/hyperledger/fabric/common/metadata.BaseDockerLabel=org.hyperledger.fabric -X github.com/hyperledger/fabric/common/metadata.DockerNamespace=hyperledger -X github.com/hyperledger/fabric/common/metadata.BaseDockerNamespace=hyperledger" github.com/hyperledger/fabric/peer
    Building release/linux-amd64/bin/orderer for linux-amd64
    mkdir -p release/linux-amd64/bin
    CGO_CFLAGS=" " GOOS=linux GOARCH=amd64 go build -o /root/go/src/github.com/hyperledger/fabric/release/linux-amd64/bin/orderer -tags "" -ldflags "-X github.com/hyperledger/fabric/common/metadata.Version=1.4.4 -X github.com/hyperledger/fabric/common/metadata.CommitSHA=8196d66 -X github.com/hyperledger/fabric/common/metadata.BaseVersion=0.4.16 -X github.com/hyperledger/fabric/common/metadata.BaseDockerLabel=org.hyperledger.fabric -X github.com/hyperledger/fabric/common/metadata.DockerNamespace=hyperledger -X github.com/hyperledger/fabric/common/metadata.BaseDockerNamespace=hyperledger" github.com/hyperledger/fabric/orderer
    [root@localhost fabric]# 
    View Code

     再执行 make docker

    上述make release和make docker操作完成后,会自动将编译好的二进制文件存放在以下路径中:

    $GOPATH/src/github.com/hyperledger/fabric/release/linux-amd64/bin

    利用docker images 命令查看生成的docker镜像

    第四步:安装Fabric模块

    编译完之后,这些模块就可以被运行了,但目前只能在编译文件所在的文件夹中运行这些模块。为了方便使用模块,通过下面命令将这些模块的可执行文件复制到系统目录中,这样就可以再系统的任何路径下运行了。

    cp $GOPATH/src/github.com/hyperledger/fabric/release/linux-amd64/bin/* /usr/local/bin/

    第五步:安装结果测试

     正确显示各个模块的版本信息,并且没有抛出异常,表明Fabric的模块编译和安装正确。

    4.2利用docker运行Fabric相关模块

    其中docker镜像既可以利用源码自己生成,也可以直接从Docker仓库中下载

    4.2.1利用源码生成docker镜像

    cd /home/jp/goworkspace/src/github.com/hyperledger/fabric
    make docker

     结果截图如  第三步:编译Fabric模块  中的截图,即为生成的docker镜像。

    4.2.2 从docker仓库中下载Fabric模块的Docker镜像文件

    官方文件也提供了批量下载docker镜像的脚本。我们直接运行:(先把前面生成的镜像删掉)

    cd $GOPATH/src/github.com/hyperledger/fabric/examples/e2e_cli/
    source download-dockerimages.sh -c x86_64-1.0.0 -f x86_64-1.0.0

    但是发现我用的fabric1.4竟然没有e2e_cli文件夹

    又去github确认了一下

    所以还是先切换到1.0完成这个实验,后续再看看新版的用法

    git checkout v1.0.0

    这样在运行上述脚本,就下载了所需的Fabric 的Docker镜像了。

    docker.io/hyperledger/fabric-peer  peer节点镜像,安装了peer相关文件
    
    docker.io/hyperledger/fabric-orderer  orderer节点镜像,安装了orderer相关文件
    
    docker.io/hyperledger/fabric-couchdb  couchdb数据库镜像,可以启动couchdb服务,供peer使用
    
    docker.io/hyperledger/fabric-ccenv  支持GO语言的链码基础镜像,其中安装了chaintool、Go语言的链码shim层。在链码容器生成过程中作为编译环境将链码编译为二进制文件,供链码容器使用,方便保持链码容器自身的轻量化。
    
    docker.io/hyperledger/fabric-javaenv  支持Java语言的链码基础镜像,其中安装了Gradle、maven、java链码的shim层等,可以用来生成java链码镜像。
    docker.io/hyperledger/fabric-kafka  可以启动kafka服务,供orderer使用。 docker.io/hyperledger/fabric-tools  安装了相关工具镜像文件,包括cryptogen、configtxgen、configtxlator等,可以作为测试客户端使用。 docker.io/hyperledger/fabric-zookeeper  可以启动zooleeper服务,供orderer的kafka使用 docker.io/hyperledger/fabric-ca  安装了fabric-ca相关文件

    接下来就可以搭建运行Fabric网络了 

     参考:

    《区块链开发实战 Hyperledger Fabric关键技术与案例分析》

    《区块链原理、设计与应用》

    https://docs.docker.com/install/linux/docker-ce/centos/

    https://www.cnblogs.com/studyzy/p/7437157.html

  • 相关阅读:
    eclipse中配置jbpm3.2插件
    传统分页功能的实现
    struts的status属性
    OA项目中的论坛模块设计与实现
    高并发
    Python下编写Windows自动化测试软件
    Windows GUI自动化测试技术的比较和展望
    Windows Automation API和自动化测试
    MSAA简介
    QQ截图时窗口自动识别的原理(WindowFromPoint, ChildWindowFromPoint, ChildWindowFromPointEx,RealChildWindowFromPoin
  • 原文地址:https://www.cnblogs.com/xdyixia/p/11738096.html
Copyright © 2011-2022 走看看