基于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做准备。
- yum install nodejs
- 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
如果没有用到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时,会抛出如下异常
解决办法如下:

基于arm v8搭建区块链环境的更多相关文章
- 基于 Jenkins 快速搭建持续集成环境--转
源地址:http://www.ibm.com/developerworks/cn/java/j-lo-jenkins/ 持续集成是一种软件开发实践,对于提高软件开发效率并保障软件开发质量提供了理论基础 ...
- hyperledger explorer 结合 fabric1.4 搭建 区块链浏览器 踩坑记录
博主通过这篇博客的步骤搭建区块链浏览器:https://blog.csdn.net/qq_32675427/article/details/99946945 进行到下面这一步时出现各种异常,浪费了博主 ...
- Python实现一条基于POS算法的区块链
区块链中的共识算法 在比特币公链架构解析中,就曾提到过为了实现去中介化的设计,比特币设计了一套共识协议,并通过此协议来保证系统的稳定性和防攻击性. 并且我们知道,截止目前使用最广泛,也是最被大家接受的 ...
- 基于 Webpack 4 搭建 Vue 开发环境
自从工作之后,就已经很久没有写过博客了.时间被分割得比较碎,积累了一段时间的学习成果,才写下了这篇博客. 之前有写过 Webpack4 的文章,但是都比较偏入门,唯一的一篇实战篇 -- 基于Webpa ...
- [转] 基于Gitlab CI搭建持续集成环境
[From] https://blog.csdn.net/wGL3k77y9fR1k61T1aS/article/details/78798577 前言 本文是在12月12号迅雷@赵兵在前端早读课第三 ...
- 基于 Jenkins 快速搭建持续集成环境
什么是持续集成 随着软件开发复杂度的不断提高,团队开发成员间如何更好地协同工作以确保软件开发的质量已经慢慢成为开发过程中不可回避的问题.尤其是近些年来,敏捷(Agile) 在软件工程领域越来越红火 ...
- python搭建区块链
#!/usr/bin/env python # encoding: utf-8 ''' 我们要创建一个 Blockchain 类 ,他的构造函数创建了一个初始化的空列表(要存储我们的区块链),并且另一 ...
- 基于ARM的RealView MDK开发环境
RealView MDK可以对各种嵌入式处理器的软件开发工具.这么高端,着实很吸引我,ADS12还不知道怎么搞,居然还有这么高端的,但是还是得了解一下唉.洗这个自动配 置启动代码,集成Flash烧写模 ...
- 基于jupyter lab搭建网页编程环境并添加自定义python kernel和matlab kernel以及plotly的使用
内容转载自我的博客 目录 说明 1. 创建虚拟环境jupyter 2. 安装nodejs(用于jupyterlab安装扩展) 3. 安装pip包 4. 使用jupyterlab 5. 配置jupyte ...
随机推荐
- PHP基础之查找
前言 之前的文章介绍了PHP的运算符.流程控制.函数.排序等.有兴趣可以去看看. PHP入门之类型与运算符 PHP入门之流程控制 PHP入门之函数 PHP入门之数组 PHP基础之排序 下面简单介绍一下 ...
- 在 .NetCore 项目中使用 SkyWalkingAPM 踩坑排坑日记
SkyWalking 概述 SkyWalking 是观察性分析平台和应用性能管理系统.提供分布式追踪.服务网格遥测分析.度量聚合和可视化一体化解决方案.支持Java, .Net Core, PHP, ...
- 从系统报表页面导出20w条数据到本地只用了4秒,我是如何做到的
背景 最近有个学弟找到我,跟我描述了以下场景: 他们公司内部管理系统上有很多报表,报表数据都有分页显示,浏览的时候速度还可以.但是每个报表在导出时间窗口稍微大一点的数据时,就异常缓慢,有时候多人一起导 ...
- Centos搭建go环境以及go入门
引言 本文主要聚焦于 如何在centos上搭建go环境以及go入门, 包括搭建go环境,hello world运行, 创建包等操作,初步入门go语言. 安装环境 在管理员权限下, 也就是root用户 ...
- 三、HelloWorld
1.创建Hello.java 文件, 2.输入内容 public class Hello{ //公共类 Hello public static void main(String[] args){ // ...
- 复习 Array,重学 JavaScript
1 数组与对象 在 JavaScript 中,一个对象的键只能有两种类型:string 和 symbol.下文只考虑键为字符串的情况. 1.1 创建对象 在创建对象时,若对象的键为数字,或者由 字母+ ...
- XXE漏洞学习笔记
XXE 参考文章 名称 地址 一篇文章带你深入理解漏洞之 XXE 漏洞 https://xz.aliyun.com/t/3357 Web Hacking 101 https://wizardforce ...
- SpringSecurity权限管理系统实战—三、主要页面及接口实现
系列目录 前言 后端五分钟,前端半小时.. 每次写js都头疼. 自己写前端是不可能的,这辈子不可能自己写前端的,只能找找别人的模板才能维持的了生存这样子.github,gitee上的模板又多,帮助文档 ...
- 转行做程序员,培训or自学?过来人亲身经历良心分享
大家好,我是良许. 熟悉我的朋友应该知道我是学机械出身的,但是毕业后就自学转行成了一名 Linux 应用开发工程师了.我之前也做了几个跟转行相关的视频,有兴趣的小伙伴可以去看看. 在本文里,我将给大家 ...
- springMVC入门(三)------springMVC的处理器映射器和处理器适配器配置
简介 springMVC的处理器映射器和处理器适配器存在多种配置,因此在此专门做一个总结 常见处理器映射器.适配器的配置 springmvc多个映射器多个处理器可以并存 所有的映射器都实现了Handl ...