服务器信息:
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 daemon-reload
systemctl restart docker
加入开机启动:
systemctl start 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
下载 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
下载 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 行处做如下修改.
#all: native docker checks
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
修改 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
出现以下结果, 证明安装成功.
重要采坑点:
问题一: fabric 目录下执行 make 指令, 可能会抛出找不到某个指定的 docker 镜像异常
解决: vi Makefile
在下图位置修改成跟 docker 镜像相同的 TAG
问题二: 在 fabric 目录下执行二进制编译命令: make release 时, 会抛出如下异常
解决办法如下:
来源: http://www.bubuko.com/infodetail-3385348.html
没用试过,留日后备查