二维码

9.2 本地编译安装 - 数据结构 - 机器学习

1276 人阅读 | 时间:2021年01月15日 01:18
9.2 本地编译安装 - 数据结构 - 机器学习 #daohang ul li t,.reed .riqi,a.shangg,a.xiatt,a.shangg:hover,a.xiatt:hover,a.shang,a.xiat,a.shang:hover,a.xiat:hover,.reed-pinglun-anniu,span.now-page,#daohangs-around,#caidan-tubiao,#daohangs,#daohangs li,#btnPost{background-color:#D10B04;} .dinglanyou1 h3{border-bottom:3px solid #D10B04;} #dibuer{border-top:2px solid #D10B04;}.cebianlan .rongqi h3{border-bottom:1px solid #D10B04;} #edtSearch{border:1px solid #D10B04;} #daohang .zuo ul li{border-right:1px solid #;} #daohang ul li t a{border-top:1px solid #;border-right:1px solid #D10B04;} #daohang ul li t a:hover{border-right:1px solid #;} #daohang .you ul li a:hover,#daohang .zuo ul li a:hover,.reed-pinglun-anniu:hover{background-color:#;} a:hover,.reed h6 a:hover,#dibuer a:hover,.reed .riqiding,.cebianlan .rongqi li a:hover,#pinglun-liebiao ul.fubens li.depth-1 dl dd span.shu a,#pinglun-liebiao ul.fubens li.depth-1 dl dd span.huifuliuyan a:hover,.reed-biaoti h6 span{color:#D10B04;} .reed .kan a{color:#0A0AF5;}.reed .kan a:hover{color:#D10101;} @media screen and (max-width:1492px){a.shang,a.xiat{background:none;} a.xiat:hover,a.shang:hover{background-color:#f9f9f9;background-image:none;text-decoration:none;}} var _hmt = _hmt || [];(function() { var hm = document.createElement("script"); hm.src = "https://hm.baidu.com/hm.js?b19db5ba3b437a9e8698d2bc8fc64334"; var s = document.getElementsByTagName("script")[0]; s.parentNode.insertBefore(hm, s);})(); var _hmt = _hmt || []; (function() { var hm = document.createElement("script"); hm.src = "https://hm.baidu.com/hm.js?b19db5ba3b437a9e8698d2bc8fc64334"; var s = document.getElementsByTagName("script")[0]; s.parentNode.insertBefore(hm, s); })(); var _hmt = _hmt || []; (function() { var hm = document.createElement("script"); hm.src = "https://hm.baidu.com/hm.js?2d748c9763cfc72fb7d1ccab29f0770d"; var s = document.getElementsByTagName("script")[0]; s.parentNode.insertBefore(hm, s); })(); var _hmt = _hmt || []; (function() { var hm = document.createElement("script"); hm.src = "https://hm.baidu.com/hm.js?f6d451f3f1be23f3abf240c64c469c1b"; var s = document.getElementsByTagName("script")[0]; s.parentNode.insertBefore(hm, s); })();

当前位置:首页 » 区块链精品文章 » 正文

