zoukankan      html  css  js  c++  java
  • Ubuntu下搭建Hyperledger Fabric v1.0环境

    多次尝试才正常启动了Fabric,如遇到各种莫名错误,请参考如下一步步严格安装,特别用户权限需要注意。

     

    一、安装Ubuntu16

    虚拟机或双系统,虚拟机有VirtualBox或者VMware,Ubuntu 16.04镜像安装好。
    打开系统设置,选择软件和更新 , 然后在下载自:中选择aliyun
     

     

     

    二、安装基础工具

     注意操作用户是自建用户,不是root,特别一些命令涉及用户目录的地方要特别注意

    首先安装一些常用工具

    1.  
      sudo apt-get update
    2.  
      sudo apt-get install ssh
    3.  
      sudo apt-get install git
    4.  
      sudo apt-get install python-pip

    go需要单独安装下

    1.  
      wget https://storage.googleapis.com/golang/go1.9.linux-amd64.tar.gz
    2.  
      sudo tar -C /usr/local -xzf go1.9.linux-amd64.tar.gz
    3.  
      gedit /etc/profile

    编辑全局变量环境,添加一下profile

    1.  
      export PATH=$PATH:/usr/local/go/bin
    2.  
      export GOROOT=/usr/local/go
    3.  
      export GOPATH=/home/<span style="color:#ff0000;">用户名</span>/go
    4.  
      export PATH=$PATH:/home/<span style="color:#ff0000;">用户名</span>/go/bin

    生效profile,建立go目录

    1.  
      source /etc/profile
    2.  
      mkdir /home/<spanstyle="color:#ff0000;">用户名</span>/go

    此时酌情重启下系统

     

     

    三、安装docker  基于aliyun

    1.  
      sudo apt-get update
    2.  
      sudo apt-get -y install apt-transport-https ca-certificates curl software-properties-common
    3.  
      # step 2: 安装GPG证书
    4.  
      curl -fsSL http://mirrors.aliyun.com/docker-ce/linux/ubuntu/gpg | sudo apt-key add -
    5.  
      # Step 3: 写入软件源信息
    6.  
      sudo add-apt-repository "deb [arch=amd64] http://mirrors.aliyun.com/docker-ce/linux/ubuntu $(lsb_release -cs) stable"
    7.  
      # Step 4: 更新并安装 Docker-CE
    8.  
      sudo apt-get -y update
    9.  
      sudo apt-get -y install docker-ce
     
     安装docker后还需要添加用户到docker组
    sudo usermod -aG docker XXX 
    注销并重新登录,然后添加阿里云的Docker Hub镜像: 
    建立docker文件 
    1.  
      sudo mkdir -p /etc/docker
    2.  
      sudo gedit /etc/docker/daemon.json
    {
    "registry-mirrors": ["https://obou6wyb.mirror.aliyuncs.com"]
    }
    1.  
      sudo systemctl daemon-reload
    2.  
      sudo systemctl restart docker
    最后 docker version 看下安装结果
     

    四、安装 Docker-Compose  从DaoClound

    1.  
      curl -L https://get.daocloud.io/docker/compose/releases/download/1.19.0/docker-compose-`uname -s`-`uname -m` > /usr/local/bin/docker-compose
    2.  
      chmod +x /usr/local/bin/docker-compose
    3.  
       
    4.  
      docker-compose version
     
     

    五.Fabric源码下载

    首先建好存放源码的文件夹(也可手动建)路径如下: 
    1.  
      mkdir –p ~/go/src/github.com/hyperledger
    2.  
      cd ~/go/src/github.com/hyperledger
    3.  
      git clone https://github.com/hyperledger/fabric.git
    由于我们只是在搭建环境。不需要最新的代码,所以只需要切换到v1.0.0大版本就行。
    1.  
      cd ~/go/src/github.com/hyperledger/fabric 进入fabric目录
    2.  
      git checkout v1.0.0

     

    六. Fabric Docker镜像的下载

     
    1.  
      cd ~/go/src/github.com/hyperledger/fabric/examples/e2e_cli/
    2.  
      source download-dockerimages.sh -c x86_64-1.0.0 -f x86_64-1.0.0
    3.  
       
    4.  
      docker images

     
     
     

    七、启动Fabric网络并完成ChainCode的测试

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

     

    1. 编译生成Fabric公私钥、证书的程序,程序在目录:fabric/release/linux-amd64/bin
    2. 基于configtx.yaml生成创世区块和通道相关信息,并保存在channel-artifacts文件夹。
    3. 基于crypto-config.yaml生成公私钥和证书信息,并保存在crypto-config文件夹中。
    4. 基于docker-compose-cli.yaml启动1Orderer+4Peer+1CLI的Fabric容器。
    5. 在CLI启动的时候,会运行scripts/script.sh文件,这个脚本文件包含了创建Channel,加入Channel,安装Example02,运行Example02等功能。 

    出现则表示网络运行成功,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无法解析域名的解决办法:
    Could not resolve host: download.docker.com
    

    修改文件/etc/resolvconf/resolv.conf.d/base

    vim /etc/resolvconf/resolv.conf.d/base
    # 在该文件加上一行:
    nameserver 8.8.8.8
    
    resolvconf -u   #执行
    


    安装过程中如果出现网络连接错误,可以将软件源改成阿里云镜像

    # 编辑/etc/apt/sources.list文件, 在文件最前面添加以下条目(适用于Ubuntu18.04

    deb http://mirrors.aliyun.com/ubuntu/ bionic main restricted universe multiverse
    deb http://mirrors.aliyun.com/ubuntu/ bionic-security main restricted universe multiverse
    deb http://mirrors.aliyun.com/ubuntu/ bionic-updates main restricted universe multiverse
    deb http://mirrors.aliyun.com/ubuntu/ bionic-proposed main restricted universe multiverse
    deb http://mirrors.aliyun.com/ubuntu/ bionic-backports main restricted universe multiverse
    deb-src http://mirrors.aliyun.com/ubuntu/ bionic main restricted universe multiverse
    deb-src http://mirrors.aliyun.com/ubuntu/ bionic-security main restricted universe multiverse
    deb-src http://mirrors.aliyun.com/ubuntu/ bionic-updates main restricted universe multiverse
    deb-src http://mirrors.aliyun.com/ubuntu/ bionic-proposed main restricted universe multiverse
    deb-src http://mirrors.aliyun.com/ubuntu/ bionic-backports main restricted universe multiverse
    
    #(适用于Ubuntu16.04)
    
    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 

    运行sudo apt install curl 安装curl,此时如果出现如下错误:

    E: Could not get lock /var/lib/dpkg/lock - open (11: Resource temporarily unavailable)
    E: Unable to lock the administration directory (/var/lib/dpkg/), is another process using it?

      解决方案:

    ps -A |grep apt # 查看进程号
    sudo kill -9 [processnumber]  #结束进程
    sudo apt install curl
    

     如果出现路径权限问题,需要将路径所有者改成自建用户,例如:

    sudo chown -R dsd:dsd ./bin/  # 将目录所有者改为自建用户 

    如果提示已经有容器在运行,发生冲突,则应停止正在运行的docker进程:

    docker ps -qa | xargs docker stop
    docker ps -qa | xargs docker rm
    # 或者:
    ./ network_setup.sh down
    

      Make 编译出错如下

     

    make configtxgen configtxlator cryptogen
    Makefile:93: *** "No go in PATH: Check dependencies".  Stop.
    

      解决方案:重新source环境变量,如:

     

    source /etc/profile
    # 或者:
    source ~/.bashrc
    

      


    教程参考以下:

    http://blog.csdn.net/so5418418/article/details/78355868

    https://yq.aliyun.com/articles/110806

    http://get.daocloud.io/

    Ubuntu下搭建Hyperledger Fabric v1.0环境 2018快速国内源

    多次尝试才正常启动了Fabric,如遇到各种莫名错误,请参考如下一步步严格安装,特别用户权限需要注意。

     

    一、安装Ubuntu16

    虚拟机或双系统,虚拟机有VirtualBox或者VMware,Ubuntu 16.04镜像安装好。
    打开系统设置,选择软件和更新 , 然后在下载自:中选择aliyun
     

     

     

    二、安装基础工具

     注意操作用户是自建用户,不是root,特别一些命令涉及用户目录的地方要特别注意

    首先安装一些常用工具

    1.  
      sudo apt-get update
    2.  
      sudo apt-get install ssh
    3.  
      sudo apt-get install git
    4.  
      sudo apt-get install python-pip

    go需要单独安装下

    1.  
      wget https://storage.googleapis.com/golang/go1.9.linux-amd64.tar.gz
    2.  
      sudo tar -C /usr/local -xzf go1.9.linux-amd64.tar.gz
    3.  
      gedit /etc/profile

    编辑全局变量环境,添加一下profile

    1.  
      export PATH=$PATH:/usr/local/go/bin
    2.  
      export GOROOT=/usr/local/go
    3.  
      export GOPATH=/home/<span style="color:#ff0000;">用户名</span>/go
    4.  
      export PATH=$PATH:/home/<span style="color:#ff0000;">用户名</span>/go/bin

    生效profile,建立go目录

    1.  
      source /etc/profile
    2.  
      mkdir /home/<spanstyle="color:#ff0000;">用户名</span>/go

    此时酌情重启下系统

     

     

    三、安装docker  基于aliyun

    1.  
      sudo apt-get update
    2.  
      sudo apt-get -y install apt-transport-https ca-certificates curl software-properties-common
    3.  
      # step 2: 安装GPG证书
    4.  
      curl -fsSL http://mirrors.aliyun.com/docker-ce/linux/ubuntu/gpg | sudo apt-key add -
    5.  
      # Step 3: 写入软件源信息
    6.  
      sudo add-apt-repository "deb [arch=amd64] http://mirrors.aliyun.com/docker-ce/linux/ubuntu $(lsb_release -cs) stable"
    7.  
      # Step 4: 更新并安装 Docker-CE
    8.  
      sudo apt-get -y update
    9.  
      sudo apt-get -y install docker-ce
     
     安装docker后还需要添加用户到docker组
    sudo usermod -aG docker XXX 
    注销并重新登录,然后添加阿里云的Docker Hub镜像: 
    建立docker文件 
    1.  
      sudo mkdir -p /etc/docker
    2.  
      sudo gedit /etc/docker/daemon.json
    {
    "registry-mirrors": ["https://obou6wyb.mirror.aliyuncs.com"]
    }
    1.  
      sudo systemctl daemon-reload
    2.  
      sudo systemctl restart docker
    最后 docker version 看下安装结果
     

    四、安装 Docker-Compose  从DaoClound

    1.  
      curl -L https://get.daocloud.io/docker/compose/releases/download/1.19.0/docker-compose-`uname -s`-`uname -m` > /usr/local/bin/docker-compose
    2.  
      chmod +x /usr/local/bin/docker-compose
    3.  
       
    4.  
      docker-compose version
     
     

    五.Fabric源码下载

    首先建好存放源码的文件夹(也可手动建)路径如下: 
    1.  
      mkdir –p ~/go/src/github.com/hyperledger
    2.  
      cd ~/go/src/github.com/hyperledger
    3.  
      git clone https://github.com/hyperledger/fabric.git
    由于我们只是在搭建环境。不需要最新的代码,所以只需要切换到v1.0.0大版本就行。
    1.  
      cd ~/go/src/github.com/hyperledger/fabric 进入fabric目录
    2.  
      git checkout v1.0.0

     

    六. Fabric Docker镜像的下载

     
    1.  
      cd ~/go/src/github.com/hyperledger/fabric/examples/e2e_cli/
    2.  
      source download-dockerimages.sh -c x86_64-1.0.0 -f x86_64-1.0.0
    3.  
       
    4.  
      docker images

     
     
     

    七、启动Fabric网络并完成ChainCode的测试

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

     

    1. 编译生成Fabric公私钥、证书的程序,程序在目录:fabric/release/linux-amd64/bin
    2. 基于configtx.yaml生成创世区块和通道相关信息,并保存在channel-artifacts文件夹。
    3. 基于crypto-config.yaml生成公私钥和证书信息,并保存在crypto-config文件夹中。
    4. 基于docker-compose-cli.yaml启动1Orderer+4Peer+1CLI的Fabric容器。
    5. 在CLI启动的时候,会运行scripts/script.sh文件,这个脚本文件包含了创建Channel,加入Channel,安装Example02,运行Example02等功能。 

    出现则表示网络运行成功,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的环境已经测试完毕!! 


     

    教程参考以下:

    http://blog.csdn.net/so5418418/article/details/78355868

    https://yq.aliyun.com/articles/110806

    http://get.daocloud.io/

  • 相关阅读:
    sudo命令 sudoers文件
    sscanf函数
    printf格式化输出
    c文件操作
    string和char*
    c去除空格 小写转大写
    主机序和网络序转换
    ulimit用法
    mysql基础(附具体操作代码)
    ES6 class
  • 原文地址:https://www.cnblogs.com/sddai/p/9373823.html
Copyright © 2011-2022 走看看