unbuntu22搭建Fabric环境及踩坑经历

1 环境准备

1.1 安装docker

使用阿里云镜像源安装Docker(不用代理,速度更快,一步到位

1、卸载可能存在的或者为安装成功的Docker版本
sudo apt-getremove docker docker-engine docker-ce docker.io
2、添加阿里云的GPG密钥
curl -fsSL http://mirrors.aliyun.com/docker-ce/linux/ubuntu/gpg | sudo apt-key add -
3、使用以下命令设置储存库
sudo add-apt-repository "deb [arch=amd64] http://mirrors.aliyun.com/docker-ce/linux/ubuntu $(lsb_release -cs) stable"

4、安装最新版本的Docker
sudo apt-get update
sudo apt-get install docker-ce docker-ce-cli containerd.io docker-compose-plugin
5、验证Docker是否安装成功
docker version

安装docker的permission denied问题1:

没有执行权限

解决方案1:

# 将用户加入到 group 内  然后退出并重新登陆
sudo gpasswd -a ${USER} docker
# 重启docker服务
systemctl restart docker
# 当前用户切换到docker群组
newgrp - docker
docker version

出现下图即是安装成功

1.2 安装docker-compose

# 下载2.6.1 docker compose 安装位置是/usr/local/bin/docker-compose
sudo curl -L "https://github.com/docker/compose/releases/download/2.6.1/docker-compose-$(uname -s)-$(uname -m)" -o /usr/local/bin/docker-compose

# 添加可执行权限ls
sudo chmod +x /usr/local/bin/docker-compose

# 测试安装
sudo docker-compose --version

出现下图即是安装成功

1.3 go环境的安装

# wget下载
wget https://golang.google.cn/dl/go1.18.3.linux-amd64.tar.gz

解压到/usr/local
# 如果是在文件地址的目录下直接执行下边代码,
tar -C /usr/local -xzf go1.18.3.linux-amd64.tar.gz
# 如果不是需要给出绝对路径;比如:
tar -C /usr/local -xzf /download/go1.18.3.linux-amd64.tar.gz

配置环境变量
全局配置
vi /etc/profile
#在文件最后加上
export GOPATH=/goWorkPlace   //这可以换成自己的工作目录
export GOROOT=/usr/local/go
export PATH=$PATH:$GOROOT/bin
#让配置生效
source /etc/profile

当前用户配置
vi ~/.bashrc
#在文件最后加上
export GOPATH=/goWorkPlace   //这可以换成自己的工作目录
export GOROOT=/usr/local/go
export PATH=$PATH:$GOROOT/bin
#让配置生效
source ~/.bashrc

go env
#如果能打印出配置信息,则证明环境已经配置完成

问题2:go env 提示 没有找到go命令 go: command not found

如果经历以上步骤,未能打印出配置信息

解决方案2:输入 : source $HOME/.profile. 以此来更新配置,并且重启系统,这样配置才会生效。

出现下图即是安装成功

1.4 nodejs安装

#下载二进制源码包
wget https://nodejs.org/dist/v16.14.0/node-v16.14.0-linux-x64.tar.xz

解压并安装
# 指定压缩包解压到/opt目录下
$ sudo tar xvf node-v8.11.4-linux-x64.tar.xz -C /opt
# 在/opt目录下得到 node-v8.11.4-linux-x64 目录

配置环境变量
# 打开系统级别的配置文件 /etc/profile
$ sudo vim /etc/profile
# 添加如下配置项, 保存退出
    export NODEJS_HOME=/opt/node-v8.11.4-linux-x64
    export PATH=$PATH:$NODEJS_HOME/bin
# 重新加载配置文件
$ . /etc/profile
# /etc/profile -> 设置环境变量的配置文件
#    - 对当前系统下所有用户生效

测试
node -v

2 部署hyperledger Fabric

2.1 下载脚本

# 1. 创建放置的目录,进入该目录,下载脚本
cd ~
mkdir hyperledger-fabric  	
cd hyperledger-fabric
# 下载并执行脚本  需要翻墙
# 后接参数第一个 1.2.0=> Fabric的版本 第二个1.2.0=>Fabric的认证机构Fabric的版本  第三个是第三方库的版本   前两个参数一般保持一致
# 老版本  
curl -sSL http://bit.ly/2ysbOFE | bash -s 1.2.0 1.2.0 0.4.10
# 新版本 
curl -sSL http://bit.ly/2ysbOFE | bash -s -- 2.0.0 1.4.4 0.4.18 

保险起见我最终选择的还是老版本,有同好想要测试的话可以试试这个新版本,说不定最后就不会碰到我遇见的问题了

 #  下载结束后 ,查看下载了什么镜像
$ docker images 

此时我的镜像只有这一个

问题3:这是教程里面的截图,显而易见我缺少了很多镜像

原因:因为官方的sh文件存在版本号相关的问题,因此镜像的下载会缺少几个重要的文件,这个时候需要我们自己去拉取缺少的镜像。

解决方案3:对比上面的截图,缺什么就拉取什么

docker pull hyperledger/fabric-ca:1.2.0
docker pull hyperledger/fabric-orderer:1.2.0
docker pull hyperledger/fabric-peer:1.2.0
docker pull hyperledger/fabric-ccenv:1.2.0
docker pull hyperledger/fabric-tools:1.2.0
docker pull hyperledger/fabric-baseos:0.4.15
docker pull hyperledger/fabric-kafka:0.4.10
docker pull hyperledger/fabric-zookeeper:0.4.10
docker pull hyperledger/fabric-couchdb:0.4.10

接着我就拥有了以下镜像,但是对比教程还是缺少TAG为latest的镜像

如果你在拉取镜像的之后,出现了1.2.0以外的镜像,我的建议是先不管,继续拉取其它镜像

有的教程可能会说需要删除ID相同,TAG为latest的镜像,我在这里的建议是不要删!!!

原因在下文的问题3中会有解释,如果非删不可也可以先将流程走完,再删不迟

2.2 设置全局访问

下图是hyperledger-fabric/fabric-samples/bin中的文件

将hyperledger-fabric/fabric-samples/bin中的文件都复制到/usr/local/bin

cd hyperledger-fabric/fabric-samples/bin
sudo cp * /usr/local/bin
# 如果/usr/local/bin已经在PATH中了就已经完成了,没有的话加入到PATH中
# 查看PATH
echo $PATH 

2.3 First-Network 环境测试

# 执行 ./byfn.sh generate 命令生成相应的文件
$ cd ~/hyperledger-fabric/fabric-samples/first-network/         #进入到first-network
$ ./byfn.sh generate    

这是用来提前生成相关配置文件的(为接下来自动启动区块链网络提供准备)

结果 如图

# 执行 ./byfn.sh up 启动网络
# byfn == build your first network
$ ./byfn.sh up

顺利的话会出现如下界面

但是在这里我遇到了困扰许久的问题

问题4:

unable to find image 'hyperladger/fabric-tools' locally

local fabric binaries an docker images are out of sync

LOCAL_VERSION 和 DOCKER_IMAGE_VERSION版本不统一

解决方案4:

# 先关闭网络
$ ./byfn.sh down
# 使用以下方式从结构存储库中获取bootstrap.sh 并存储到./scripts
curl -sS https://raw.githubusercontent.com/hyperledger/fabric/master/scripts/bootstrap.sh -o ./scripts/bootstrap.sh
# 将文件模式更改为可执行文件
chmod +x ./scripts/bootstrap.sh 
# 下载二进制文件和docker镜像
# ./scripts/bootstrap.sh [version] 
./scripts/bootstrap.sh 1.2.0 

因为前期下载的脚本以及拉取的镜像是1.2.0版本,所以下载二进制文件和docker镜像的版本号依旧选择1.2.0

结果出现以下 下载页面

此时输入docker images有如下镜像,此时我们可以看到会有各种TAG的镜像

接着又是 生成 启动,此时可以正常出现START界面,但是end界面还是没有出现。

又出现如下问题

问题5:error getting endorser client for channel: endorser client failed to connect to peer1.org1.example.com:7051: failed to create new connection: context deadline exceeded peer1.org1 failed to join the channel, Retry after 3 seconds

解决方案5:

方法1

# 首先我们把网络停止:
$ ./byfn.sh down

# 我们在输入:
$ sudo vim /etc/resolv.conf

方法2

则在base/peer-base.yaml 和docker-compose-cli.yaml文件的environment中添加

 -GODEBUG=netdns=go

再次 执行 ./byfn.sh up 启动网络 

结果如下

恭喜部署成功!!!

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值