安装hyperledger fabric V1.0.0-beta
安装文档位置:
https://github.com/hyperledger/fabric fabric代码托管地址
https://hyperledger-fabric.readthedocs.io/en/latest/ 在线文档地址
https://github.com/hyperledger/fabric/archive/v1.0.0.tar.gz fabric1.0.0源代码包地址
安装环境:
Vmware + CentOS7 64位 1611版本
安装前准备:
- 安装配置好虚拟机,需要保证curl命令可用
- 关闭centos自动升级,免得安装时提示yum被锁定
即将/etc/yum/pluginconf.d/langpacks.conf 中的 enable=1改为enable=0
sed -i 's/enabled=1/enabled=0/g' /etc/yum/pluginconf.d/langpacks.conf
yum update
- 使用yum install 安装tree(方便查看目录结构),git(用于下载代码)
- 安装docker和docker-compose
https://download.daocloud.io/ 找到docker和docker-compose的安装指导。我们选择在线安装根据指导执行命令即可。版本更新后指导也会更新,安装时最好去网站上获取最新的命令
安装docker
sudo yum install -y yum-utils
sudo yum-config-manager \
--add-repo \
https://download.daocloud.io/docker/linux/centos/docker-ce.repo
sudo yum install -y -q --setopt=obsoletes=0 docker-ce-17.03.1.ce*
sudo systemctl enable docker
sudo systemctl start docker
sudo service docker status
docker --version
输出:Docker version 17.03.1-ce, build c6d412e
安装docker-compose
curl -L https://get.daocloud.io/docker/compose/releases/download/1.12.0/docker-compose-`uname -s`-`uname -m` > /usr/local/bin/docker-compose
chmod +x /usr/local/bin/docker-compose
docker-compose --version
输出:docker-compose version 1.12.0, build b31ff33
使用阿里云进行镜像加速(如果能翻墙就不用加速了)
https://dev.aliyun.com 注册一个帐号。然后查看Docker Hub 镜像站点。指导文档写的很清楚。拷贝其中的内容执行即可。内容如下:
https后面的应该是你自己的镜像地址
sudo mkdir -p /etc/docker
sudo tee /etc/docker/daemon.json <<-'EOF'
{
"registry-mirrors": ["https://du8c1in9.mirror.aliyuncs.com"]
}
EOF
sudo systemctl daemon-reload
sudo systemctl restart docker
- 安装nodejs和NPM(需要V6 LTS版本。不支持V7或者V8)
https://nodejs.org nodejs网站,可以下载安装包进行安装,这里下载了node-v6.11.0-linux-x64.tar.xz解压包
将这个包放到/opt/nodejs目录下,当作安装目录
进行解压:
cd /opt
mkdir nodejs
cd nodejs
curl -o node-v6.11.0-linux-x64.tar.xz https://nodejs.org/dist/v6.11.0/node-v6.11.0-linux-x64.tar.xz
xz -d node-v6.11.0-linux-x64.tar.xz
tar -xvf node-v6.11.0-linux-x64.tar
建立软连接,后续替换版本方便
ln -s /opt/nodejs/node-v6.11.0-linux-x64/bin/node /usr/local/bin/node
ln -s /opt/nodejs/node-v6.11.0-linux-x64/bin/npm /usr/local/bin/npm
也可以通过设置nodejs环境变量的方式,在/etc/profile文件的
export PATH USER LOGNAME MAIL HOSTNAME HISTSIZE HISTCONTROL 一行的上面添加如下内容:
#set for nodejs
export NODE_HOME=/opt/nodejs/node-v6.11.0-linux-x64
export PATH=$NODE_HOME/bin:$PATH
升级NPM工具,刷新会很慢。但好像不执行也没有什么问题
npm install npm@latest -g
- 安装go语句环境
https://golang.org/dl/ go的主页下载地址,可以到这里寻找最新版本
cd /opt
mkdir golang
cd golang
curl -O https://storage.googleapis.com/golang/go1.8.3.linux-amd64.tar.gz
tar -zxvf go1.8.3.linux-amd64.tar.gz
cd /opt
mkdir gopath
在/etc/profile中配置go的环境变量
export GOROOT=/opt/golang/go
export PATH=$GOROOT/bin:$PATH
export GOPATH=/opt/gopath
修改完source /etc/profile 刷新一下,使用 go version查看版本,也可以使用go env查看环境变量信息
下载fabric1.0.0源代码:
将源代码下载gopath下,go get命令会将源代码下载到/opt/gopath/src/github.com/hyperledger/fabric目录下
go get github.com/hyperledger/fabric
目录结构如下:

