Hyperledger Fabric1.4.0安装教程(无需代理)

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日

上一篇:Fabric v2.0 源码解析——典型的业务流程


下一篇:Hyperledger Fabric 基本概念