(function() { var s = "_" + Math.random().toString(36).slice(2); document.write('
'); (window.slotbydup = window.slotbydup || []).push({ id: "u3646201", container: s }); })();
(function() { var s = "_" + Math.random().toString(36).slice(2); document.write('
'); (window.slotbydup = window.slotbydup || []).push({ id: "u3646162", container: s }); })();

9.2 本地编译安装

1092 人参与  2018年09月29日 16:30  分类 : 区块链精品文章  评论

动手能力较强的读者,建议通过本地编译安装来部署超级账本Fabric网络,以便对相关组件有更深入的理解。

超级账本Fabric基于Go语言实现,本地编译推荐配置Golang 1.7或更高版本的环境。下面将讲解如何编译生成fabric-peer、fabric-orderer和fabric-ca等组件的二进制文件,以及如何安装一些配置和开发相关的工具。

9.2.1 操作系统

常见的Linux发行版(包括Ubuntu、Redhat、CentOS等)和MacOS等都可以原生支持Fabric编译和运行。

操作系统推荐Linux内核3.10+版本,支持64位环境。另外,作为Fabric节点,物理内存建议至少为2GB, 如果有较多的链码则需要更多容器;预留足够硬盘空间(一般建议20GB或更多)以存储区块文件。在生产环境中对性能和稳定性要求高的场景下,甚至要预留更 多的物理资源。

下面将默认以Ubuntu 16.04操作系统为例进行操作。

提示  运行Fabric节点需要的资源并不苛刻,作为实验,Fabric节点甚至可以在树莓派(Raspberry Pi)上正常运行。

9.2.2 环境配置

1.安装Go语言环境

Go语言环境可以自行访问golang.org网站下载二进制压缩包安装。注意不推荐通过包管理器安装,版本往往比较旧。

如下载Go 1.8版本,可以采用如下命令:


$ curl -O https://storage.googleapis.com/golang/go1.8.linux-amd64.tar.gz

下载完成后,解压目录,并移动到合适的位置(推荐为/usr/local下):


$ tar -xvf go1.8.linux-amd64.tar.gz
$ sudo mv go /usr/local

安装完成后记得配置GOPATH环境变量:


export GOPATH=YOUR_LOCAL_GO_PATH/Go
export PATH=$PATH:/usr/local/go/bin:$GOPATH/bin

此时,可以通过go version命令验证安装是否成功:


$ go version

go version go1.8 linux/amd64

2.安装依赖包

编译Fabric相关代码,需要一些依赖包,可以通过如下命令安装:


$ sudo apt-get update \
   && apt-get install -y libsnappy-dev zlib1g-dev libbz2-dev libltdl-
       dev libtool

3.安装Docker

Fabric网络目前依赖Docker服务作为链码容器的支持,因此即使是本地环境运行Fabric网络,也需要在Peer节点上安装Docker环境。推荐使用1.12或者更新的版本。

Linux操作系统下可以通过如下命令来快速安装Docker最新版本:


$ curl -fsSL https://get.docker.com/ | sh

MacOS下可以通过访问http://docs.docker.com/docker-for-mac/install 下载Docker for Mac安装包进行安装。

9.2.3 获取代码

目前,Fabric代码的官方仓库在社区的Gerrit上,并实时同步到GitHub仓库中,读者可以从任一仓库中获取代码。

首先,将Fabric代码按照Go语言推荐方式进行存放,创建目录结构并切换到该目录,如下命令所示:


$ mkdir -p $GOPATH/src/github.com/hyperledger
$ cd $GOPATH/src/github.com/hyperledger

通过如下命令可以获取fabric-peer和fabric-orderer组件编译所需要的代码,两者目前在同一仓库中:


$ git clone http://gerrit.hyperledger.org/r/fabric

默认情况下,会下拉获取带有完整历史的仓库,这个过程取决于网络速度,可能需要较长时间。读者也可以通过--single-branch-b master--depth 1命令选项来指定只获取master分支最新的提交代码,如下命令所示:


$ git clone --single-branch -b master --depth 1 http://gerrit.hyperledger.org/
   r/fabric

fabric-ca组件则在另外一个仓库中,同样,可以通过如下命令获取:


$ git clone http://gerrit.hyperledger.org/r/fabric-ca

9.2.4 编译安装fabric-peer组件

通过如下命令手动编译并安装fabric-peer到$GOPATH/bin下。目前fabric处于1.0.0大版本阶段,因此指定相关版本号为1.0.0:


$ cd $GOPATH/src/github.com/hyperledger/fabric
$ ARCH=x86_64
$ BASEIMAGE_RELEASE=0.3.1
$ PROJECT_VERSION=1.0.0
$ LD_FLAGS="-X github.com/hyperledger/fabric/common/metadata.Version=${PROJECT_
   VERSION} \
   -X github.com/hyperledger/fabric/common/metadata.BaseVersion=${BASEIMAGE_
       RELEASE} \
   -X github.com/hyperledger/fabric/common/metadata.BaseDockerLabel=org.
       hyperledger.fabric \
   -X github.com/hyperledger/fabric/common/metadata.DockerNamespace=hyperledger \
   -X github.com/hyperledger/fabric/common/metadata.BaseDockerNamespace=
       hyperledger"
$ CGO_CFLAGS=" " go install -ldflags "$LD_FLAGS -linkmode external -extldflags
   '-static -lpthread'" \
   github.com/hyperledger/fabric/peer

当然,用户也可以使用源码中的Makefile来进行编译。这种方式下,需要自动从DockerHub上获取包括基础镜像在内的依赖文件,花费时间可能稍长。相关命令如下所示:


$ cd $GOPATH/src/github.com/hyperledger/fabric
$ make peer

9.2.5 编译安装fabric-orderer组件

通过如下命令手动编译并安装fabric-orderer到$GOPATH/bin下:


$ cd $GOPATH/src/github.com/hyperledger/fabric
$ ARCH=x86_64
$ BASEIMAGE_RELEASE=0.3.1
$ PROJECT_VERSION=1.0.0
$ LD_FLAGS="-X github.com/hyperledger/fabric/common/metadata.Version=${PROJECT_
   VERSION} \
   -X github.com/hyperledger/fabric/common/metadata.BaseVersion=${BASEIMAGE_
       RELEASE} \
   -X github.com/hyperledger/fabric/common/metadata.BaseDockerLabel=org.
       hyperledger.fabric \
   -X github.com/hyperledger/fabric/common/metadata.DockerNamespace=hyperledger \
   -X github.com/hyperledger/fabric/common/metadata.BaseDockerNamespace=
       hyperledger"
$ CGO_CFLAGS=" " go install -ldflags "$LD_FLAGS -linkmode external -extldflags
   '-static -lpthread'" \
   github.com/hyperledger/fabric/orderer

同样,使用源码中的Makefile来进行编译的命令如下:


$ cd $GOPATH/src/github.com/hyperledger/fabric
$ make orderer

9.2.6 编译安装fabric-ca组件

可以通过如下命令编译并安装fabric-ca相关组件到$GOPATH/bin下:


$ go install -ldflags " -linkmode external -extldflags '-static
   -lpthread'" github.com/hyperledger/fabric-ca/cmd/..

9.2.7 编译安装辅助工具

Fabric中提供了一系列辅助工具,包括cryptogen(生成组织结构和身份文件)、configtxgen(生成配置区块和配置交易)、configtxlator(解读配置信息)等,可以通过如下命令快速编译和安装:


# 编译安装 cryptogen
$ PROJECT_VERSION=1.0.0
$ CGO_CFLAGS=" " \
   go install -tags "" \
   -ldflags "-X github.com/hyperledger/fabric/common/tools/cryptogen/
       metadata.Version=${PROJECT_VERSION}" \
   github.com/hyperledger/fabric/common/tools/cryptoge

# 编译安装 configtxgen
$ PROJECT_VERSION=1.0.0
$ CGO_CFLAGS=" " \
   go install -tags "nopkcs11" \
   -ldflags "-X github.com/hyperledger/fabric/common/configtx/tool/configtxgen/
       metadata.Version=${PROJECT_VERSION}" \
   github.com/hyperledger/fabric/common/configtx/tool/configtxge

# 编译安装 configtxlator
$ PROJECT_VERSION=1.0.0
$ CGO_CFLAGS=" " \
   go install -tags "" \
   -ldflags "-X github.com/hyperledger/fabric/common/tools/configtxlator/
       metadata.Version=${PROJECT_VERSION}" \
   github.com/hyperledger/fabric/common/tools/configtxlato

9.2.8 获取chaintool

chaintool可以协助用户对链码进行打包和部署,方便链码的开发测试,用户可以通过如下命令进行快速安装:


$ curl -L https://github.com/hyperledger/fabric-chaintool/releases/download/v0.
   10.3/chaintool > /usr/local/bin/chaintool
$ chmod a+x /usr/local/bin/chaintool

9.2.9 安装Go语言相关工具

Fabric代码由Go语言构建,开发者可以选择安装如下的Go语言相关工具,以方便开发和调试:


$ go get github.com/golang/protobuf/protoc-gen-go \
   && go get github.com/kardianos/govendor \
   && go get github.com/golang/lint/golint \
   && go get golang.org/x/tools/cmd/goimports \
   && go get github.com/onsi/ginkgo/ginkgo \
   && go get github.com/axw/gocov/... \
   && go get github.com/client9/misspell/cmd/misspell \
   && go get github.com/AlekSi/gocov-xm

9.2.10 示例配置

sampleconfig目录下包括了一些示例配置文件,可以作为参考基础进行编写。将它们复制到默认的配置目录(/etc/hyperledger/fabric)下:


$ cd $GOPATH/src/github.com/hyperledger/fabric/sampleconfig
$ cp configtx.yaml /etc/hyperledger/fabric
$ cp core.yaml  /etc/hyperledger/fabric
$ cp orderer.yaml /etc/hyperledger/fabric
$ cp msp/config.yaml /etc/hyperledger/fabric


来源:我是码农,转载请保留出处和链接!

本文链接:http://www.54manong.com/?id=930

(function() { var s = "_" + Math.random().toString(36).slice(2); document.write('
'); (window.slotbydup = window.slotbydup || []).push({ id: "u3646208", container: s }); })();
(function() { var s = "_" + Math.random().toString(36).slice(2); document.write('
'); (window.slotbydup = window.slotbydup || []).push({ id: "u3646147", container: s }); })();
window._bd_share_config={"common":{"bdSnsKey":{},"bdText":"","bdMini":"2","bdPic":"","bdStyle":"0","bdSize":"16"},"share":{},"image":{"viewList":["qzone","tsina","tqq","renren","weixin"],"viewText":"分享到:","viewSize":"16"},"selectShare":{"bdContainerClass":null,"bdSelectMiniList":["qzone","tsina","tqq","renren","weixin"]}};with(document)0[(getElementsByTagName('head')[0]||body).appendChild(createElement('script')).src='http://bdimg.share.baidu.com/static/api/js/share.js?v=89860593.js?cdnversion='+~(-new Date()/36e5)];
区块链是什么  

微信号:qq444848023    QQ号:444848023

加入【我是码农】QQ群:864689844(加群验证:我是码农)

<< 上一篇 下一篇 >>
(function() { var s = "_" + Math.random().toString(36).slice(2); document.write('
'); (window.slotbydup = window.slotbydup || []).push({ id: "u3646186", container: s }); })();
(function() { var s = "_" + Math.random().toString(36).slice(2); document.write('
'); (window.slotbydup = window.slotbydup || []).push({ id: "u3646175", container: s }); })();
搜索

网站分类

标签列表

最近发表

    (function(){ var bp = document.createElement('script'); var curProtocol = window.location.protocol.split(':')[0]; if (curProtocol === 'https'){ bp.src = 'https://zz.bdstatic.com/linksubmit/push.js'; } else{ bp.src = 'http://push.zhanzhang.baidu.com/push.js'; } var s = document.getElementsByTagName("script")[0]; s.parentNode.insertBefore(bp, s); })();

全站首页 | 数据结构 | 区块链| 大数据 | 机器学习 | 物联网和云计算 | 面试笔试

var cnzz_protocol = (("https:" == document.location.protocol) ? "https://" : "http://");document.write(unescape("%3Cspan id='cnzz_stat_icon_1276413723'%3E%3C/span%3E%3Cscript src='" + cnzz_protocol + "s23.cnzz.com/z_stat.php%3Fid%3D1276413723%26show%3Dpic1' type='text/javascript'%3E%3C/script%3E"));本站资源大部分来自互联网,版权归原作者所有!

jQuery(document).ready(function($){ /* prepend menu icon */ $('#daohangs-around').prepend('
'); /* toggle nav */ $("#caidan-tubiao").on("click", function(){ $("#daohangs").slideToggle(); $(this).toggleClass("active"); }); });

©著作权归作者所有:来自ZhiKuGroup博客作者没文化的原创作品,如需转载,请注明出处,否则将追究法律责任 来源:ZhiKuGroup博客,欢迎分享。

评论专区
  • 昵 称必填
  • 邮 箱选填
  • 网 址选填
◎已有 0 人评论
搜索
作者介绍
30天热门
×
×
本站会员尊享VIP特权,现在就加入我们吧!登录注册×
»
会员登录
新用户注册
×
会员注册
已有账号登录
×