Ubuntu系统下Hyperledger Fabric环境部署

Angie ·
更新时间:2024-11-14
· 896 次阅读

老板在重庆部署了6台服务器,将其中4台虚拟化之后使用第五台集中管理。现根据官方文档与其他博客的提示,部署Fabric1.4环境。在部署过程中遇到一些问题,记录一下。 1. 准备工作

虚拟机基本配置如下:
虚拟机基本配置

1.1 安装git与curl $ sudo apt-get update $ sudo apt-get install git $ sudo apt-get install curl 2. docker与docker-compose的安装 2.1 Docker-CE安装 2.1.1 更换软件源 # 使用中国科技大学的软件源 $ sudo cp /etc/apt/sources.list /etc/apt/sources.list.bak $ sudo sed -i 's/archive.ubuntu.com/mirrors.ustc.edu.cn/g' /etc/apt/sources.list sudo apt update 2.1.2 安装需要的包 $ sudo apt install apt-transport-https ca-certificates software-properties-common curl 2.1.3 添加GPG密钥 $ sudo curl -fsSL https://mirrors.ustc.edu.cn/docker-ce/linux/ubuntu/gpg | sudo apt-key add - 2.1.4 添加Docker-CE软件源 $ sudo add-apt-repository "deb [arch=amd64] https://mirrors.ustc.edu.cn/docker-ce/linux/ubuntu $(lsb_release -cs) stable" # 记得更新一下软件包 $ sudo apt update 2.1.5 安装Dokcer-CE $ sudo apt install docker-ce 2.1.6 测试运行 $ sudo docker run hello-world

输入sudo docker version,当出现以下内容时则说明docker已安装成功:
在这里插入图片描述

2.2 Docker-compose的安装 2.2.1 安装 $ sudo apt-get install python-pip $ sudo pip install docker-compose 2.2.2 测试 $ sudo docker-compose version

当出现以下内容时则说明docker-compose已安装成功:
在这里插入图片描述

3. go的安装与配置 3.1 go安装包下载 $ wget https://studygolang.com/dl/golang/go1.12.1.linux-amd64.tar.gz 3.2 go的安装 $ sudo tar -xzf go1.12.1.linux-amd64.tar.gz $ sudo mv go /usr/local 3.3 go环境变量配置

管理员权限打开/etc/profile文件:

$ sudo vim /etc/profile

在文件尾部加入go的环境变量(输入i进入编辑模式):

export PATH=$PATH:/usr/local/go/bin export GOROOT=/usr/local/go export GOPATH=$HOME/go export PATH=$PATH:$HOME/go/bin

Esc键退出编辑模式,输入:wq!保存并退出;

执行source /etc/profile命令,让修改后的环境变量生效。

3.4 测试 $ go version

当出现以下内容时则说明go已安装成功:
在这里插入图片描述
P.S. 参考博客

4. node.js的安装与配置 4.1 二进制源码包下载 $ wget https://nodejs.org/dist/v10.16.2/node-v10.16.2-linux-x64.tar.xz 4.2 解压安装 # 解压到/opt目录下 $ sudo tar xvf node-v10.16.2-linux-x64.tar.xz -C /opt 4.3 将node.js设置为全局可用

管理员权限打开/etc/profile文件:

$ sudo vim /etc/profile

在文件尾部加入配置项(输入i进入编辑模式):

export NODEJS_HOME=/opt/node-v10.16.2-linux-x64 export PATH=$PATH:$NODEJS_HOME/bin

Esc键退出编辑模式,输入:wq!保存并退出;

执行. /etc/profile命令,重新加载配置文件。

4.4 测试 $ node -v

当出现以下内容时则说明node.js已安装成功:
在这里插入图片描述

P.S. 参考博客

5. Fabric的安装 5.1 创建并进入工作目录 $ mkdir -p $GOPATH/src/github.com/hyperledger/ $ cd $GOPATH/src/github.com/hyperledger/ 5.2 克隆源码 $ git clone https://github.com/hyperledger/fabric.git $ cd fabric $ git checkout v1.4.0 5.3 下载镜像和fabric-samples $ cd scripts/

执行scripts目录中的bootstrap.sh脚本会自动下载fabric-samples和fabric镜像:

./bootstrap.sh 5.4 测试 $ sudo docker images