下载fabric-sample镜像并启动:
首先找一个目录做为临时安装目录,这里用的是/opt/fabricinstall.
从刚才的源代码目录拷贝安装脚本过来,并执行,运行脚本时,会下载一个bin目录,里边有后续部署时会用的工具
cp /opt/gopath/src/github.com/hyperledger/fabric/scripts/bootstrap-1.0.0-beta.sh /opt/fabricinstall/
cd /opt/fabricinstall/
sh bootstrap-1.0.0-beta.sh
执行后就要开始等待镜像下载了,下载完成后,可以用以下命令,查看下载的镜像
docker images | grep hyperledger*
用阿里镜像很快装完了,如果使用镜像需要加上版本号,这里自动转成了latest就不用输入版本号了。所以每个镜像都有两行。

准备运行e2e_cli的例子
进入release目录,尝试启动容器。cli会挂载一个代码目录,所以这里将代码拷贝到对应目录中。
cd /opt/fabricinstall/release/linux-amd64
./network_setup.sh up
如果容器已经生成了,可以使用如下命令清理后,在进行network_set.
docker stop $(docker ps -q) & docker rm $(docker ps -aq)
如果之前下载过别的版本的镜像,可以使用如下命令进行清理
docker rmi -f $(docker images -q)
出现以下字样,没有报错。估计是成功了。

可以通过docker ps查询启动的容器,启动前是没有任何容器的。

这个过程中会创建一个例子,并将需要的容器都拉起来
可以看到看到启动了三个mycc(系统给出的例子) 一个cli(工具) 一个orderer(选举) 四个peer(客户端)
当然这个过程也可以手工进行,后续会专门写一个文档讲解。
测试fabric功能
使用./network_setup.sh up 启动以后,再开一个shell窗口,通过cli进行一些相关的部署工作
登录容器
docker exec -it cli bash
登录成功后,会进入cli容器,显示:
root@a1a11dd0bf54:/opt/gopath/src/github.com/hyperledger/fabric/peer#
需要执行install和Instantiate
首先进行install
peer chaincode install -n devincc -v 1.0 -p github.com/hyperledger/fabric/examples/chaincode/go/chaincode_example02

接下来是Instantiate,也就是初始化实例,设置a账户有100元,b账户有200元。
peer chaincode instantiate -o orderer.example.com: --tls $CORE_PEER_TLS_ENABLED --cafile /opt/gopath/src/github.com/hyperledger/fabric/peer/crypto/ordererOrganizations/example.com/orderers/orderer.example.com/msp/cacerts/ca.example.com-cert.pem -C mychannel -n devincc -v 1.0 -p github.com/hyperledger/fabric/examples/chaincode/go/chaincode_example02 -c '{"Args":["init","a", "100", "b","200"]}' -P "OR ('Org1MSP.member','Org2MSP.member')"

执行成功后,查一下a账户的余额
peer chaincode query -C mychannel -n devincc -c '{"Args":["query","a"]}'

接下来a账户对b账户进行转账

转账成功后,查询一下b账户的余额,应该是210。 (也可以将下面的参数改成a账户,余额应该是90)
peer chaincode query -C mychannel -n devincc -c '{"Args":["query","b"]}'

