fabric篇之Centos7系统下源码搭建Fabric系统
首先,在搭建Fabric系统时,需要提前进行如下环境准备:1、Linux(Centos):Fabric运行的系统平台;【因为这里是基于Centos搭建】2、docker,docker-compose:部署虚拟化镜像容器,学习时减少机器开销;链码运行环境为docker容器的沙箱环境;3、golang:Fabric运行的基础环境,编译Fabric项目。一、安装准备1.1、安装gitsudo yum i
一、简介
当我们在搭建日常运维环境时,通常需要安装指定版本的服务,来与其他服务进行适配,在这种情况下,通过我们会采用源码包来安装,通过下载指定版本的包。通常为了实现自动化管理,运维人员通常会利用fabric来进行一个集成化管理。
fabric是对ssh的一个集成工具,对我们而言只需要使用相应的接口,来高效的完成工作。
我们常用到的功能基本是:本地或者远端执行命令,分发文件,收集文件,还有一些权限相关的操作。这些fabric都给我们提供了对应的接口。
这里:fabric常用的接口方法可以参考我的这篇文章:
https://blog.csdn.net/xu710263124/article/details/116499057
一般在线上环境下,不建议yum安装,因为许多相关依赖的工具都有版本方面的限制,这会使得环境变的混乱,各个服务之间版本不适配。所以一般情况下,我们采用源码自主安装,规避不必要的因素。
那么如何进行fabric的搭建呢,接下来做出详细解释:
首先,在搭建Fabric系统时,需要提前进行如下环境准备:
1、Linux(Centos):Fabric运行的系统平台;【因为这里是基于Centos搭建】
2、docker,docker-compose:部署虚拟化镜像容器,学习时减少机器开销;链码运行环境为docker容器的沙箱环境;
3、golang:Fabric运行的基础环境,编译Fabric项目。
二、Fabric安装
1.1、安装git
sudo yum install git
1.2、安装和配置Golang(版本>=1.7)
1.2.1、卸载低版本的golang
sudo yum remove golang
sudo yum autoremove
1.2.2、下载并解压go二进制包
下载链接:https://storage.googleapis.com/golang/go1.8.1.linux-amd64.tar.gz
可通过FileZilla、或者scp将下载的包上传至服务器中。
然后解压:
sudo tar -xvf go1.8.1.linux-amd64.tar.gz -C /usr/local/
1.2.3、设置环境变量
在/etc/profile文件末尾(所有用户有效)中添加:
export GOROOT=/usr/local/go
export GOPATH=/home/go
export PATH=$PATH:/usr/local/go/bin
使得环境变量生效:
source /etc/profile
1.2.4、测试
go version
1.3、安装和配置Docker(这里docker版本要>=1.12)
如果已经安装了docker,可通过docker version查看本机docker版本,若版本较低,需要重新安装,如下:
1.3.1、卸载低版本docker
sudo yum remove docker \
docker-common \
container-selinux \
docker-selinux \
docker-engine
1.3.2、安装docker-ce(from repository)
安装yum-utils和wget
sudo yum install -y yum-utils
sudo yum install -y wget
配置系统镜像(如果没有配置)
cd /etc/yum.repos.d
sudo wget http://mirrors.163.com/.help/CentOS7-Base-163.repo
sudo yum clean all
sudo yum makecache
sudo yum update -y
添加stable repository
sudo yum-config-manager \
--add-repo \
https://download.docker.com/linux/centos/docker-ce.repo
安装docker-ce
sudo yum makecache fast
sudo yum install docker-ce
启动docker
sudo systemctl start docker
1.3.3、配置免sudo使用docker
添加docker用户组【如果不存在】
sudo groupadd docker
将用户添加到docker用户组中
sudo gpasswd -a ubuntu docker
重启docker服务
sudo systemctl restart docker
重启group或者重启x会话
newgrp - docker
或
pkill X
1.3.4、配置快速docker镜像
sudo curl -sSL https://get.daocloud.io/daotools/set_mirror.sh | sh -s http://f8c3f422.m.daocloud.io
重启docker服务
sudo systemctl restart docker
1.3.5、测试docker
执行docker version查看版本
1.4、安装和配置Docker Compose(版本>=1.8.1)
1.4.1、获取
sudo curl -L "https://github.com/docker/compose/releases/download/1.12.0/docker-compose-$(uname -s)-$(uname -m)" -o /usr/local/bin/docker-compose
执行结果如图:
然后添加执行权限
sudo chmod +x /usr/local/bin/docker-compose
1.4.2、测试
执行docker-compose version,得到结果如下:
docker-compose version
成功~
1.5、安装pip及其他包
安装gcc
sudo yum install -y gcc gcc-c++ kernel-devel
sudo yum install -y python-devel libxslt-devel libffi-devel openssl-devel
下载get-pip.py
wget https://bootstrap.pypa.io/get-pip.py
安装pip
sudo python get-pip.py
安装其他包
sudo pip install --upgrade pip
sudo pip install behave nose docker-compose
sudo pip install -I flask python-dateutil pytz pyyaml couchdb flask-cors request pyOpenSSL pysha3 grpcio
sudo pip install urllib3 ndg-httpsclient pyasn1 ecdsa python-slugify grpcio-tools jinja2 b3j0f.aop six
2、编译fabric源码
2.1、获取fabric源码
克隆源码
1、首先要到/home目录下新建go文件夹,用来存放后续fabric源码。
cd /home
mkdir go
cd go
mkdir pkg src bin
2、然后用git获取fabric开源代码
注意:在go的src目录下执行
此时,需要确保本机有装有git,如果没有,可通过
yum install -y git
进行安装,然后进行如下执行:
cd /home/go/src
git clone https://github.com/hyperledger/fabric.git
耐心等候~~
如果git clone速度过慢的话,可以参考我的这篇文章:
https://blog.csdn.net/xu710263124/article/details/116661363?spm=1001.2014.3001.5502
当下载完毕后,进入fabric目录将版本切换至fabric1.4.3:
#在fabric目录下执行
cd /home/go/src/fabric
git checkout v1.4.3
3、拉取fabric镜像
3.1.1、编辑/home/go/src/fabric/scripts 中的bootstrap.sh 脚本
cd /home/go/src/fabric/scripts
vim bootstrap.sh
可以注释掉以下两个方法:
samplesInstall() 和 binariesInstall() 两个方法
3.1.2、然后将该脚本bootstrap.sh 移动到与fabric 同级目录下
mv bootstrap.sh /home/go/src/
ls
3.1.3、获取fabric镜像服务
获取fabric镜像服务
wget https://github.com/hyperledger/fabric/releases/download/v1.4.4/hyperledger-fabric-linux-amd64-1.4.4.tar.gz
如下图:
wget https://github.com/hyperledger/fabric-ca/releases/download/v1.4.4/hyperledger-fabric-ca-linux-amd64-1.4.4.tar.gz
下载成功后,ls即可看到两个fabric安装包
[root@server1 src]# ls
bin bootstrap.sh config fabric hyperledger-fabric-ca-linux-amd64-1.4.4.tar.gz hyperledger-fabric-linux-amd64-1.4.4.tar.gz
3.1.4、然后通过tar指令将压缩包解压到/home/go/src目录下(和fabric同级目录)
执行命令:
[root@server1 src]# pwd
/home/go/src
[root@server1 src]# ls
bin bootstrap.sh config fabric hyperledger-fabric-ca-linux-amd64-1.4.4.tar.gz hyperledger-fabric-linux-amd64-1.4.4.tar.gz
tar -xvf hyperledger-fabric-linux-amd64-1.4.4.tar.gz -C /home/go/src
tar -xvf hyperledger-fabric-ca-linux-amd64-1.4.4.tar.gz -C /home/go/src
执行完成后,可看到bin目录下会出现以下结果,config目录会出现以下结果
3.2.1、获取fabric-samples
cd /home/go/src #在fabric的同级目录下获取fabric-samples
git clone https://github.com/hyperledger/fabric-samples.git
下载完成后,
cd fabric-samples
git checkout v1.4.3 #把这个版本也改成1.4.3
3.2.2、将bin和config复制到fabric-samples目录下
cd /home/go/src#如果本来就在此目录下,可以跳过此步骤
cp -r bin/ fabric-samples/
cp -r config/ fabric-samples/
3.2.3、使用./执行编辑过的bootstrap.sh
./bootstrap.sh 1.4.3 1.4.3 0.4.15
执行后,便开始通过docker pull构建镜像,显示如下:
3.2.4、执行完毕后,可通过docker images查看镜像是否拉取成功
docker images
3.2.5、最后把fabric-samples的bin加入路径PATH
vim /etc/profile
#在profile最后加上
export PATH=$PATH:$GOROOT/bin:$GOPATH/bin:/home/go/src/fabric-samples/bin
#wq保存退出后执行
source /etc/profile
3.3、Fabric网络搭建
3.3.1、生成Fabric网络
进入目录/home/go/src/fabric-samples/first-network下:
cd /home/go/src/fabric-samples/first-network
./byfn.sh -m generate
自动化脚本 byfn.sh 可以自动帮我们创建网络环境运行时所需的所有内容,但在一些特定情况之下,我们根据不同的需求需要自定义一些设置。
执行结果如下:
3.3.2、生成组织结构与身份证书
在/home/go/src/fabric-samples/first-network 目录下执行:
../bin/cryptogen generate --config=./crypto-config.yaml
得到如下输出:
org1.example.com
org2.example.com
配置文件 crypto-config.yaml 生成 Hyperledger Fabric 网络环境中所需的组织结构及身份证书信息,组织中的成员提供节点服务,相应的证书代表身份,可以在实体间进行通信以及交易时进行签名与验证。
crypto-config.yaml,其配置文件包含如下内容:
OrdererOrgs:
- Name: Orderer # Orderer的名称
Domain: Example Domain # 域名
Specs:
- Hostname: orderer # hostname + Domain的值组成Orderer节点的完整域名
PeerOrgs:
- Name: Org1
Domain: org1.example.com
EnableNodeOUs: true # 在msp下生成config.yaml文件
Template:
Count: 2
Users:
Count: 1
- Name: Org2
Domain: org2.example.com
EnableNodeOUs: true
Template:
Count: 2
Users:
Count: 1
该配置文件指定了 OrdererOrgs 及 PeerOrgs 两个组织信息。在 PeerOrgs 配置信息中指定了 Org1 与 Org2 两个组织。每个组织使用Template属性下的 Count 指定了两个节点,Users属性下的 Count 指定了一个用户。
证书和密钥(即MSP材料)将被输出到当前一个名为 crypto-config 的目录中,该目录下有两个子目录:
[root@server1 first-network]# cd crypto-config
[root@server1 crypto-config]# ls
ordererOrganizations peerOrganizations
[root@server1 crypto-config]# ll
总用量 0
drwxr-xr-x 3 root root 25 5月 11 20:13 ordererOrganizations
drwxr-xr-x 4 root root 54 5月 11 20:13 peerOrganizations
注:
ordererOrganizations:子目录下包括构成 Orderer 组织(1个 Orderer 节点)的身份信息;
peerOrganizations:子目录下为所有的 Peer 节点组织(2个组织,4个节点)的相关身份信息。其中最关键的是 MSP 目录,代表了实体的身份信息。
3.3.3、生成初始区块
在 fabric-samples/first-network 目录下创建 Orderer 服务启动初始区,指定使用configtx.yaml 文件中定义的 TwoOrgsOrdererGenesis 模板,,生成 Orderer 服务系统通道的初始区块文件。
../bin/configtxgen -profile TwoOrgsOrdererGenesis-outputBlock ./channel-artifacts/genesis.block
注:configtx.yaml 文件用于创建服务启动初始区块及应用通道交易配置文件,同时指定了指定 Orderer 服务的相关配置以及当前的联盟信息
其中,Orderer部分指定了Orderer节点的信息:
OrdererType 指定了共识排序服务的实现方式,有两种选择(solo 及 Kafka);
1、Addresses 指定了 Orderer 节点的服务地址与端口号;
2、BatchSize 指定了批处理大小,如最大交易数量,最大字节数及建议字节数。
Profiles 部分指定了两个模板:
1、TwoOrgsOrdererGenesis 模板用来生成Orderer服务的初始区块文件;
2、TwoOrgsChannel 模板用来生成应用通道交易配置文件。
3.4、启动first-network
进入fabric-samples目录下的first-network后,执行byfn.sh脚本
#进入first-network目录后执行启动文件
cd /home/go/src/fabric-samples/first-network
./byfn.sh up
此时说明启动成功
如果顺利执行到END,则表明fabric环境搭建完毕
当最终出现了All GOOD, BYFN execution completed就表示已经成功了。
使用top命令可以查看到会有4个peer节点进程
注:如果中途报错error getting endorser client for channel,先把上面的channel关闭,再编辑resolv.conf
./byfn.sh down
vim /etc/resolv.conf
把这一行注释掉,options timeout:2 attempts:3 rotate single-request-reopen
注意:最后一定要记得将channel关掉!
OK~至此,fabric的搭建就算完成了
Nice
更多推荐
所有评论(0)