• 基于arm v8搭建区块链环境


    服务器信息:

      cpu:华为鲲鹏

      cpu架构:arm v8

      系统:CenOS-AltArch 7.6

     

    相关工具安装

    yum更新

    yum update

      

    安装vim/gcc/git/curl工具软件

    yum install vim
     
    yum install gcc
     
    yum install git
     
    yum install curl

     

    安装pip、python-pip

     这一步根据实际提示去操作,步奏省略。博主升级了python版本到3.7 ,安装了pip3、python-pip...

     可能需要升级openssl,升级openssl可以参照这篇文章:http://www.manongjc.com/detail/14-hnvvaaujxafjzbv.html

     注意:升级python之后,使用pip指令可能报错:https协议不支持,解决如下:

     

    安装docker及docker-compose

     docker安装:

       yum安装跟x86平台安装一样,步奏省略...

       博主的docker安装的是最新稳定版:19.03.5

      docker安装完成后,添加阿里云docker hub镜像 ,执行:

    sudo vi /etc/docker/daemon.json

      将以下内容添加到daemon.json中:

        {
          "registry-mirrors": ["https://obou6wyb.mirror.aliyuncs.com"]
        }

      执行以下命令,若不报错则添加成功,并重启docker

    systemctl start docker
    systemctl daemon-reload
    systemctl restart docker

      加入开机启动:

    systemctl enable docker

     docker-compose安装:

    安装:pip install docker-compose
    版本查看:docker-compose version

    安装go

      注意:需要先找到自己CPU架构对应的go版本

      go对应版本查看:https://studygolang.com/dl

      博主安装的版本

    # 下载go1.13.6.linux-arm64.tar.gz并将其解压到指定目录(此处为/usr/local)

    wget https://studygolang.com/dl/golang/go1.13.6.linux-arm64.tar.gz
    tar xzvf go1.13.6.linux-arm64.tar.gz -C /usr/local

    #修改系统环境变量

    vi /etc/profile

    打开文件后在最后面添加:

    # 使环境变量生效

    source  /etc/profile

    # 验证:go version

    安装 protobuf

      protobuf安装

      博主安装的最新版本3.11.2

    wget https://github.com/google/protobuf/releases/download/v3.11.2/protobuf-all-3.11.2.tar.gz
    
    ./autogen.sh
    
    ./configure
    
    make
    
    make check
    
    make install

      安装protobuf-compiler

    yum install protobuf-compiler
    
    go get -u github.com/golang/protobuf/protoc-gen-go

     #命令执行后会在$GOPATH/bin目录下发现这个工具

      

    安装一些依赖库

     yum install libc6-dev libltdl3-dev python-setuptools

    至此一切准备工作就绪,下面将进行与fabric相关的开发工作。

      安装Node.js

      Node.js为选装内容,为支持Node.js的 SDK做准备。

    1. yum install nodejs
    2. yum install npm

    Fabric环境搭建

      源码下载

        新建源码工程目录,执行

          mkdir -p $GOPATH/src/github.com/hyperledger/
        进入hyperledger目录,通过git clone fabric源代码,下载速度较慢,根据网络情况该部分代码需要下载一个小时左右。

          cd $GOPATH/src/github.com/hyperledger/
          git clone https://github.com/hyperledger/fabric.git

          注意:完成之后需要切换tag:具体操作百度自行切换,博主选择的tag是   v0.4.13

        下载fabric 项目源码(fabric-samples) 

          git clone https://github.com/hyperledger/fabric-samples.git

          注意:完成之后需要切换稳定版的分支:git checkout -b sample v1.4.0
        下载docker base image镜像源码

          git clone https://github.com/hyperledger/fabric-baseimage.git
        下载fabric ca源代码

          git clone https://github.com/hyperledger/fabric-ca.git

    源码编译

    由于fabric官方不支持ARM内核的二进制文件以及docker镜像(docker pull 镜像失败),因此需要我们自己编译,以下内容为二进制文件和镜像编译过程,其中涉及文件修改的部分,请对照git diff截图根据上下文查看具体位置,标准行号可能会有出入。

     docker base image镜像编译

      1、cd fabric-baseimage
      2、修改Makeflie文件,在41行出增加一行:DOCKER_BASE_arm64=aarch64/ubuntu:xenial

      3、修改images/couchdb/Dockerfile.in文件,在112行处增加如下内容:

         && chmod +w bin/rebar
         && mv bin/rebar bin/rebar-orig
         && cd bin
         && curl -fSL https://github.com/rebar/rebar/wiki/rebar --output rebar
         && chmod +x rebar
         && cd ..

      4、修改scripts/common/setup.sh文件,在73行处做如下修改:

      注释掉:NODE_PKG=node-v$NODE_VER-linux-$ARCH.tar.gz

      添加:NODE_PKG=node-v$NODE_VER-linux-arm64.tar.gz

       5、执行 make 编译docker镜像,时间较长,大约6-8个小时,中间可能会因为网络原因中断,再次执行make即可。编译成功执行docker images 查看是否编译成功。

     fabric源码编译

    cd fabric

    修改Makefile文件,在114行处做如下修改。 

    1. #all: native docker checks
    2. all: native docker #checks

     

     执行make,大约需要1-2个小时,编译成功执行docker images 查看是否编译成功。

    二进制文件编译

      修改Makefile文件

      在100行最右添加:linux-arm64

      在350行后添加如下内容:

        release/linux-arm64: GOARCH=arm64
        release/linux-arm64: $(patsubst %,release/linux-arm64/bin/%, $(RELEASE_PKGS))

    执行 make release

    成功之后会在release/linux-arm64/bin目录下生成二进制文件,然后把这些二进制文件拷贝到gopath/bin目录下。

    编译fabric-ca

      如果没有用到fabric-ca,当前步奏可以省略

      修改Makefile文件,在75行处做如下修改。

        all: rename docker unit-tests
        all: rename docker #unit-tests

     执行make,编译成功后执行docker images 命令查看编译是否成功。

    编译fabric-ca的二进制文件

      这一步,博主没有操作,因为没用到fabric-ca工具,省略

    结果测试

      进入项目代码目录/fabric-samples/first-network,执行:

    ./byfn.sh up

      出现以下结果,证明安装成功。

     

     

      问题纪要:

        1、docker-compose not  find....

        解决:找到docker-compose文件所在路径,配置环境变量(临时/永久),博主配置的临时环境。

       

        2、./byfn.sh启动时,提示如下异常:

        解决:/release/linux-arm64/bin/目录下生成的所有二进制文件拷贝到fabric-samples/bin目录下

     

      重要采坑点:

      问题一:fabric目录下执行make指令,可能会抛出找不到某个指定的docker镜像异常

         解决:vi   Makefile

         在下图位置修改成跟docker镜像相同的TAG

     

      问题二:在fabric目录下执行二进制编译命令:make release时,会抛出如下异常

      解决办法如下:

  • 相关阅读:
    C#动态显示时间
    死锁问题
    TCP_NODELAY算法使用事项
    二叉搜索树的后序遍历
    从上到下打印二叉树
    栈的压入、弹出序列
    包含min函数的栈
    顺时针打印矩阵
    树的子结构
    合并两个排序链表
  • 原文地址:https://www.cnblogs.com/Soy-technology/p/12206813.html
Copyright © 2020-2023  润新知