• HyperLedger/Fabric区块连网络 死磕fabric


    linux 查看版本

    查看版本: cat /proc/version 
    查看位数:getconf LONG_BIT

    linux添加DNS配置,出现不能上网的时候需要提前设置

    修改文件 /etc/resolvconf/resolv.conf.d/base
    
    nameserver 8.8.8.8
    nameserver 218.2.135.1
    
    保存退出后 重启服务
    systemctl restart systemd-resolved.service

    linux系统实现远程登录,SSH,SFTP

    ftp 服务 root 用户无法登陆:
    sudo vi /etc/ssh/sshd_config
    找到PermitRootLogin 一行,改为PermitRootLogin yes ,即允许root用户以任何认证方式登录
    $ sudo service ssh restart

    关闭防火墙

    部署前小白提前关闭防火墙
    1 关闭 sudo ufw disable 2 查看防火墙状态 sudo ufw status

    将Ubuntu的源改为国内的源(以阿里源为例)

    #首先进行配置文件的备份
    cp /etc/apt/sources.list /etc/apt/sources.list.bak
    #编辑配置文件
    vim /etc/apt/sources.list
    在配置文件中开头添加以下内容(阿里源):
        
    
    # deb cdrom:[Ubuntu 16.04 LTS _Xenial Xerus_ - Release amd64 (20160420.1)]/ xenial main restricted
    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-get update sudo apt-get upgrade

    安装C环境

    apt-get install bison ed gawk gcc libc6-dev make

    安装pip

    ubuntu系统自带了python2.7 和python3.5,我们直接使用python3
    检查是否安装:
    pip3 -V
    安装pip3:
    apt-get install python-pip #可忽略
    apt-get install python3-pip
    升级到最新pip
    pip install --upgrade pip #可忽略
    pip3 install --upgrade pip
    安装python工具包
    pip3 install --upgrade setuptools #可忽略 apt install python3 python-dev python3-dev build-essential libssl-dev libffi-dev libxml2-dev libxslt1-dev zlib1g-dev python-pip
    pip3 install pep517 # 可忽略

    Docker安装

    #1: 安装必要的一些系统工具
    sudo apt-get update
    sudo apt-get -y install apt-transport-https ca-certificates curl software-properties-common
    #2:安装GPG证书:
    curl -fsSL http://mirrors.aliyun.com/docker-ce/linux/ubuntu/gpg | sudo apt-key add -
    
    #3:也可以直接这样安装: 
    sudo apt install docker.io
    
    #4安装完成后需要修改当前用户(root)权限:
    sudo usermod -aG docker root
    
    #注销并重新登录,然后添加阿里云的Docker Hub镜像:
    #5 配置镜像加速器 
    
    #sudo tee /etc/docker/daemon.json <<-'EOF' 
    { 
    "registry-mirrors": ["https://9pvya26y.mirror.aliyuncs.com"] 
    } 
    EOF 
    sudo systemctl daemon-reload 
    sudo systemctl restart docker

    docker-compose升级安装

    #先卸载旧版本
    pip uninstall docker-compose
    
    #再安装指定版本: 
    pip install docker-compose==1.12.0 
    or
    pip3 install docker-comose==1.12.0
    
    #安装完成之后如果  docker-comose -v 
    #如果没显示 则重启服务器重新查看即可
    卸载失败:
     1.提示不存在
    python -m pip uninstall docker-compose
    2.提示没有gcc环境
    error: command 'i686-linux-gnu-gcc' failed with exit status 1
    解决:
    apt install python3 python-dev python3-dev 
          build-essential libssl-dev libffi-dev 
          libxml2-dev libxslt1-dev zlib1g-dev 
          python-pip
    
    python -m pip install --upgrade pip
    python -m pip uninstall docker-compose

    源码安装go1.11

    下载地址:https://studygolang.com/dl

    1.设置环境变量
    vim /etc/profile 
    增加如下内容:
    export GOROOT=/usr/local/go
    export PATH=$PATH:$GOROOT/bin
    export GOPATH=/usr/local/go_program
    环境变量生效:
    source /etc/profile
    
    2.安装C环境
    apt-get install bison ed gawk gcc libc6-dev make
    
    3.解压文件go1.4
    tar -zxvf go1.4.src.tar.gz
    mv go  /root/go1.4
    cd /root/go1.4/src
    安装1.4编译器
    CGO_ENABLED=0 ./make.bash
    
    4.安装1.11
    tar -zxvf go1.11.linux-386.tar.gz -C /usr/local/
    cd /usr/local/go/src
    ./all.bash

     安装完毕如下:

     

    Go Tools安装(非必需步骤)

    Fabric使用GO开发,其中用到了一些官方或者第三方的工具
    mkdir -p $GOPATH/src/golang.org/x
    cd $GOPATH/src/golang.org/x
    
    git clone https://github.com/golang/tour.git
    git clone https://github.com/golang/net.git
    git clone https://github.com/golang/blog.git
    git clone https://github.com/golang/sync.git
    git clone https://github.com/golang/tools.git
    git clone https://github.com/golang/lint.git
    # 其他工具
    git clone https://github.com/golang/benchmarks.git
    git clone https://github.com/golang/build.git
    git clone https://github.com/golang/crypto.git
    git clone https://github.com/golang/debug.git
    git clone https://github.com/golang/image.git
    git clone https://github.com/golang/mobile.git
    git clone https://github.com/golang/perf.git
    git clone https://github.com/golang/review.git
    git clone https://github.com/golang/text.git
    git clone https://github.com/golang/time.git
    git clone https://github.com/golang/tour.git
    git clone https://github.com/golang/exp.git
    
    运行过程提示  **** i/o timeout) 先如下操作,FQ
    $git clone https://github.com/golang/net.git net
    $go install net
    
    命令来安装Fabric可能用到的Go工具:
    go get github.com/kardianos/govendor
    go get github.com/golang/lint/golint
    go get golang.org/x/tools/cmd/goimports
    go get github.com/onsi/ginkgo/ginkgo
    go get github.com/axw/gocov/...
    go get github.com/client9/misspell/cmd/misspell
    go get github.com/AlekSi/gocov-xml
    go get github.com/golang/protobuf/protoc-gen-go
    
    benchmarks — benchmarks to measure Go as it is developed.
    blog — blog.golang.org's implementation.
    build — build.golang.org's implementation.
    crypto — additional cryptography packages.
    debug — an experimental debugger for Go.
    image — additional imaging packages.
    mobile — experimental support for Go on mobile platforms.
    net — additional networking packages.
    perf — packages and tools for performance measurement, storage, and analysis.
    review — a tool for working with Gerrit code reviews.
    sync — additional concurrency primitives.
    sys — packages for making system calls.
    text — packages for working with text.
    time — additional time packages.
    tools — godoc, goimports, gorename, and other tools.
    tour — tour.golang.org's implementation.
    exp — experimental and deprecated packages (may change without warning).

    第三方库安装 

    Fabric依赖的第三方库里面,有些库又依赖了其他库
    
    sudo apt-get install libltdl-dev 

    Fabric源码下载

    修改postBuffer的默认值
    git config --global http.postBuffer 524288000
    进行修改后确认
    git config --list
    
    修改配置 vim /etc/profile
    export GIT_TRACE_PACKET=1
    export GIT_TRACE=1
    export GIT_CURL_VERBOSE=1
    生效命令:
    source /etc/profile
    
    建立对应的目录 Git命令下载源码:
    mkdir -p ~/go/src/github.com/hyperledger 
    cd ~/go/src/github.com/hyperledger 
    注意:下载过程可能由于网络原因会失败,没有关系,重新下载即可,可能要多执行几次才会成功
    git clone https://github.com/hyperledger/fabric.git
    
    或者指定版本下载源码fabric:
    git clone -b release-1.0 git://github.com/hyperledger/fabric.git
    
    cd ~/go/src/github.com/hyperledger/fabric
    #版本为1.0的分支
    git branch -a
    git checkout release-1.0
    
    下载源码fabric-samples
    git clone https://github.com/hyperledger/fabric-samples.git
    cd ./fabric-samples
    #版本为1.0的分支
    git branch -a
    git checkout release-1.0

     源码下载失败处理办法:

    下载过程异常报错:
    error: RPC failed; curl 18 transfer closed with outstanding read data remaining
    修正方法:
    修改postBuffer的默认值
    git config --global http.postBuffer 524288000
    进行修改后确认
    git config --list
    
    修改配置 vim /etc/profile
    export GIT_TRACE_PACKET=1
    export GIT_TRACE=1
    export GIT_CURL_VERBOSE=1
    生效命令:
    source /etc/profile
    修改后重新下载。

    以上仍然下载失败的话,尝试浅下载:

    git clone --depth=1 http://xxx.git
    git fetch --unshallow

    源码编译并启动第一个fabric网络

    #首先进入fabric文件夹 
    cd ~/go/src/github.com/hyperledger/fabric/

    #编译源码 make release #查看生成的文件 cd release
    /linux-amd64/bin

     

    #如果文件夹内有如下文件的话说明编译成功
    #configtxgen  configtxlator  cryptogen  discover  idemixgen  orderer  peer
    #将生成的文件添加进环境变量
    vim ~/.profile
    #文件中最后添加以下内容
    export PATH=$PATH:$GOPATH/src/github.com/hyperledger/fabric/release/linux-amd64/bin
    #更新一下
    source ~/.profile

    下载所依赖的镜像

    source download-dockerimages.sh -c x86_64-1.0.0 -f x86_64-1.0.0

    完成上面的操作,就可以启动第一个fabric网络了。

    启动网络

    #进入first-network文件夹
    cd ~/go/src/github.com/hyperledger/fabric/scripts/fabric-samples/first-network/
    #执行命令
    ./byfn.sh -m up
    开启成功入下图
    #关闭网络
    ./byfn.sh -m dwon

    执行过程:

    第一次启动失败了

     

     上图问题出现后,上网找了一堆都没啥用,最后关闭防火墙后,过去了

    1 关闭
    sudo ufw disable 

    报错:Chaincode instantiation on PEER2 on channel 'mychannel' failed !

    解决:
    pip uninstall docker-compose
    再安装指定版本: 
    pip install docker-compose==1.12.0 

    错误:2017-09-12 14:17:49.952 UTC [grpc] Printf -> DEBU 003 grpc: addrConn.resetTransport failed to create client transport: connection error: desc = "transport: Error while dialing dial tcp 211.139.178.49:7050: i/o timeout"; Reconnecting to {orderer.example.com:7050 <nil>}

    !!!!!!!!!!!!!!! Channel creation failed !!!!!!!!!!!!!!!!
    ================== ERROR !!! FAILED to execute End-2-End Scenario ==================

    解决办法:

    修改宿主机hosts    /etc/hosts   ,在实际环境中,建议通过配置 DNS 而不是修改 /etc/hosts 文件

    127.0.0.1  orderer.example.com

    前面错没有了,但是又有新的错误:

     在网上找两个解决办法:说是镜像版本不一致导致

    先看看docker镜像

     参考:https://blog.csdn.net/qq_24889075/article/details/103363201

    解决:
     #1关闭服务
     ./byfn.sh -m down
     #2.先记录不一致的id信息后,然后关闭 再删除latest镜像景象
     docker rmi abf8289799c3 3df3c03f7ce2 e642eef94cae 1a326828a41f b31292eb8166
     #3.将现有的1.4或者amd64-0.4.21的镜像,改tag为latest
     docker tag  hyperledger/fabric-ccenv:1.4 hyperledger/fabric-ccenv:latest
     docker tag  hyperledger/fabric-baseos:amd64-0.4.21 hyperledger/fabric-baseos:latest
     #4.有必要的话就重启docker
     systemctl daemon-reload
     systemctl restart docker
     #5../byfn.sh -m up
    问题处理问题查找路径:
    https://blog.csdn.net/iflow/article/details/77951610
    执行
    一直报错,后来直接手动下载并制定版本并执行后成功了,yeah

    所有问题处理完之后启动

    ./byfn.sh -m up

     YEAH.

     
  • 相关阅读:
    input file 上传图片并显示
    关于npm ---- npm 命令行运行多个命令
    webpack4.x 配置
    React的生命周期
    HTML5 meta 属性整理
    css 命名规范
    html5 标签 meter 和 progress
    .NET Linq TO XML 操作XML
    .NET 字符串指定规则添加换行
    Linux Centos上部署ASP.NET网站
  • 原文地址:https://www.cnblogs.com/adao21/p/13491894.html
Copyright © 2020-2023  润新知