本文档主要记录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
成功界面如下:
进入目录:
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
进入目录:
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 应该就可以自动创建容器了。
然后看到如下图示,则网络测试成功。
问题 :
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 应该就可以自动创建容器了。