本文档主要记录HyperLedger环境安装:

一、环境需要安装一下依赖软件:

Curl :版本7.67.0  下载地址:https://curl.haxx.se/download.html

Go:版本1.13.5    要求1.11.x及以上  下载地址:https://golang.org/dl/

Node:版本8.9.0   要求8.9.x,下载地址:https://nodejs.org/dist/v8.9.0/

Docker-ce:版本19.03.5   前面采用的在线安装

Docker-compose:版本1.25.1-rc1  下载地址:https://github.com/docker/compose/releases/tag/1.25.1-rc1

hyperledger-fabric:二进制文件,版本1.4.0,下载地址:https://github.com/hyperledger/fabric/releases/tag/v1.4.0

fabric-samples:版本1.4.0   跟hyperledger-fabric版本保持一致, 下载地址:https://github.com/hyperledger/fabric-samples/releases/tag/v1.4.0

 

二、依赖环境安装

1、curl安装:

直接安装的话,不支持https,需要先添加对HTTPS的支持。

在Centos7,执行如下命令:

yum install openssl-devel

然后,安装cURL,解压:

tar -zxvf curl-7.67.0.tar.gz

进入解压后的目录:

cd curl-7.67.0

执行如下命令:

./configure 

Ps:如有报错configure: error: no acceptable C compiler found in $PATH

安装gcc,执行: yum install gcc

然后 再执行一下./configure

然后执行:

make

make install

安装完后需要添加环境变量:

vi /etc/profile

在末尾添加:

export LD_LIBRARY_PATH=/usr/local/lib

保存退出后再执行:

source /etc/profile

最后使用如下命令,查看是否安装成功:

curl --version

 

2、go安装:

解压安装包:

tar -zvxf go1.13.5.linux-amd64.tar.gz 

移动解压后的go目录到/usr/local 下:

sudo mv go /usr/local

在/etc/profile末尾添加如下四个环境变量:

export  GOROOT=/usr/local/go

export  GOPATH=$HOME/go

export  PATH=$PATH:$HOME/go/bin

export  PATH=$PATH:/usr/local/go/bin

可用go version 验证go是否安装成功

 

3、docker安装

安装库:

yum install -y yum-utils device-mapper-persistent-data lvm2 -y  

添yum软件源:

 yum-config-manager --add-repo http://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo

更新yum源:

sudo yum makecache fast

安装docker-ce:

yum -y install docker-ce

启动docker后台服务:

systemctl start docker

 

4、docker-compose安装:

拷贝文件到/usr/local/bin/

  文件名为docker-compose-Linux-x86_64,将其重命名为docker-compose

 

5、node安装

解压:

tar -zxvf node-v8.9.0-linux-x64.tar.gz

在/etc/profile末尾添加:

export PATH=$PATH:/root/node-v8.9.0-linux-x64/bin

保存退出后执行:

source /etc/profile

使用命令node -v 和npm –v 验证是否安装成功

 

三、fabric二进制文件及docker镜像

新建目录:

cd ~  

mkdir  -p  go/hyperledger/fabric/

解压

cd go/hyperledger/fabric/

tar -zxvf fabric-samples-1.4.0.tar.gz

tar -zvxf hyperledger-fabric-linux-amd64-1.4.0.tar.gz

赋予执行权限:

sudo chmod -R 777 ~/go

此时目录包含如下:

      bin  config   fabric-samples

前两个由二进制文件解压得到

bin目录设置到系统环境变量中,并使之生效,在/etc/profile添加:

export PATH=$PATH:/root/go/hyperledger/fabric/bin

保存后执行:

source /etc/profile

通过如下命令验证二进制文件及环境变量是否配置成功:

peer version

成功界面如下:

 

fabric平台可以干嘛 fabric官方下载地址_docker

进入目录:

cd fabric-samples/scripts

docker 镜像拉取很慢,这里使用daoCloud 加速,执行:

curl -sSL https://get.daocloud.io/daotools/set_mirror.sh | sh -s http://f1361db2.m.daocloud.io

Ps:这里如果报错:curl: (1) Protocol "https" not supported or disabled in libcurl

是因为前面安装curl之前未安装openssl,参考curl安装。

下载镜像:

./bootstrap.sh -b

Ps:已将下载的镜像从容器里导出,存在docker-images文件夹下。

镜像导出:docker save -o /保存路径/ ubuntu18.tar <镜像名称:标签>

镜像导入:docker load --input /路径/ubuntu18.tar

 

fabric平台可以干嘛 fabric官方下载地址_docker_02

进入目录:

cd fabric-samples/fabcar/

 

启动first-network:

根据配置文件生成各种文件:

sudo ./byfn.sh -m generate

如果报错:which: no cryptogen in (/usr/local/src/go/src/github.com/hyperledger/fabric-samples/first-network/…/bin:/usr/local/src/go/src/github.com/hyperledger/fabric-samples/first-network:/usr/local/sbin:/sbin:/bin:/usr/sbin:/usr/bin:/root/bin:/bin:/root/bin)
cryptogen tool not found. Exiting

将二进制文件中的bin目录拷贝到 fabric-samples下即可。

 

./byfn.sh up

Ps:如果报错找不到cli容器,可以使用docker-compose -f docker-compose-cli.yaml up 应该就可以自动创建容器了。

然后看到如下图示,则网络测试成功。

 

fabric平台可以干嘛 fabric官方下载地址_docker_03

 

 

 

问题 :

1、curl: (1) Protocol "https" not supported or disabled in libcurl

是因为前面安装curl之前未安装openssl,参考curl安装。

 

2、npm WARN fabcar@1.0.0 No repository field

将/fabric-samples/fabcar/javascript目录下的package.json文件中定义的fabcar version由1.0.0为1.4.0即可。

2.1、npm WARN fabcar@1.4.0 No repository field  

修改后还有可能出现这个,但其实是不影响的,只是warn。 

 

3、gyp WARN EACCES attempting to reinstall using temporary dev dir "/root/go /hyperledger/fabric/scripts/fabric-samples/fabcar/javascript/node_modules/pkcs11js/.node-gyp"

gyp WARN EACCES user "root" does not have permission to access the dev dir "/root/go /hyperledger/fabric/scripts/fabric-samples/fabcar/javascript/node_modules/pkcs11js/.node-gyp/8.9.4"

使用命令npm install --unsafe-perm

 

4、docker 的order节点 状态为Exited (2)。手动启动后也会立刻自动exit。order节点起不来。

使用命令查看 docker logs orderer.example.com 根据日志排查。

INFO 001 Kafka.Version unset, setting to 0.10.2.0

看网上有人说是kafka版本问题,但是示例里使用的是solo,我这里产生的原因应该不是这个,我也不知道具体是如何解决的,我所做的操作是 核对fabric二进制和fabric-samples版本是否一致,核对镜像版本,然后批量删除了所有容器(因为我前面docker里部署了ipfs节点)。然后按照前面我说的步骤就执行成功了。解决的有些莫名其妙。

 

5、启动网络报错找不到cli容器:

可以使用docker-compose -f docker-compose-cli.yaml up 应该就可以自动创建容器了。