二维码

11.2 安装服务端和客户端 - 数据结构 - 机器学习

1231 人阅读 | 时间:2021年01月15日 01:17
11.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 }); })();

11.2 安装服务端和客户端

1145 人参与  2018年09月29日 15:06  分类 : 区块链精品文章  评论

fabric-ca-server和fabric-ca-client都是基于Go语言实现的,很容易通过本地编译(需要本地Go语言环境支持)或Docker镜像的方式来快速安装使用。

11.2.1 本地编译

1.配置编译环境

本地编译需要满足如下两个基本依赖:

·Golang 1.7+,并配置GOPATH环境变量,建议添加$GOPATH/bin目录到系统路径中;

·libtool和libltdl-dev依赖库。

Go语言环境准备步骤与第9章的Fabric安装小节中介绍的相似。用户可以访问golang.org网站下载稳定版本的二进制压缩包进行安装。注意,仍然不推荐通过系统包管理器方式进行安装,这种方式下默认安装的版本往往比较旧。

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


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

而libtool和libltdl-dev依赖库可以从系统软件库中快速获取,以Ubuntu系统为例,可以使用如下命令:


$ sudo apt install libtool libltdl-dev

2.编译二进制文件

之后,可以通过如下命令来一并安装服务端(fabric-ca-server)和客户端(fabric-ca-client)二进制命令到$GOPATH/bin目录下:


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

也可以通过如下命令,分别单独编译服务端和客户端:


$ go get -u -ldflags " -linkmode external -extldflags '-static -lpthread'" github.
   com/hyperledger/fabric-ca/cmd/fabric-ca-server
$ go get -u -ldflags " -linkmode external -extldflags '-static -lpthread'" github.
   com/hyperledger/fabric-ca/cmd/fabric-ca-client

编译成功之后,就可以随时使用服务端和客户端命令了。例如:


$ fabric-ca-server -h
Hyperledger Fabric Certificate Authority Server

Usage:
   fabric-ca-server [command]

Available Commands:
   init        Initialize the fabric-ca server
   start       Start the fabric-ca server

Flags:
...

$ fabric-ca-client -h
Hyperledger Fabric Certificate Authority Client

Usage:
   fabric-ca-client [command]

Available Commands:
   enroll      Enroll an identity
   getcacert   Get CA certificate chain
   reenroll    Reenroll an identity
   register    Register an identity
   revoke      Revoke an identity

Flags:
...

除了本地编译方式外,也推荐用户使用Docker镜像的方式来快速安装使用,除了可以避免破坏本地系统环境外,还可以节约编译过程中的等待时间。

11.2.2 获取和使用Docker镜像

官方在DockerHub上的镜像名称为hyperledger/fabric-ca,可以通过如下命令直接拉取所需的版本,官方镜像目前并没有提供Dockerfile:


$ docker pull hyperledger/fabric-ca

也可以使用我们维护的带有完整Dockerfile的镜像。访问http://hub.docker.com/r/yeasy/hyperledger-fabric-ca/tags/ 查看可用的镜像标签,获取对应镜像。

例如采用如下命令拉取最新版的fabric-ca镜像:


$ docker pull yeasy/hyperledger-fabric-ca

为了方便使用,可以给镜像增加与官方镜像相同的标签:


$ docker tag yeasy/hyperledger-fabric-ca hyperledger/fabric-ca

获取镜像后,可以通过如下命令来快速进入容器,执行服务端或客户端命令。例如采用默认配置进行快速初始化并启动服务:


$ docker run -it hyperledger/fabric-ca bash
# fabric-ca-server init -b admin:adminpw

1.挂载本地配置文件

镜像中已经将配置目录($FABRIC_CA_SERVER_HOME和$FABRIC_CA_CLIENT_HOME)指定为Volume资源。用户在启动容器时,可以将本地存放配置文件的目录挂载到容器中,以方便对证书文件和数据库进行备份和管理:


$ docker run -it \
   -v LOCAL_PATH:/etc/hyperledger/fabric-ca-server \
   hyperledger/fabric-ca bash
#

2.暴露RESTful服务

此外,容器作为CA服务使用时,默认暴露的服务端口为7054,为了让其他物理机能访问到容器内的服务,可以将该端口映射到本地宿主机。

例如,下列命令将本地的7054端口与容器端口映射关联,之后其他物理机可以通过访问本地宿主机的7054端口来访问容器内服务:


$ docker run -it \
   -v LOCAL_PATH:/etc/hyperledger/fabric-ca-server \
   -p 7054:7054
   hyperledger/fabric-ca bash
#

11.2.3 示例Dockerfile

读者也可以自行通过编写Dockerfile在本地生成Docker镜像,这里给出示例文件供参考:


# Dockerfile for Hyperledger fabric-ca image.
# If you need a peer node to run, please see the yeasy/hyperledger-peer
   image.
# Workdir is set to $GOPATH/src/github.com/hyperledger/fabric-ca
# More usage infomation, please see https://github.com/yeasy/dockerhyper-ledger-
   fabric-ca.

FROM golang:1.8
LABEL maintainer "Baohua Yang <yeasy.github.com>"

# ca-server and ca-client will check the following env in order, to get the home
   cfg path
ENV FABRIC_CA_HOME /etc/hyperledger/fabric-ca-server
ENV FABRIC_CA_SERVER_HOME /etc/hyperledger/fabric-ca-server
ENV FABRIC_CA_CLIENT_HOME $HOME/.fabric-ca-client
ENV CA_CFG_PATH /etc/hyperledger/fabric-ca

# This is go simplify this Dockerfile
ENV FABRIC_CA_ROOT $GOPATH/src/github.com/hyperledger/fabric-ca

# Usually the binary will be installed into $GOPATH/bin, but we add local build
   path, too
ENV PATH=$FABRIC_CA_ROOT/bin:$PATH

# fabric-ca-server will open service to '0.0.0.0:7054/api/v1/'
EXPOSE 7054

RUN mkdir -p $GOPATH/src/github.com/hyperledger \
       $FABRIC_CA_SERVER_HOME \
       $FABRIC_CA_CLIENT_HOME \
       $CA_CFG_PATH \
       /var/hyperledger/fabric-ca-server

# Need libtool to provide the header file ltdl.h
RUN apt-get update \
       && apt-get install -y libtool \
       && rm -rf /var/cache/apt

# clone and build ca
RUN cd $GOPATH/src/github.com/hyperledger \
   && git clone --single-branch -b master --depth 1 https://github.com/hyper-ledger/
       fabric-ca \
 # This will install fabric-ca-server and fabric-ca-client into $GOPATH/bin/
   && go install -ldflags " -linkmode external -extldflags '-static lpthread'
       " github.com/hyperledger/fabric-ca/cmd/... \
 # Copy example ca and key files
   && cp $FABRIC_CA_ROOT/images/fabric-ca/payload/*.pem $FABRIC_CA_HOME/

VOLUME $FABRIC_CA_SERVER_HOME
VOLUME $FABRIC_CA_CLIENT_HOME

WORKDIR $FABRIC_CA_ROOT

# if no config exists under $FABRIC_CA_HOME, will init fabric-ca-serverconfig.
   yaml and fabric-ca-server.db
CMD ["bash", "-c", "fabric-ca-server start -b admin:adminpw"]


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

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

(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特权,现在就加入我们吧!登录注册×
»
会员登录
新用户注册
×
会员注册
已有账号登录
×