centos7 Hyperledger Fabric 2.x 环境搭建和运行

大憨熊 提交于 2020-12-04 01:40:35

一、环境安装:
1.安装基本工具

```
yum install curl
```
2.安装docker
2.1 确保yum包更新到最新:

```
yum update -y
```
2.2 对服务器进行清理, 如果之前安装过Docker , 需要先执行卸载操作,具体命令

```
sudo yum remove docker docker-client docker-client-latest docker-common docker-latest docker-latest-logrotate docker-logrotate docker-selinux docker-engine-selinux docker-engine
```
2.3 安装需要的软件包:

```
yum install -y yum-utils device-mapper-persistent-data lvm2
```
2.4添加docker yum 源

```
yum-config-manager --add-repo http://mirrors.aliyun.com/repo/Centos-7.repo
```
2.5安装docker

```
yum install docker-ce -y
```
2.6查看docker版本信息,是否安装成功

```
docker --version
```
2.7 docker基本命令
启动docker:

```
systemctl start docker
```
停止docker:

```
systemctl stop docker
```
重启docker:

```
systemctl restart docker.service
```

查看docker运行状态:

```
systemctl status docker.service
```

3.安装docker-compose
Compose 是定义和运行多容器Docker 应用程序的工具,可以使用YAML 文件来配置应用服务。然后, 通过单个命令可以从配置中创建井启动所有服务。
3.1 安装Docker-Compose

```
curl -L https://github.com/docker/compose/releases/download/1.23.2/docker-compose-`uname -s`-`uname -m` -o /usr/local/bin/docker-compose
```
3.2 授权

```
chmod +x /usr/local/bin/docker-compose
```
3.3 验证是否安装成功,查看版本号

```
docker-compose --version
```
4.安装go环境
为了适应fabric2.x,这里安装的最新版本的go

```
wget https://dl.google.com/go/go1.14.2.linux-amd64.tar.gz
```
安装golang语言环境:

将下载的二进制包解压至 /opt/app/目录

依次执行如下命令

```
cd /opt 
mkdir app 
cd app 
tar -C /opt/app/ -zxvf go1.14.2.linux-amd64.tar.gz
```
创建GOPATH目录

```
cd /opt
```
创建文件夹

```
mkdir goWork
```
将/opt/app/go/bin目录添加至PATH环境变量

在/etc/profile文件尾部添加:

```
vi /etc/profile
```

```
export GOROOT=/opt/app/go export GOBIN=$GOROOT/bin export PATH=$PATH:$GOBIN export GOPATH=/opt/goWork

```
:wq保存

使其生效


```
source /etc/profile
```

查看配置是否成功:

```
go version
```

5.安装python环境:
使用以下命令检查python 版本

```
python --version
```
centos7.5默认已经安装了Python 2.7.5

fabric node.js 需要用python 2.7才可以,如果为Python 3.5.1,需要退回到Python 2.7。

6.安装Node.js Runtime and NPM
fabric目前不支持8.x系列以外的其他版本

Node.js - version 8.x

查看版本命令:

```
node -v
```
6.1:直接使用已编译好的包进行安装

```
cd /opt/app
```

```
mkdir nodejs
```

```
cd nodejs
```

```
wget https://npm.taobao.org/mirrors/node/v8.9.4/node-v8.9.4-linux-x64.tar.xz
```

```
tar xf node-v8.9.4-linux-x64.tar.xz
```

```
cd node-v8.9.4-linux-x64
```

```
./bin/node -v // 执行node命令 查看版本
```

v8.9.4

解压文件的 bin 目录底下包含了 node、npm 等命令,可以使用 ln 命令来设置软连接:

ln -s 源文件名 目标文件名


```
ln -s /opt/app/nodejs/node-v8.9.4-linux-x64/bin/npm /usr/local/bin/

ln -s /opt/app/nodejs/node-v8.9.4-linux-x64/bin/node /usr/local/bin/
```
6.2:查看node 和 npm版本信息

```
cd
node -v
npm -v
```
6.3:安装taobao镜像
npm太慢,用淘宝镜像代替npm官方镜像

```
npm config set registry https://registry.npm.taobao.org
```
配置后可通过下面方式来验证是否成功

```
npm config get registry
```
输出:

```
https://registry.npm.taobao.org/
```
6.4:安装express module测试
npm install express -g # -g是全局安装的意思