fabric环境配置结束。
安装过程涉及到了镜像脚本,还有初始化的一些内容,会再开一个文档进行探讨。
安装hyperledger fabric V1.0.0-beta的更多相关文章
- 使用docker加载已有镜像安装Hyperledger Fabric v1.1.0
背景 每次在新的服务器上安装Hyperledger Fabric网络时,通过fabric官方提供的脚本安装时,需要从网络上down下近10G的fabric相关镜像,这个过程是漫长及痛苦的,有时因网络问 ...
- Hyperledger Fabric(v1.2.0)代码分析1——channel创建
Hyperledger Fabric(v1.2.0)代码分析1--channel创建 0. e2e_cli Hyperledger Fabric提供了一个e2e的例子,该例中创建了一个基础的区块链网络 ...
- Hyperledger Fabric(v1.1.0)编译时遇到的问题
Hyperledger Fabric(v1.1.0)编译时遇到的问题 0. 编译过程的坑 编译时,按照如下顺序编译 make release,编译源码生成二进制文件 make docker,生成一系列 ...
- 安装hyperledger fabric V1.0.1
安装文档位置: https://github.com/hyperledger/fabric fabric代码托管地址 https://hyperledger-fabric.readthedoc ...
- Hyperledger Fabric v1.1.0安装记录(国内源版)
1. 安装虚拟机 虚拟机软件采用:VirtualBox 操作系统选择:Ubuntu 14.04 内存:4G CPU:2核 硬盘:20G 2.(可选)更改 ...
- 阿里云容器服务区块链解决方案全新升级 支持Hyperledger Fabric v1.1
摘要: 全球开源区块链领域影响最为广泛的Hyperledger Fabric日前宣布了1.1版本的正式发布,带来了一系列丰富的新功能以及在安全性.性能与扩展性等方面的显著提升.阿里云容器服务区块链解决 ...
- Ubuntu下搭建Hyperledger Fabric v1.0环境
多次尝试才正常启动了Fabric,如遇到各种莫名错误,请参考如下一步步严格安装,特别用户权限需要注意. 一.安装Ubuntu16 虚拟机或双系统,虚拟机有VirtualBox或者VMware,Ub ...
- 三、主流区块链技术特点及Hyperledger Fabric V1.0版本特点
一.Hyperledger fabric V1.0 架构 1.逻辑架构: 2.区块链网络 3.运行时架构 二.架构总结 1.架构要点 分拆Peer的功能,将Blockchain的数据维护和共识服务进行 ...
- 003-主流区块链技术特点及Hyperledger Fabric V1.0版本特点
一.Hyperledger fabric V1.0 架构 1.逻辑架构: 2.区块链网络 3.运行时架构 二.架构总结 1.架构要点 分拆Peer的功能,将Blockchain的数据维护和共识服务进行 ...
随机推荐
- Uedit编辑器编辑Velocity
1.切换到源代码模式 UM.getEditor('editor').execCommand("source"); 2.给编辑器插入Velocity源码 $(".edui- ...
- 排序算法<No.1> 【计数排序】
继上篇博文,今天我将先介绍一下什么是计数排序,将计数排序描述清楚后,再进行后续的桶排序方法解决这个问题. 通常情况下,一提到排序,大家第一反应就是比较,其实,今天我要说的这个计数排序,不是基于比较的排 ...
- 总线读写---verilog代码
总线读写---verilog代码 `timescale 1ns / 1ps ////////////////////////////////////////////////////////////// ...
- Vivado HLS初识---阅读《vivado design suite tutorial-high-level synthesis》(4)
Vivado HLS初识---阅读<vivado design suite tutorial-high-level synthesis>(4) 1.老样子,首先运行tcl脚本建工程: Vi ...
- 企业数据总线(ESB)和注册服务管理(dubbo)的区别
企业数据总线(ESB)和注册服务管理(dubbo)的区别 转载 2015年11月04日 09:05:14 7607 企业数据总线(ESB)和注册服务管理(dubbo)的区别 2015-03-09 0 ...
- oracle--合并行数据
select to_char(wmsys.wm_concat(patname)) as WaitPatientName from (SELECT * FROM (SELECT ROW_NUMBER() ...
- 【Properties】在Properties中配置List
my.properties master.pool[0].id=poolId001 master.pool[0].endpoint=http://192.168.1.101:8080/v1 maste ...
- PAT 乙级 1027 打印沙漏(20) C++版
1027. 打印沙漏(20) 时间限制 200 ms 内存限制 65536 kB 代码长度限制 8000 B 判题程序 Standard 作者 CHEN, Yue 本题要求你写个程序把给定的符号打印成 ...
- mysql查询优化之二:查询优化器的局限性
在<mysql查询优化之一:mysql查询优化常用方式>一文中列出了一些优化器常用的优化手段.查询优化器在提供这些特性的同时,也存在一定的局限性,这些局限性往往会随着MySQL版本的升级而 ...
- jvm感知docker容器参数
docker中的jvm检测到的是宿主机的内存信息,它无法感知容器的资源上限,这样可能会导致意外的情况. -m参数用于限制容器使用内存的大小,超过大小时会被OOMKilled. -Xmx: 默认为物理 ...