Hyperledger Fabric 2.3环境配置搭建指南及BUG记录


* 正在着手从零建立一个完整的体系,特此将搭建全过程记录下来以供参考。 *

软件和系统的准备工作

有多种开发方案可供选择,这里采用的是Windows+Xshell+Vmware的方案,直接用ubuntu开发也非常方便,考虑到后期有可能有其他人用windows登录且要xshell远程操作的需求所以采用了这种折中的方法。
建议更新至windows最新版,vm虚拟机安装16亦或更新版本即可,xshell官网自行下载安装完成即可。

VMWARE安装

VMAWARE16 的51网下载链接,截止更新日期 2021-08-19, 破解密钥随时可能失效,请自行百度搜索最新版密钥尝试。

Xshell 安装

也有其他软件可以做到类似功能,并不影响实际操作,这里仅记录了此次使用的软件作为参考。 Xshell下载地址,下载完成按照步骤完成安装。

Ubuntu下载安装

打开Ubuntu镜像下载官网,如图:
Ubuntu官网,以最新版为准
进入页面后点击右边的Download按钮开始下载。这个是有图形桌面的desktop版本,不需要图形桌面的server版可以往下拖,页面下部有相应的版本。
打开VMware16pro,点击新建虚拟机,如图:
在这里插入图片描述
点击自定义高级:
在这里插入图片描述
点击下一步直到出现安装客户机操作系统界面,选择 安装程序光盘映像文件(iso),浏览目录找到刚刚下载完成的ubuntu desktop最新版本的iso镜像文件目录并选中:
在这里插入图片描述
设置好Ubuntu的使用信息,即linux的用户名和密钥,设置完成后保存即可。
虚拟机名称无所谓,本机位置请选择一个比较大的非系统盘,因为虚拟机文件可能会比较大,所以要选择一个磁盘空间大的目录以备不时之需。
分配CPU和内存视电脑具体情况而定,如果就架设一个虚拟机那么分配一半的处理器和内存就好了,当然到时候也有推荐内存,根据推荐内存设置也可,毕竟fabric testnet并不太需要性能,压低分配的核心数量也完全没有问题。

网络配置建议选择桥接网络,若公司局域网没有足够的IP可以考虑NAT模式。具体请参考NAT模式和桥接模式实现局域网其他物理机器与Vmware虚拟机互相访问

其余步骤按照推荐指令操作即可,在ubuntu安装过程中会出现在下面这两个选项,正常安装和最小安装。建议选择最小安装,因为大部分软件我们都在windows上操作,ubuntu只需要最基础的环境就好了。

配置远程登录Ubuntu系统及实现windows和ubuntu之间的文件传输

VMware自带VMware tools,可以创建共享文件夹来进行文件传输,但是因为我们还有远程操控的需求所以这里介绍另一种方法,通过Xshell来完成windows和ubuntu文件传输的功能。

在Ubuntu上安装ssh服务端

在虚拟中打开terminal,输入:

// 安装完毕后ssh默认已启动
apt-get install openssh-server

安装完成后默认ssh是启动的,这时我们再检查一下22号端口是否处于监听状态,输入:

// 查看22号端口是否处于监听状态
netstat -nat | grep 22

如果成功应该出现如下结果:
在这里插入图片描述

关闭防火墙

要实现远程操控还需要关掉Ubuntu的防火墙,在虚拟机终端中输入:

// 关闭防火墙
sudo ufw disable

之后可以使用ifconfig命令来查看虚拟机ip地址,如图所示:
在这里插入图片描述

命令提示符ping测试

先确认VMware的网络配置是否已改成桥接模式,再在windows下运行CMD命令行:ping xxx.xxx.x.xx,该ip地址即为上一步通过ifconfig查到的ip地址。如若正常应该显示如下图:
在这里插入图片描述

配置Xshell7

