当前位置:网站首页>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**清除痕迹
边栏推荐
- 安装pyspider后运行pyspider all后遇到的问题
- 双向LSTM
- A code example of the PCL method in the domain of DG (Domain Generalization)
- MNIST手写数字识别 —— 从二分类到十分类
- [CV-Learning] Linear Classifier (SVM Basics)
- The Unity of ML - agents interpret parameter Settings
- 审稿意见回复
- MNIST Handwritten Digit Recognition - Building a Perceptron from Zero for Two-Classification
- Introduction to Convolutional Neural Networks
- LeetCode_Nov_1st_Week
猜你喜欢
arm交叉编译
典型CCN网络——efficientNet(2019-Google-已开源)
Copy Siege Lion 5-minute online experience MindIR format model generation
Image-Adaptive YOLO for Object Detection in Adverse Weather Conditions
How to get started with MOOSE platform - an example of how to run the official tutorial
MNIST handwritten digit recognition, sorted by from two to ten
MNIST手写数字识别 —— 从零构建感知机实现二分类
Pytorch语义分割理解
AWS使用EC2降低DeepRacer的训练成本:DeepRacer-for-cloud的实践操作
【深度学习日记】第一天:Hello world,Hello CNN MNIST
随机推荐
TypeError: load() missing 1 required positional argument: ‘Loader‘
SQL注入详解
LeetCode_22_Apr_4th_Week
深度学习理论——过拟合、欠拟合、正则化、优化器
arm-3-中断体系结构
No matching function for call to 'RCTBridgeModuleNameForClass'
makefile基础学习
【论文阅读】Further Non-local and Channel Attention Networks for Vehicle Re-identification
理想的生活
YOLOV4流程图(方便理解)
CSDN大礼包--高校圆桌派大礼包
LeetCode_Nov_3rd_Week
TensorRT 5 初步认识
双向LSTM
Tencent and NetEase have taken action one after another. What is the metaverse that is so popular that it is out of the circle?
光条提取中的连通域筛除
Thunderbolt turns off automatic updates
腾讯、网易纷纷出手,火到出圈的元宇宙到底是个啥?
第三章 标准单元库(下)
周志华机器学习