一、环境安装:
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)
来源:oschina
链接:https://my.oschina.net/u/4161221/blog/4292158