输出:

express@4.16.4
added 48 packages in 4.78s

可以在下面目录看到下载的express:

/opt/app/nodejs/node-v8.9.4-linux-x64/lib/node_modules/express

二、运行fabric网络

1.下载相关镜像文件:

```
cd /opt/app/go
git clone https://github.com/hyperledger/fabric.git
```
下载完成后会得到一个fabric文件夹,进入fabric/scripts目录可以看到一个bootstrap.sh脚本
直接执行bootstrap.sh脚本,就会自动进行fabric相关镜像的下载
sh bootstrap.sh
当相关镜像全部下载完成后,会自动罗列出下载的内容

![输入图片说明](https://images.gitee.com/uploads/images/2020/0526/180636_6f9a5d02_5070837.png "屏幕截图.png")

2、常见问题:binary 下载和 docker 镜像拉取 会中途断掉
在/opt/app/go/fabric/scripts/文件夹内执行

```
./bootstrap.sh
```
时候, 老是下载不完,然后还老是出错, WDNMD, 如果直接忽视这个问题就会导致之后出现 Docker images与本地文件版本不一致的问题 :

查看bootstrap.sh 脚本, 在download()函数里面

```
curl -L --retry 5 --retry-delay 3 "${URL}" | tar xz || rc=$?
```
下载文件hyperledger-fabric-linux-amd64-2.1.0.tar.gz 和 hyperledger-fabric-ca-linux-amd64-1.4.7.tar.gz出错,手动下载并放进文件夹 /opt/app/go/fabric/scripts/fabric-samples内, 并解压


```
tar -zxvf hyperledger-fabric-linux-amd64-2.1.0.tar.gz

tar -zxvf hyperledger-fabric-ca-linux-amd64-1.4.7.tar.gz
```

执行 ./bootstrap.sh的时候,通过参数控制不让调用download下载 这两个文件


```
./bootstrap.sh -b
```
具体可以通过帮助查看

```
./bootstrap.sh -h
```

```
Usage: bootstrap.sh [version [ca_version [thirdparty_version]]] [options]

options:
-h : this help
-d : bypass docker image download
-s : bypass fabric-samples repo clone
-b : bypass download of platform-specific binaries

e.g. bootstrap.sh 2.1.0 1.4.7 0.4.20 -s
would download docker images and binaries for Fabric v2.1.0 and Fabric CA v1.4.7
```

3、fabric2.1.0 依赖的 images

![输入图片说明](https://images.gitee.com/uploads/images/2020/0526/181913_d0630eea_5070837.png "屏幕截图.png")
这里的具体版本可以通过 vim scripts/boottrap.sh 查看,前几行如下:
![输入图片说明](https://images.gitee.com/uploads/images/2020/0526/181945_92675e45_5070837.png "屏幕截图.png")

可以看到这里指明了 docker-tools , peer, orderer 等的版本为 2.1.0, docker-ca 的版本为 1.4.7, 其他第三方也就是负责 Kafka奔溃机制的 zookeeper, kafka, couchdb 三件套为 0.4.20. 如果有变动请按照上述修改或者升级镜像文件.

4、启动网络:


```
cd /opt/app/go/fabric/scripts/fabric-samples/first-network/
```

```
./byfn.sh up
```

注意:当你执行./byfn.sh up 后,中间过程有任何一步的报错,都需要执行 ./byfn.sh down 后才能再次执行./byfn.sh up

通过top命令可以看到此时fabric网络peer节点的运行情况
![输入图片说明](https://images.gitee.com/uploads/images/2020/0526/182611_3fbd363e_5070837.png "屏幕截图.png")
![输入图片说明](https://images.gitee.com/uploads/images/2020/0526/182647_36320053_5070837.png "屏幕截图.png")

三、参考

[Hyperledger Fabric2.0.0报错集锦](https://blog.csdn.net/qq_42680655/article/details/105188538)

[hyperledger fabric fabric-samples环境测试](https://blog.csdn.net/u010857052/article/details/83931507)

[hyperledger fabric完整案例](https://blog.csdn.net/u010986776/article/details/84840240)

[Fabric 环境搭建时bootstrap.sh帮我们做了什么?](https://blog.csdn.net/ltt1st/article/details/81332752)

[Hyperledger Fabric-BYFN详细剖析](https://blog.csdn.net/yijiull/article/details/81177434)

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!