第一步,打开Xshell,点击新建窗口:
在这里插入图片描述
在新建窗口中按照图示更改设置,名称自行设置为方便查看的即可,主机填写虚拟机的IP地址,在用户身份验证中可以按需自行设置用户名和密码。
在这里插入图片描述
配置好相应的Ubuntu的IP地址和登录用户名/密码后,一切正常就应该可以远程访问Ubuntu的系统命令行了,如图所示:
在这里插入图片描述

通过Xshell实现文件传输

Xshell非常好用,首先在Ubuntu上安装lrzsz工具包,之前因为没有Xshell所以我们需要打开虚拟机的终端打命令行来进行操作,现在因为刚配置好Xshell所有我们就可以直接在Xshell里打命令行了。

// 安装lrzsz工具包
sudo apt install lrzsz

接下来在虚拟机已连接的Ubuntu中打开属性,确认文件传输设置:
在这里插入图片描述
在这里插入图片描述
在Xshell中cd进入你想要传文件到Ubuntu中的目录后,输入命令rz,即接收文件(将Windows的文件传输到ubuntu上),此时Xshell就会弹出文件选择对话框,选好文件之后关闭对话框,经过一段时间大概20m/s的传输速度进度条读完后,文件就会出现在Ubuntu对应的当前目录下了。如下图所示:
在这里插入图片描述
同理,输入sz+当前目录下Ubuntu系统中你想传输的文件文件名,接着会跳出会话框让你选择文件保存地址,即是完成了从Ubuntu导出文件到Windows的过程,如图所示:
在这里插入图片描述
其实在命令行界面右键选择传输=>ZMODEM(Z),选择是接受还是发送并调整地址也是可以的,如图所示:
在这里插入图片描述

