zoukankan      html  css  js  c++  java
  • 快速搭建一个Fabric 1.0的环境

    之前笔者写了一篇Fabric1.0 Beta的部署和Fabric 1.0的多机部署。但是很多人在部署Fabric的时候还是很容易出问题,所以我就再把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的安装,但是版本比较旧,最好的方法还是参考官方网站 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
    【注意:不要使用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 -

    安装完成后需要修改当前用户(我使用的用户叫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

    由于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

    得到的结果如下:

    image

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

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

    image

    如果您看到这个界面,这说明我们整个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:

    image

    然后,我们试一试把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"]}'

    运行结果为:

    image

    现在转账完毕, 我们试一试再查询一下a账户的余额,没问题的话,应该是只剩下70了。我们看看实际情况:

    image

    果然,一切正常。最后我们要关闭Fabric网络,首先需要运行exit命令退出cli容器。关闭Fabric的命令与启动类似,命令为:

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

    现在我们整个Fabric的环境已经测试完毕,恭喜,一切正常,接下来我们就是去做自己的区块链的开发。希望我的文章对大家有所帮助。

  • 相关阅读:
    性能测试的一些大实话:会linux命令以及其它工具,到底能不能做性能分析调优?
    使用Docker方式部署Gitlab,Gitlab-Runner并使用Gitlab提供的CI/CD功能自动化构建SpringBoot项目
    Docker安装Gitlab
    Docker部署ELK
    Dockerfile中ADD命令详细解读
    使用Gitlab CI/CD功能在本地部署 Spring Boot 项目
    SSH 克隆跟HTTP 克隆地址的区别
    Docker安装Gitlab-runner
    Docker方式安装Jenkins并且插件更改国内源
    使用docker-compose部署SonarQube
  • 原文地址:https://www.cnblogs.com/studyzy/p/7437157.html
Copyright © 2011-2022 走看看