基於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時,會拋出如下異常

  解決辦法如下:


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM