Hyperledger Fabric1.4.0安装教程(无需代理)
最近,为了模拟真实的部署环境,我又在自己的centos8虚拟机中安装了Hyperledger Fabric1.4.0,因为懒得给虚拟机搭*,所以自己研究了一下如何不用代理来安装,过程还是非常简单的,不过为了自己以后安装方便也为了一些安装出现问题的朋友,顺手写一篇博客记录一下安装过程。本文基于centos8进行安装,并且无需代理。当然,其他系统的安装过程也是大同小异。
1.前期准备
首先注意:无论你用的是什么操作系统,换源是必不可少的,不然下载速度会非常缓慢甚至无法下载。这个网上教程很多也很简单,请大家根据自己的操作系统进行相应操作,在这里我就不再赘述了。下面是安装fabric之前必须安装的组件:
编号 | 工具 | 版本号 |
---|---|---|
1 | Docker | 19.03.5及以上版本 |
2 | Docker Compose | 1.25.4及以上版本 |
3 | Go | 1.12.4 及以上版本 |
这些组件都是必须要安装的,安装实际上没有什么太大的困难,我就大概的写一下过程吧。
2.docker和docker-compose
(一)docker
参考docker官网Get Docker CE for Centos,另外docker最好设置阿里云的开源镜像站来保证下载速度。
(二)docker Compose
sudo curl -L "https://github.com/docker/compose/releases/download/1.25.4/docker-compose-$(uname -s)-$(uname -m)" -o /usr/local/bin/docker-compose
sudo chmod +x /usr/local/bin/docker-compose
# 检测docker-compose是否安装成功:
docker-compose -v
3.go
# 下载go1.12.linux-amd64.tar.gz并将其解压到指定目录(/usr/local)
wget https://studygolang.com/dl/golang/go1.12.linux-amd64.tar.gz
tar xzvf go1.12.linux-amd64.tar.gz -C /usr/local
# 配置环境变量
sudo vim ~/.profile
# 在末尾添加以下代码
export PATH=$PATH:/usr/local/go/bin
export GOROOT=/usr/local/go
export GOPATH=$HOME/go
export PATH=$PATH:$GOPATH/bin
# 使环境变量生效
source ~/.profile
# 测试
go version
4.安装Fabric
(一)将Fabric源码下载到$GOPATH/src/github.com/hyperledger
目录中
mkdir -p $GOPATH/src/github.com/hyperledger
cd $GOPATH/src/github.com/hyperledger
# 克隆fabric项目并切换到v1.4.0 tag
git clone https://github.com/hyperledger/fabric
cd fabric
git checkout v1.4.0
(二)手动编译Fabric源码
我的centos8没有预置gcc编译器,所以我们要自己安装一下
yum -y install gcc automake autoconf libtool make
安装完之后,开始编译源代码:
# 首先进入fabric文件夹
cd ~/go/src/github.com/hyperledger/fabric/
# 编译源码
make release
# 查看生成的文件
cd release/linux-amd64/bin
如果文件夹内有如下文件的话说明编译成功:
configtxgen 、configtxlator 、cryptogen 、discover 、idemixgen 、orderer 、peer
下载Fabric-samples并启动网络
cd ~/go/src/github.com/hyperledger/fabric/scripts
# 下载fabric-samples
git clone https://github.com/hyperledger/fabric-samples.git
cd ~/go/src/github.com/hyperledger/fabric/scripts/fabric-samples
# 切换分支
git checkout -b sample v1.4.0
完成上面的操作之后,我们来启动第一个网络测试一下安装是否正确:
# 进入first-network文件夹
cd ~/go/src/github.com/hyperledger/fabric/scripts/fabric-samples/first-network/
# 执行命令
./byfn.sh up
如果最后的输出结果为这样即为安装成功
===================== Query successful on peer1.org2 on channel 'mychannel' =====================
========= All GOOD, BYFN execution completed ===========
_____ _ _ ____
| ____| | \ | | | _ \
| _| | \| | | | | |
| |___ | |\ | | |_| |
|_____| |_| \_| |____/
如果出现端口无法连接之类的报错,请配置自己的防火墙,打开相应端口,配置完毕后记得重启docker,如果懒得去配置,也可以直接关闭防火墙(生产环境中请不要这样做,会有很大的安全风险)下面列出Centos8的防火墙配置方法:
systemctl unmask firewalld # 执行命令,即可实现取消服务的锁定
systemctl mask firewalld # 下次需要锁定该服务时执行
systemctl start firewalld.service # 启动防火墙
systemctl stop firewalld.service # 停止防火墙
systemctl reloadt firewalld.service # 重载配置
systemctl restart firewalld.service # 重启服务
systemctl status firewalld.service # 显示服务的状态
systemctl enable firewalld.service # 在开机时启用服务
systemctl disable firewalld.service # 在开机时禁用服务
systemctl is-enabled firewalld.service # 查看服务是否开机启动
systemctl list-unit-files|grep enabled # 查看已启动的服务列表
systemctl --failed # 查看启动失败的服务列表
firewall-cmd --state # 查看防火墙状态
firewall-cmd --reload # 更新防火墙规则
firewall-cmd --state # 查看防火墙状态
firewall-cmd --reload # 重载防火墙规则
firewall-cmd --list-ports # 查看所有打开的端口
firewall-cmd --list-services # 查看所有允许的服务
firewall-cmd --get-services # 获取所有支持的服务
# 区域相关
firewall-cmd --list-all-zones # 查看所有区域信息
firewall-cmd --get-active-zones # 查看活动区域信息
firewall-cmd --set-default-zone=public # 设置public为默认区域
firewall-cmd --get-default-zone # 查看默认区域信息
firewall-cmd --zone=public --add-interface=eth0 # 将接口eth0加入区域public
# 接口相关
firewall-cmd --zone=public --remove-interface=eth0 # 从区域public中删除接口eth0
firewall-cmd --zone=default --change-interface=eth0 # 修改接口eth0所属区域为default
firewall-cmd --get-zone-of-interface=eth0 # 查看接口eth0所属区域
# 端口控制
firewall-cmd --add-port=80/tcp --permanent # 永久添加80端口例外(全局)
firewall-cmd --remove-port=80/tcp --permanent # 永久删除80端口例外(全局)
firewall-cmd --add-port=65001-65010/tcp --permanent # 永久增加65001-65010例外(全局)
firewall-cmd --zone=public --add-port=80/tcp --permanent # 永久添加80端口例外(区域public)
firewall-cmd --zone=public --remove-port=80/tcp --permanent # 永久删除80端口例外(区域public)
firewall-cmd --zone=public --add-port=65001-65010/tcp --permanent # 永久增加65001-65010例外(区域public)
firewall-cmd --query-port=8080/tcp # 查询端口是否开放
firewall-cmd --permanent --add-port=80/tcp # 开放80端口
firewall-cmd --permanent --remove-port=8080/tcp # 移除端口
firewall-cmd --reload # 重启防火墙(修改配置后要重启防火墙)
直接运行这个脚本就可以关闭并删除所有容器
./byfn.sh down
2020年3月30日