区块链环境搭建 基于arm-v8 CPU架构的服务器

服务器信息:

CPU: 华为鲲鹏

CPU 架构: ARM v8

系统: CenOS-AltArch 7.6

区块链环境搭建 基于arm-v8 CPU架构的服务器_第1张图片

相关工具安装

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 协议不支持, 解决如下:

区块链环境搭建 基于arm-v8 CPU架构的服务器_第2张图片

安装 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 daemon-reload
systemctl restart docker

加入开机启动:

systemctl start docker
systemctl enable docker

docker-compose 安装:

安装: pip install docker-compose

版本查看: docker-compose version

区块链环境搭建 基于arm-v8 CPU架构的服务器_第3张图片

安装 go

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

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

博主安装的版本:

区块链环境搭建 基于arm-v8 CPU架构的服务器_第4张图片

# 下载 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

下载 https://github.com/google/protobuf/releases ##Source code (zip)##

./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 做准备.

yum install Node.JS

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

区块链环境搭建 基于arm-v8 CPU架构的服务器_第5张图片

下载 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

区块链环境搭建 基于arm-v8 CPU架构的服务器_第6张图片

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 .. \

区块链环境搭建 基于arm-v8 CPU架构的服务器_第7张图片

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

区块链环境搭建 基于arm-v8 CPU架构的服务器_第8张图片

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

区块链环境搭建 基于arm-v8 CPU架构的服务器_第9张图片

fabric 源码编译

cd fabric

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

#all: native docker checks
all: native docker #checks

区块链环境搭建 基于arm-v8 CPU架构的服务器_第10张图片

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

区块链环境搭建 基于arm-v8 CPU架构的服务器_第11张图片

二进制文件编译

修改 Makefile 文件

在 100 行最右添加: Linux-arm64

在 350 行后添加如下内容:

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

区块链环境搭建 基于arm-v8 CPU架构的服务器_第12张图片

执行 make release

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

编译 fabric-ca

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

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

区块链环境搭建 基于arm-v8 CPU架构的服务器_第13张图片

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

区块链环境搭建 基于arm-v8 CPU架构的服务器_第14张图片

 

编译 fabric-ca 的二进制文件

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

结果测试

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

./byfn.sh up

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

区块链环境搭建 基于arm-v8 CPU架构的服务器_第15张图片

区块链环境搭建 基于arm-v8 CPU架构的服务器_第16张图片

重要采坑点:

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

解决: vi Makefile

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

区块链环境搭建 基于arm-v8 CPU架构的服务器_第17张图片

区块链环境搭建 基于arm-v8 CPU架构的服务器_第18张图片

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

解决办法如下:

区块链环境搭建 基于arm-v8 CPU架构的服务器_第19张图片

来源: http://www.bubuko.com/infodetail-3385348.html

没用试过,留日后备查

你可能感兴趣的:(HyperLedger,Fabric)