Fabric环境配置

  1. 官方帮助文档:https://hyperledger-fabric.readthedocs.io/en/release-2.2/
  2. 安装 cURL(https://curl.haxx.se/download.html),curl --version 查询版本
  3. 安装docker,docker --version 查询版本
  4. 安装docker-compose,``docker-compose --version` 查询版本
  5. 安装 go 语言环境,go version 查询版本
  6. 安装node.js, node -v 查询版本
  7. Python 版本要求为 python 3,python --version 查询版本

安装Docker

以下代码集成了各个命令,可以直接拉取复制贴到Xshell中执行,或者看注释自行选择对自己有用的命令行单独复制:

# 安装基本软件
sudo apt-get update
sudo apt-get install apt-transport-https ca-certificates curl git software-properties-common lrzsz -y
# 添加阿里的docker镜像仓库
curl -fsSL https://mirrors.aliyun.com/docker-ce/linux/ubuntu/gpg | sudo apt-key add -
sudo add-apt-repository "deb [arch=amd64] https://mirrors.aliyun.com/docker-ce/linux/ubuntu $(lsb_release -cs) stable"
# 更新软件源
sudo apt-get update
# 安装docker
sudo apt-get install docker-ce -y
# 查看安装的docker版本
docker version
#重启docker:
sudo  systemctl restart docker
# 将用户加入该 group 内。然后退出并重新登录就生效啦。
sudo gpasswd -a ${
    
    USER} docker
# 重启docker服务
systemctl restart docker
# 当前用户切换到docker群组
newgrp - docker
#安装docker-compose依赖工具
sudo apt-get install python-pip -y
#安装编排工具
sudo pip install docker-compose
#查看版本
sudo docker-compose version

安装Go

# 1. 使用wget工具下载安装包
wget https://dl.google.com/go/go1.11.linux-amd64.tar.gz
# 2. 解压tar包到/usr/local
sudo tar zxvf go1.11.linux-amd64.tar.gz -C /usr/local
# 3. 创建Go目录
mkdir $HOME/go
# 4. 用vi打开~./bashrc,配置环境变量
vim ~/.bashrc
# 5. 增加下面的环境变量,保存退出
	export GOROOT=/usr/local/go
    export GOPATH=$HOME/go
    export PATH=$PATH:$GOROOT/bin:$GOPATH/bin
# 6. 使环境变量立即生效, 一些命令二选一
source ~/.bashrc  
. ~/.bashrc
# 7. 检测go是否安装好
go version

这里其实跳过了一步,就是第五步增加环境变量保存退出,有人是不知道怎么用vim的,在这里特别备注下,vim打开页面后,先按i调整到insert模式才能编辑,方向键调整光标到指定位置后输入,完成后按esc,退出输入模式进入命令模式,最后输入:wq保存并退出。或者点击这里去查看Linux的vim详细指令,或者自行搜索。

安装Node.js

wget https://nodejs.org/dist/v10.19.0/node-v10.19.0-linux-x64.tar.xz
# 指定压缩包解压到/opt目录下
sudo tar xvf node-v10.19.0-linux-x64.tar.xz -C /opt
# 打开系统级别的配置文件 /etc/profile
sudo vim /etc/profile
# 添加如下配置项, 保存退出
    export NODEJS_HOME=/opt/node-v10.19.0-linux-x64
    export PATH=$PATH:$NODEJS_HOME/bin
# 重新加载配置文件
$ . /etc/profile

Node.js的版本号以最新的为准,请自行微调。添加配置项的vim操作同理。最后测试下是否正确:

#测试
node -v

一些其他的包如curl等,运行通用的apt install或者sudo apt install或者根据报错指令下载即可。

部署 Hyperledger Fabric 2.3

网上其他部署教程有很多,但是或多或少总是出于各种未知的原因部署的磕磕绊绊。这里总结了一套比较流畅的方案,按部就班的操作应该没有大碍。
第一步创建目录:

cd ~
mkdir hyperledger-fabric
cd hyperledger-fabric

第二步Gitclone文件夹“fabric”

git clone git://github.com/hyperledger/fabric.git

项目拉下来之后进入scripts文件夹,运行./bootstrap.sh,在当前目录会生成fabric-samples目录,该目录下存放一些二进制文件和相关的docker镜像。运行完之后,进去该目录下的 /fabric-samples/test-network,测试网络看是否可以使用,./network.sh up.
但在上一步下载二进制文件过程会很慢,所以可以手动下载放在fabric-sample目录下,这里推荐直接在Windows中转去该网址下载压缩包,然后通过Xshell传输到目录下。
二进制文件压缩包1
二进制文件压缩包2
传输完成后解压到fabric-sample文件夹中:

tar -zxvf hyperledger-fabric-linux-amd64-2.3.0.tar.gz
tar -zxvf hyperledger-fabric-ca-linux-amd64-1.5.1.tar.gz
  1. 将hyperledger-fabric-linux-amd64-2.3.0.tar.gz文件中的bin目录还有config目录拷贝到fabric-samples目录下
  2. 将hyperledger-fabric-ca-linux-amd64-1.5.1.tar.gz文件中的bin目录下的fabric-ca-client 和fabric-ca-server两个文件放到fabric-samples目录下的拷贝的bin目录下

进入到/fabric-samples/test-network 执行./network.sh进行实验

./network.sh up

我是在Xshell中执行的,但成功的结果应该是一致的,如图所示:
在这里插入图片描述
期间运行测试网时报过一个错,原因主要是研究教程的时候下载的几个工具之间的版本不同步,报错信息为:
ERROR: manifest for hyperledger/fabric-orderer:latest not found: manifest unknown: manifest unknown

解决办法:

  1. 进入https://hub.docker.com/r/hyperledger/fabric-orderer,查看Tags,找到最新版本,这里是2.4
  2. 运行 docker pull hyperledger/fabric-orderer:2.4,等待拉取完成
  3. 运行 docker tag hyperledger/fabric-orderer:1.4 hyperledger/fabric-orderer:latest,更改fabric-orderer:2.4 名称为 fabric-orderer:latest
  4. 重新运行./network.sh up,问题解决。

如果fabric-peerfabric-tools也报同样错误,就重复以上步骤即可。
祝大家玩的开心。

猜你喜欢

转载自blog.csdn.net/weixin_42918620/article/details/120054416
今日推荐