CentOS7 搭建Fabric 1.0
1.环境搭建
1.1 go的按装及配置
1.1.1下载go压缩包
wget https://dl.google.com/go/go1.9.2.linux-amd64.tar.gz
1.1.2 解压
tar -C /usr/local -zxvf go1.9.2.linux-amd64.tar.gz
1.1.3配置环境变量
vi ~/.bash_profile
添加如下内容:
PATH=$PATH:$HOME/bin
export PATH
export PATH=$PATH:/usr/local/go/bin
export GOROOT=/usr/local/go
export GOPATH=$HOME/go
export PATH=$PATH:$HOME/go/bin
使环境变量生效
source ~/.bash_profile
1.2 安装Docker
1.2.1 检查是否已经安装
rpm -qa|grep docker
1.2.2 卸载旧版本
yum remove docker docker-client docker-common docker-latest docker-latest-logrotate docker-logrotate docker-selinux docker-engine-selinux docker-engine
1.2.3 安装需要的软件包
yum install -y yum-utils device-mapper-persistent-data lvm2
1.2.4设置 stable 源
yum-config-manager --add-repo http://download.docker.com/linux/centos/docker-ce.repo
1.2.5 启用 启用 docker-ce-edge和docker-ce-test(可选)
yum-config-manager --enable docker-ce-edge
yum-config-manager --enable docker-ce-tes
1.2.6 安装 Docker CE
yum install docker-ce
1.2.7 启动docker
service docker start
1.2.8 加入开机启动
chkconfig docker on
1.2.9 测试是否安装成功
docker --version
1.2.10 安装docker-compose
curl -L https://github.com/docker/compose/releases/download/1.20.1/docker-compose-`uname -s`-`uname -m` > /usr/local/bin/docker-compose
1.2.11 测试docker-compose是否安装成功
docker-compose version
1.3 安装python-pip
yum -y install epel-release
yum -y install python-pip
1.4 安装node.js
## root
curl -sL https://rpm.nodesource.com/setup_10.1 | bash -
## no root
curl -sL https://rpm.nodesource.com/setup_10.1 | sudo bash -
yum install -y nodejs
1.5 升级gcc
wget http://ftp.gnu.org/gnu/gcc/gcc-9.1.0/gcc-9.1.0.tar.gz
tar -C /usr/local -xzf gcc-9.1.0.tar.gz
cd /usr/local/gcc-9.1.0
./contrib/download_prerequisites
mkdir build
cd build/
../configure --enable-checking=release --enable-languages=c,c++ --disable-multilib
yum groupinstall "Development Tools"
make
make install
1.6 安装npm
$ npm install npm -g
$ npm -v
1.7 fabric下载
1.7.1 下载fabric源码
## 下载源码
$ mkdir -p ~/go/src/github.com/hyperledger
$ cd ~/go/src/github.com/hyperledger
$ git clone https://github.com/hyperledger/fabric.git
## 切换到v1.0.0版本
$ cd ~/go/src/github.com/hyperledger/fabric
$ git checkout v1.0.0
1.7.2 下载 Fabric Docker镜像
$ cd ~/go/src/github.com/hyperledger/fabric/examples/e2e_cli/
$ source download-dockerimages.sh -c x86_64-1.0.0 -f x86_64-1.0.0
1.7.3 检查下载的镜像列表
docker images
1.7.4 测试Fabric环境是否成功
cd ~/go/src/github.com/hyperledger/fabric/examples/e2e_cli
./network_setup.sh up
该指令做了一下操作
1.编译生成Fabric公私钥、证书的程序,程序在目录:fabric/release/linux-amd64/bin
2.基于configtx.yaml生成创世区块和通道相关信息,并保存在channel-artifacts文件夹。
3.基于crypto-config.yaml生成公私钥和证书信息,并保存在crypto-config文件夹中。
4.基于docker-compose-cli.yaml启动1Orderer+4Peer+1CLI的Fabric容器。
5.在CLI启动的时候,会运行scripts/script.sh文件,这个脚本文件包含了创建Channel,加入Channel,安装Example02,运行Example02等功能。
运行完如果出现下图所示,说明整个Fabric网络已经通了.
2.测试Fabric网络
Fabric提供了SDK和CLI两种交互方式,我们使用的是CLI 。
使用官方提供的小例子进行测试,在官方例子中,channel名字是mychannel,链码(智能合约)的名字是mycc。
首先要登录到CLI这个容器中,才能执行Fabric的CLI命令:
docker exec -it cli bash
这时用户名变为root@44084971aff7,当前目录变为/opt/gopath/src/github.com/hyperledger/fabric/peer#,接着可执行peer命令,体验区块链的命令行使用方式。
2.1 查看账户余额
root@44084971aff7:/opt/gopath/src/github.com/hyperledger/fabric/peer# peer chaincode query -C mychannel -n mycc -c '{"Args":["query","a"]}'
结果:
Query Result: 90
这里90就是a账户的余额
2.2 调用链码,转账
让b账户向a账户转账10:
peer chaincode invoke -o orderer.example.com:7050 --tls true --cafile /opt/gopath/src/github.com/hyperledger/fabric/peer/crypto/ordererOrganizations/example.com/orderers/orderer.example.com/msp/tlscacerts/tlsca.example.com-cert.pem -C mychannel -n mycc -c '{"Args":["invoke","a","b","20"]}'
再次执行查询(因为转账操作了2次所以此处是50)
root@c259da3de4d1:/opt/gopath/src/github.com/hyperledger/fabric/peer# peer chaincode query -C mychannel -n mycc -c '{"Args":["query","a"]}'
2.3 退出cli容器
直接执行
exit
关闭Fabric
cd ~/go/src/github.com/hyperledger/fabric/examples/e2e_cli
./network_setup.sh down
3.遇到的问题
3.1 使用wget、curl、git报command not found
原因:未安装wget、curl
解决
yum install -y wget
yum install -y curl
yum install -y git
3.2 安装docker-compose问题
Failed connect to github-production-release-asset-2e65be.s3.amazonaws.com:443; Connection timed out
原因: 该地址(github-production-release-asset-2e65be.s3.amazonaws.com) 需要的一些下载的访问被 国内屏蔽了
解决:在hosts中加配置
ping github-production-release-asset-2e65be.s3.amazonaws.com
vi /etc/hosts
新增如下配置:
52.216.128.51 github-production-release-asset-2e65be.s3.amazonaws.com
3.3 gcc升级问题
configure: error: Building GCC requires GMP 4.2+, MPFR 2.4.0+ and MPC 0.8.0+.,mpfr2.4.0
yum install gmp gmp-devel mpfr mpfr-devel libmpc libmpc-devel
3.4 gcc动态库没有替换问题
node: /usr/lib64/libstdc++.so.6: version
GLIBCXX_3.4.21' not found (required by node) node: /usr/lib64/libstdc++.so.6: version
GLIBCXX_3.4.15' not found (required by node)
node: /usr/lib64/libstdc++.so.6: version `GLIBCXX_3.4.20' not found (required by node)
运行检查命令
strings /usr/lib64/libstdc++.so.6 | grep GLIBC
查找编译gcc时生成的最新动态库
find / -name "libstdc++.so*"
cd /usr/lib64
rm -rf libstdc++.so.6
ln -s libstdc++.so.6.0.26 libstdc++.so.6
strings /usr/lib64/libstdc++.so.6 | grep GLIBC
3.5 Fabric启动报错1
can't load package: package github.com/hyperledger/fabric/core/chaincode/shim: cannot find package
源码路径不对
go env
把fabric源码放在~/go/src/github.com/hyperledger 目录下
3.6 Fabric启动报错2
Error response from daemon: Container is not running
##查看运行的容器
docker ps -a
## 把失败的重新启动
docker start 44084971aff7
3.7 Fabric启动报错3
Error: Error getting endorser client chaincode: PER:404 - Error trying to connect to local peer
重新关闭网络
./network_setup.sh down mychannel
3.8 测试转账no such file or directory
root@b103ad898190:/opt/gopath/src/github.com/hyperledger/fabric/peer# peer chaincode invoke -o orderer.example.com:7050 --tls true --cafile /root/go/src/github.com/hyperledger/fabric/examples/e2e_cli/crypto-config/ordererOrganizations/example.com/orderers/orderer.example.com/msp/tlscacerts/tlsca.example.com-cert.pem -C mychannel -n mycc -c '{"Args":["invoke","b","a","10"]}'
2020-01-21 10:19:15.752 UTC [msp] GetLocalMSP -> DEBU 001 Returning existing local MSP
2020-01-21 10:19:15.752 UTC [msp] GetDefaultSigningIdentity -> DEBU 002 Obtaining default signing identity
Error: Error getting broadcast client: Error connecting to orderer.example.com:7050 due to open /root/go/src/github.com/hyperledger/fabric/examples/e2e_cli/crypto-config/ordererOrganizations/example.com/orderers/orderer.example.com/msp/tlscacerts/tlsca.example.com-cert.pem: no such file or directory
根证书不对
参考文档
CentOS7 搭建Fabric 1.0的更多相关文章
- CentOS7搭建Hadoop-3.3.0集群手记
前提 这篇文章是基于Linux系统CentOS7搭建Hadoop-3.3.0分布式集群的详细手记. 基本概念 Hadoop中的HDFS和YARN都是主从架构,主从架构会有一主多从和多主多从两种架构,这 ...
- 【linux】【Fabric】Centos7搭建Fabric运行环境
1.安装jdk1.8配置环境变量 参考:https://www.cnblogs.com/jxd283465/p/11541506.html 2.安装git yum -y install git 3.安 ...
- CentOS7搭建Hadoop2.8.0集群及基础操作与测试
环境说明 示例环境 主机名 IP 角色 系统版本 数据目录 Hadoop版本 master 192.168.174.200 nameNode CentOS Linux release 7.4.1708 ...
- centos7搭建单机redis5.0
目录 1. redis初步安装 2. 配置 3. 设置开机启动(centos6) 3.1 编写启动脚本 3.2 设置权限 3.3 启动测试 3.4 设置开机自启动 4. 设置开机启动(centos7) ...
- centos7搭建Fabric基础环境
一.首先升级centos最新内核 参考https://www.cnblogs.com/sky-cheng/p/12146054.html 二.卸载旧版本docker [root@localhost ~ ...
- 快速搭建一个Fabric 1.0的环境
之前笔者写了一篇Fabric1.0 Beta的部署和Fabric 1.0的多机部署.但是很多人在部署Fabric的时候还是很容易出问题,所以我就再把Fabric 1.0的单机环境搭建讲一下.其实很多内 ...
- 基于【CentOS-7+ Ambari 2.7.0 + HDP 3.0】搭建HAWQ数据仓库01 —— 准备环境,搭建本地仓库,安装ambari
一.集群软硬件环境准备: 操作系统: centos 7 x86_64.1804 Ambari版本:2.7.0 HDP版本:3.0.0 HAWQ版本:2.3.05台PC作为工作站: ep-bd01 e ...
- 基于【CentOS-7+ Ambari 2.7.0 + HDP 3.0】搭建HAWQ数据仓库——操作系统配置,安装必备软件
注意未经说明,所有本文中所有操作都默认需要作为root用户进行操作. 一.安装zmodem,用于远程上传下载文件,安装gedit,方便重定向到远程windows上编辑文件(通过xlanuch) [ro ...
- Ubuntu下搭建Hyperledger Fabric v1.0环境
多次尝试才正常启动了Fabric,如遇到各种莫名错误,请参考如下一步步严格安装,特别用户权限需要注意. 一.安装Ubuntu16 虚拟机或双系统,虚拟机有VirtualBox或者VMware,Ub ...
随机推荐
- The call() and apply() Mtheods
Example 6-4function classof(o) { if (o === null) return "Null"; if (o ===undefined ...
- jmeter安装配置教程及使用
背景: 因为双11,黑五快到了,所有的互联网电商行业都要做一件事情,那就是压测,常见的压测很多区分,接口压测和全链路压测.线上压测和线下压测,单元压测和功能压测.我们这里介绍一下接口压测和全链路压测. ...
- Linux基础:CentOS 6重置密码
1.开机,按"e"键,进入GNU GRUB引导界面,上下键选择中间行 2.按"e"键,进入编辑界面,末行quiet后空格,输入"1"或者&q ...
- 第二阶段:4.产品功能需求文档PRD:7.案例总结
Dev就是一些开发 这就是一个评价表格 每次沟通都要记得记录以及总结反思
- 循环语句作业与循环补充(continue与break)
作业: 1.使用while循环输入1 2 3 4 5 6 8 9 10(没有7) n = 1 while n < 11: if n == 7: pass else: print(n) n = n ...
- 第二阶段:2.商业需求分析及BRD:5.商业需求文档1
三大文档 FSD一般包含在PRD 1.BRD一般是去向决策层汇报 2.产品介绍的各项是可选的 不是必备的 产品线路图就是roodmap.团队一般是偏技术的团队. BRD案例. 痛点.定性的描述.不会非 ...
- 使用 Git和Github
本地库初始化 git init 效果: 注意: .git 目录中存放的是本地库相关的子目录和文件,不要删除,也不要胡 乱修改. 设置签名 其实就是为了区分不同开发人员的身份需要设置一下自己的信息,包括 ...
- java中获取url传值时的int类型参数的方法
int parameterName=Integer.valueOf(request.getParameter("你所要获得的int类型的参数名"));
- lua字符串分割函数[适配中文特殊符号混合]
lua的官方函数里无字符串分割,起初写了个简单的,随之发现如果是中文.字符串.特殊符号就会出现分割错误的情况,所以就有了这个zsplit. function zsplit(strn, chars) f ...
- centos6.x将python2.6升级到2.7
一,安装开发工具和Python2.7(1)查看当前python版本 python -V Python 2.6.6 (2)下载Python-2.7.3 wget http://python.org/ft ...