当出现以下内容时则说明镜像部署成功:
在这里插入图片描述
至此,Fabric1.4的基础环境已搭建完成。

6. 运行first-network 6.1 启动网络 $ cd $GOPATH/src/github.com/hyperledger/fabric/scripts/fabric-samples/first-network $ ./byfn.sh up

当出现以下内容时则说明网络已启动成功:
在这里插入图片描述

6.2 测试网络 6.2.1 进入容器 $ docker exec -it cli bash # 此时初始状态为a: 90, b: 210 6.2.2 查询“a” peer chaincode query -C mychannel -n mycc -c '{"Args":["query","a"]}'

结果显示:
在这里插入图片描述

6.2.3 交易a->b 10 peer chaincode invoke -o orderer.example.com:7050 --tls true --cafile /opt/gopath/src/github.com/hyperledger/fabric/peer/crypto/ordererOrganizations/example.com/orderers/orderer.example.com/msp/tlscacerts/tlsca.example.com-cert.pem -C mychannel -n mycc --peerAddresses peer0.org1.example.com:7051 --tlsRootCertFiles /opt/gopath/src/github.com/hyperledger/fabric/peer/crypto/peerOrganizations/org1.example.com/peers/peer0.org1.example.com/tls/ca.crt --peerAddresses peer0.org2.example.com:7051 --tlsRootCertFiles /opt/gopath/src/github.com/hyperledger/fabric/peer/crypto/peerOrganizations/org2.example.com/peers/peer0.org2.example.com/tls/ca.crt -c '{"Args":["invoke","a","b","10"]}'

交易成功结果:
在这里插入图片描述

6.2.4 查询b peer chaincode query -C mychannel -n mycc -c '{"Args":["query","b"]}'

结果显示:
在这里插入图片描述
交易成功!

6.3 关闭网络

执行exit退出容器,之后执行:

./byfn.sh down

当出现以下内容时则说明网络已关闭:
在这里插入图片描述

7. 遇到的问题记录 问题一 问题:

开机之后运行sudo apt update就遇到问题,报错如下:
E: Could not get lock /var/lib/dpkg/lock - open (11: Resource temporarily unavailable)
E: Unable to lock the administration directory (/var/lib/dpkg/), is another process using it?

原因:

apt还在运行。

解决方案:

1、ps afx|grep apt查找所有的apt进程,全部kill
2、删除锁定文件:
sudo rm /var/lib/dpkg/lock// 移除对应目录下的锁文件;
sudo dpkg --configure -a// 强制重新配置软件包;
sudo apt update//更新软件包源文件

P.S.参考博客

问题二 问题:

本地server出现磁盘已满。

原因:

fabric-samples与fabric镜像较大。

解决方案:

1、输入df -h查看磁盘使用情况,发现磁盘/dev/mapper/ubuntu–vg-ubuntu–lv满了,故对其进行扩容;
2、输入sudo vgdisplay查看存在的卷组,根据Alloc PE / Size、Free PE / Size确定扩容量;
3、输入sudo lvextend -L 8G /dev/mapper/ubuntu--vg-ubuntu--lv,扩容8G;
4、输入sudo resize2fs /dev/mapper/ubuntu--vg-ubuntu--lv,重新计算磁盘大小。

P.S.参考博客

问题三 问题:

新建虚拟机时选择克隆现有虚拟机,启动fabric网络时报错如下:
ERROR: Couldn’t connect to Docker daemon at http+docker://localhost - is it running?

原因:

docker不是系统服务方式启动。

解决方案:

1、cd ~返回根目录;
2、sudo gpasswd -a ${USER} docker将当前用户加入docker用户组;
3、sudo su将当前用户切换到root;
4、su ubuntu再切换回Ubuntu;
5、docker-compose up -d最后执行。

问题四 问题:

新建虚拟机时选择克隆现有虚拟机,启动fabric网络时报错如下:
Error: got unexpected status: BAD_REQUEST – error authorizing update: error validating ReadSet: readset expected key [Group] /Channel/Application at version 0, but got version 1

原因:

有一个已经存在的channel,阻止进一步的执行而引起的。

解决方案:

1、输入./byfn.sh -m restart -c mychannel


作者:Fantasy3333



hyperledger ubuntu fabric

需要 登录 后方可回复, 如果你还没有账号请 注册新账号