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

根证书不对

参考文档

1.联盟链初识以及Fabric环境搭建流程

2.centos7安装fabric

CentOS7 搭建Fabric 1.0的更多相关文章

  1. CentOS7搭建Hadoop-3.3.0集群手记

    前提 这篇文章是基于Linux系统CentOS7搭建Hadoop-3.3.0分布式集群的详细手记. 基本概念 Hadoop中的HDFS和YARN都是主从架构,主从架构会有一主多从和多主多从两种架构,这 ...

  2. 【linux】【Fabric】Centos7搭建Fabric运行环境

    1.安装jdk1.8配置环境变量 参考:https://www.cnblogs.com/jxd283465/p/11541506.html 2.安装git yum -y install git 3.安 ...

  3. CentOS7搭建Hadoop2.8.0集群及基础操作与测试

    环境说明 示例环境 主机名 IP 角色 系统版本 数据目录 Hadoop版本 master 192.168.174.200 nameNode CentOS Linux release 7.4.1708 ...

  4. centos7搭建单机redis5.0

    目录 1. redis初步安装 2. 配置 3. 设置开机启动(centos6) 3.1 编写启动脚本 3.2 设置权限 3.3 启动测试 3.4 设置开机自启动 4. 设置开机启动(centos7) ...

  5. centos7搭建Fabric基础环境

    一.首先升级centos最新内核 参考https://www.cnblogs.com/sky-cheng/p/12146054.html 二.卸载旧版本docker [root@localhost ~ ...

  6. 快速搭建一个Fabric 1.0的环境

    之前笔者写了一篇Fabric1.0 Beta的部署和Fabric 1.0的多机部署.但是很多人在部署Fabric的时候还是很容易出问题,所以我就再把Fabric 1.0的单机环境搭建讲一下.其实很多内 ...

  7. 基于【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 ...

  8. 基于【CentOS-7+ Ambari 2.7.0 + HDP 3.0】搭建HAWQ数据仓库——操作系统配置,安装必备软件

    注意未经说明,所有本文中所有操作都默认需要作为root用户进行操作. 一.安装zmodem,用于远程上传下载文件,安装gedit,方便重定向到远程windows上编辑文件(通过xlanuch) [ro ...

  9. Ubuntu下搭建Hyperledger Fabric v1.0环境

      多次尝试才正常启动了Fabric,如遇到各种莫名错误,请参考如下一步步严格安装,特别用户权限需要注意. 一.安装Ubuntu16 虚拟机或双系统,虚拟机有VirtualBox或者VMware,Ub ...

随机推荐

  1. The call() and apply() Mtheods

    Example 6-4function classof(o) {     if (o === null) return "Null";     if (o ===undefined ...

  2. jmeter安装配置教程及使用

    背景: 因为双11,黑五快到了,所有的互联网电商行业都要做一件事情,那就是压测,常见的压测很多区分,接口压测和全链路压测.线上压测和线下压测,单元压测和功能压测.我们这里介绍一下接口压测和全链路压测. ...

  3. Linux基础:CentOS 6重置密码

    1.开机,按"e"键,进入GNU GRUB引导界面,上下键选择中间行 2.按"e"键,进入编辑界面,末行quiet后空格,输入"1"或者&q ...

  4. 第二阶段:4.产品功能需求文档PRD:7.案例总结

     Dev就是一些开发 这就是一个评价表格 每次沟通都要记得记录以及总结反思

  5. 循环语句作业与循环补充(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 ...

  6. 第二阶段:2.商业需求分析及BRD:5.商业需求文档1

    三大文档 FSD一般包含在PRD 1.BRD一般是去向决策层汇报 2.产品介绍的各项是可选的 不是必备的 产品线路图就是roodmap.团队一般是偏技术的团队. BRD案例. 痛点.定性的描述.不会非 ...

  7. 使用 Git和Github

    本地库初始化 git init 效果: 注意: .git 目录中存放的是本地库相关的子目录和文件,不要删除,也不要胡 乱修改. 设置签名 其实就是为了区分不同开发人员的身份需要设置一下自己的信息,包括 ...

  8. java中获取url传值时的int类型参数的方法

    int parameterName=Integer.valueOf(request.getParameter("你所要获得的int类型的参数名"));

  9. lua字符串分割函数[适配中文特殊符号混合]

    lua的官方函数里无字符串分割,起初写了个简单的,随之发现如果是中文.字符串.特殊符号就会出现分割错误的情况,所以就有了这个zsplit. function zsplit(strn, chars) f ...

  10. 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 ...