当前位置:网站首页>Fabric v1.1 环境搭建
Fabric v1.1 环境搭建
2022-08-04 05:31:00 【Louzen】
之前搭建Fabric v1.1的搭建过程记录得不全,正好实验室申请了台服务器用来搭建区块链就重新边安装边记录
本地虚拟机里是CentOS 7.6,这里是CentOS 7.7,不知道有什么“惊喜”在等着我
参考杨毅 的 Hyperledger Fabric 开发实战
下面的命令都是在root环境下操作的
1. 初始化运行环境
1.1 设置阿里为YUM源
# 更新yum
yum update
# 备份原来的YUM源
cp /etc/yum.repos.d/CentOS-Base.repo /etc/yum.repos.d/CentOS-base.repo.bak
# 设置阿里YUM源
wget -O /etc/yum.repos.d/CentOS-Base.repo http://mirrors.aliyun.com/repo/Centos-7.repo
# 清理缓存并生成新的缓存
yum clean all
yum makecache
# 更新YUM源
yum update
1.2 Docker安装
# 卸载Docker旧版本
yum remove docker \
docker-client \
docker-client-latest \
docker-common \
docker-latest \
docker-latest-logrotate \
docker-logrotate \
docker-selinux \
docker-engine-selinux \
docker-engine
# 在线安装Docker CE
yum install -y yum-utils \
device-mapper-persistent-data \
lvm2
# 设置稳定存储库
yum-config-manager \
--add-repo \
https://download.docker.com/linux/centos/docker-ce.repo
# 安装最新版本的Docker CE
yum install docker-ce
# 执行查询Docker版本号,看是否安装成功
docker --version
# 后面运行docker时可能会报错
# Cannot connect to the Docker daemon at unix:///var/run/docker.sock. Is the docker daemon running?
# 是docker服务没有启动,启动一下就好
service docker start
1.3 Docker-Compose安装
# 安装curl(Docker-Compose需要服务器支持curl命令)
yum install curl
# 安装Docker-Compose,这里有个坑,`是esc键下面键,不是单引号
curl -L https://github.com/docker/compose/releases/download/1.20.1/docker-compose-`uname -s`-`uname -m` -o /usr/local/bin/docker-compose
# 如果报错提示为:
# -bash: /usr/bin/docker-compose: No such file or directory
# 或提示:cp /usr/local/bin/docker-compose /usr/bin
# 就执行下面的操作:
# cp /usr/local/bin/docker-compose /usr/bin
# 如果再提示权限不够,就给它运行权限
# chmod +x /usr/bin/docker-compose
# 查看docker-compose的版本
docker-compose --version
1.4 Go语言环境安装
# 下载1.10.1版本的Go语言包
curl -O https://storage.googleapis.com/golang/go1.10.1.linux-amd64.tar.gz
# 将Go语言包解压至/usr/local目录下
tar -C /usr/local -xzf go1.10.1.linux-amd64.tar.gz
# 配置go语言环境,为使环境变量永久生效,需要在/etc/profile文件中添加如下两行
export PATH=$PATH:/usr/local/go/bin
export GOPATH=/opt/gopath
# 到etc目录下,刷新配置
cd /etc
source profile
# 输出环境变量,测试是否成功
echo $PATH
# 查看Go语言版本
go version
# 创建go目录,这里的gopath就是前面设置的路径,目录要跟着对应起来
# 源码存在src中,lib里面是包,bin里是可执行文件
# mkdir -p 参数,递归创建目录,可以一次创建多个不存在的目录
mkdir -p /opt/gopath/src
mkdir /opt/gopath/bin
mkdir /opt/gopath/lib
# src目录后面要放入Fabric文件
2 Fabric环境部署
2.1 Fabric源码安装
# 安装git
yum install git
# 运用go命令从github上获取源码,源码自动会出现在/opt/gopath/src目录中
# 下载速度会因为网络因素而很慢,可能会经历多次失败
go get github.com/hyperledger/fabric
# go get之后报错:can't load package: package github.com/hyperledger/fabric:
# no Go files in /opt/gopath/src/github.com/hyperledger/fabric
# 我看了下,src下面自己创建了一系列目录,但是fabric下面没有文件,
# 就又到fabric目录下再次运行go get的那条命令,此时发现文件被下载下来了
# 切换git版本分支至release-1.1
# 有些书或教程切换分支到v1.1.0,no!no!no!这个分支是错的,里面的bootstrap.sh有错误,下文会提到这个sh文件
cd /opt/gopath/src/github.com/hyperledger/fabric/
git checkout release-1.1
2.2 Fabric镜像下载
# 能够自动下载所需镜像的脚本文件:
fabric/scripts/boostrap.sh
# 运行此脚本
./bootstrap.sh
# 等待片刻下载完镜像如下图
# 此外还会下载一个名为bin的目录,里面放着运行区块链所必需的一系列二进制文件
# bin文件稍后会放到运行区块链的文件中
# 镜像作用:(研究不深,如有错误麻烦您留言,纠正我,谢谢!)
# ca是证书授权镜像,管理用户公钥私钥的
# tools是操作区块链的工具,可以视作一个客户端,用来创建后面名为cli的容器
# orderer是排序节点镜像
# peer是普通节点镜像
# javaenv是java运行环境,这里暂时不知道啥作用,私以为是运行java编写的chaincode的
# ccenv也不清楚,私以为是在它创建的容器里运行go写的chaincode
# zookeeper自行百度zookeeper
# kafka在fabric1.1版本里默认的共识机制就是kafka,通过卡夫卡来同步节点之间的信息
# couchdb是一个存储字符串键值对的数据库,对Json字符串有丰富的查询操作
3. 运行e2e_cli样例
# e2e_cli运行的是kafka集群的区块链
# e2e_cli所在位置
fabric/examples/e2e_cli
# e2e_cli的启动脚本文件是
network_setup.sh
# 包含如下命令:(在下一次up前一定要down,否则报错)
./network_setup.sh up 启动e2e_cli
./network_setup.sh down 关闭e2e_cli并清除产生的文件痕迹
./network_setup.sh restart 重启e2e_cli,就是先down再up
# 吹个牛逼,半年前我刚接触区块链第一次运行e2e_cli的时候,看不懂发生了什么错误
# 凌晨两点四下无人,百度也没有多少结果,内心非常绝望
# 现在就不同了,我看到它有报错:
e2e_cli/../../release/linux-amd64/bin/configtxgen: 没有那个文件或目录
# 好办,在前面2.2节运行bootstrap.sh生成了个bin目录,把这个bin目录放到那里
# 上面报错的路径就是下面的路径
/opt/gopath/src/github.com/hyperledger/fabric/release/linux-amd64/
# 若没有linux-amd64目录就创建目录
# 我这里的是有linux-amd64,此目录下也有bin目录,但是bin目录里面没有东西
# 删除bin目录,将2.2节生成的bin复制到linux-amd64目录下,再启动e2e_cli
./network_setup.sh restart
# 运行成功结果如下
这说明区块链环境没有问题,下一步我就要搭建kafka集群的区块链,见我下一篇博客
对了,最后那个界面可以 Ctrl + C 退出,再**./network_setup.sh down**清除痕迹
边栏推荐
猜你喜欢
【五一专属】阿里云ECS大测评#五一专属|向所有热爱分享的“技术劳动者”致敬#
fuser 使用—— YOLOV5内存溢出——kill nvidai-smi 无pid 的 GPU 进程
深度学习理论——过拟合、欠拟合、正则化、优化器
Copy Siege Lions "sticky" to AI couplets
AWS uses EC2 to reduce the training cost of DeepRacer: DeepRacer-for-cloud practical operation
MNIST手写数字识别 —— 从零构建感知机实现二分类
MOOSE平台使用入门攻略——如何运行官方教程的例子
MOOSE平台官方第二个例子分析——关于创建Kernel,求解对流扩散方程
多层LSTM
DeblurGAN-v2: Deblurring (Orders-of-Magnitude) Faster and Better 图像去模糊
随机推荐
Windows10重置MySQL用户密码
yoloV5 使用——训练速度慢,加速训练
Comparison of oracle's number and postgresql's numeric
MNIST手写数字识别 —— 从零构建感知机实现二分类
【论文阅读】Mining Cross-Image Semantics for Weakly Supervised Semantic Segmentation
Tencent and NetEase have taken action one after another. What is the metaverse that is so popular that it is out of the circle?
强化学习中,Q-Learning与Sarsa的差别有多大?
Rules.make-适合在编辑模式下看
LeetCode_Dec_3rd_Week
理想的生活
如何用Pygame制作简单的贪吃蛇游戏
【代码学习】
Deep learning, "grain and grass" first--On the way to obtain data sets
Transformer
Code to celebrate the Dragon Boat Festival - Zongzi, your heart
MNIST Handwritten Digit Recognition - Building a Perceptron from Zero for Two-Classification
剪映专业版字幕导出随笔
打金?工作室?账号被封?游戏灰黑产离我们有多近
SQL注入详解
计算某像素点法线