Fabric环境搭建的准备
关于fabric环境的配置,主要包括go语言、docker、docker-compose等,具体的安装步骤如下:
准备工作
1. 官方帮助文档:https://hyperledger-fabric.readthedocs.io/en/release-1.2/
2. 安装 cURL(https://curl.haxx.se/download.html), curl --version 查询版本
3. 安装docker, docker --version 查询版本
4. 安装docker-compose, docker-compose --version 查询版本
5. 安装 go 语言环境, go version 查询版本
6. 安装node.js, node -v 查询版本
7. Python 版本要求为 2.7, python --version 查询版本
1.1、 安装docker
1. 基础软件安装
# 安装基本软件
$ sudo apt-get update
$ sudo apt-get install apt-transport-https ca-certificates curl git softwareproperties-
common lrzsz -y
2. 添加阿里的docker镜像仓库
# 添加阿里的docker镜像仓库
$ curl -fsSL https://mirrors.aliyun.com/docker-ce/linux/ubuntu/gpg | sudo apt-key
add -
$ sudo add-apt-repository "deb [arch=amd64] https://mirrors.aliyun.com/dockerce/
linux/ubuntu $(lsb_release -cs) stable"
# 更新软件源
$ sudo apt-get update
3. 安装docker
若是root用户,则不会出现如下问题
# 安装docker
$ sudo apt-get install docker-ce -y
# 查看安装的docker版本
$ docker version
Client:
Version: 18.06.1-ce
API version: 1.38
Go version: go1.10.3
Git commit: e68fc7a
Built: Tue Aug 21 17:24:51 2018
OS/Arch: linux/amd64
Experimental: false
Got permission denied while trying to connect to the Docker daemon socket at
unix:///var/run/docker.sock: Get
http://%2Fvar%2Frun%2Fdocker.sock/v1.38/version:
dial unix /var/run/docker.sock: connect: `permission denied`
# 当前用户直接操作docker时, 权限不够, 需要做下面的第4不操作
4.将当前用户添加到docker组
# 将用户加入该 group 内。然后退出并重新登录就生效啦。
$ sudo gpasswd -a ${USER} docker
# 重启docker服务
$ systemctl restart docker
# 当前用户切换到docker群组
$ newgrp - docker
$ docker version
Client:
Version: 18.06.1-ce
API version: 1.38
Go version: go1.10.3
Git commit: e68fc7a
Built: Tue Aug 21 17:24:51 2018
OS/Arch: linux/amd64
Experimental: false
Server:
Engine:
Version: 18.06.1-ce
API version: 1.38 (minimum version 1.12)
Go version: go1.10.3
Git commit: e68fc7a
Built: Tue Aug 21 17:23:15 2018
OS/Arch: linux/amd64
Experimental: false
5.安装docker-compose
#安装依赖工具
$ sudo apt-get install python-pip -y
#安装编排工具
$ sudo pip install docker-compose
#查看版本
$ sudo docker-compose version
1.2 、安装go
# 安装包下载地址:
https://golang.org/dl/ - 翻墙
https://studygolang.com/dl - 国内镜像源
如果没有进行安装包下载, 课直接使用如下命令(目前最新版本):
# 1. 使用wget工具下载安装包
$ wget https://dl.google.com/go/go1.12.7.linux-amd64.tar.gz
# 2. 解压tar包到/usr/local
$ sudo tar zxvf go1.12.7.linux-amd64.tar.gz -C /usr/local
# 3. 创建Go目录
$ mkdir $HOME/go
# 4. 用vi打开~./bashrc,配置环境变量
$ vim ~/.bashrc
# 5. 增加下面的环境变量,保存退出
export GOROOT=/usr/local/go
export GOPATH=$HOME/go
export PATH=$PATH:$GOROOT/bin:$GOPATH/bin
# 6. 使环境变量立即生效, 一些命令二选一
$ source ~/.bashrc
$ . ~/.bashrc
# 7. 检测go是否安装好
$ go version
Windows配置环境变量的方法:
若是go包默认安装到了C盘,则GOROOT和Path会自己设置好。下图是没有默认安装,就需要自己设置
1.3、 安装Node.js
1.官方下载地址
https://nodejs.org/en/download/
2.下载二进制源码包
$ wget https://nodejs.org/dist/v10.16.2/node-v10.16.2-linux-x64.tar.xz
3.解压并安装
# 指定压缩包解压到/opt目录下
$ sudo tar xvf node-v10.16.2-linux-x64.tar.xz -C /opt
- 在/opt目录下得到 node-v10.16.2-linux-x64 目录
4.将node.js设置为全局可用
# 打开系统级别的配置文件 /etc/profile
$ sudo vim /etc/profile
# 添加如下配置项, 保存退出
export NODEJS_HOME=/opt/node-v10.16.2-linux-x64
export PATH=$PATH:$NODEJS_HOME/bin
# 重新加载配置文件
$ . /etc/profile
5.测试
$ node -v
2、部署hyperledger Fabric
git上克隆项目地址
git clone https://github.com/hyperledger/fabric.git
git clone https://github.com/hyperledger/fabric-sdk-go.git
git clone https://github.com/hyperledger/fabric-samples.git
2.1、创建并进入目录
mkdir $HOME/go/src/github.com/hyperledger -p
cd $HOME/go/src/github.com/hyperledger
2.2、在fabric中搭建raft网络时,docker镜像的版本需要最新的,若版本不够新,有可能导致容器的异常退出。
可以将事先下载好的压缩包放到指定目录下,提高下载速度(强烈建议)
mkdir fabric-samples
https://nexus.hyperledger.org/content/repositories/releases/org/hyperledger/fabric/hyperledger-fabric/linux-amd64-1.4.1/hyperledger-fabric-linux-amd64-1.4.1.tar.gz
https://nexus.hyperledger.org/content/repositories/releases/org/hyperledger/fabric-ca/hyperledger-fabric-ca/linux-amd64-1.4.1/hyperledger-fabric-ca-linux-amd64-1.4.1.tar.gz
有以下两种方式:
No.1:脚本方式
第一种:curl方式:(不建议,跟上面提前下载好的包一起用容易缺东西)
下载并执行脚本
cd $HOME/go/src/github.com/hyperledger
// 翻墙的方式
curl -sSL http://bit.ly/2ysbOFE | bash -s 1.4.1 1.4.1 0.4.15
// 不翻墙的方式
curl -sSL https://raw.githubusercontent.com/hyperledger/fabric/master/scripts/bootstrap.sh | bash -s 1.4.1 1.4.1 0.4.15
// 查看拉取到的docker镜像
docker images
第二种:bootstrap.sh方式
1、从git上克隆fabric-samples项目
git clone https://github.com/hyperledger/fabric-samples.git
2、下载完成后执行命令cd fabric-samples,进入到fabric-samples文件夹,
切换fabric-samples版本,git checkout -b v1.4.1
3、进入到scripts目录中,修改bootstrap.sh中的镜像版本,即export VERSION =1.4.0->1.4.1,export THIRDPARTY_IMAGE_VERSION= 0.4.14->0.4.15。
执行bootstrap.sh脚本主要是去拉取二进制工具包以及最新的docker镜像,脚本执行完成后,会在fabric-samples/bin目录中生成二进制工具,最主要是cryptogen configtxlator configtxgen 这三个二进制工具,需要放在全局进行使用
No.2 源码编译方式:
1、从git上克隆fabric项目
git clone https://github.com/hyperledger/fabric.git
2、下载完成后执行命令cd fabric,进入到fabric文件夹,
切换fabric版本,git checkout -b v1.4.1
编译二进制文件有两种方式:
第一种:make release方式
执行make release拉取二进制源码工具,执行完成后,在fabric/release/linux-amd64/bin的目录下就会有下载好的二进制源码工具了
第二种:make方式,会在.build/bin目录下生成二进制工具(.build/bin是隐藏文件,在make时第一行会有提示)
make configtxgen
make cryptogen
make configtxlator
docker的最新镜像可以shell脚本来拉去,执行命令vi docker_images.sh,将下面代码块中的内容填写进文件中,然后执行chmod +x docker_images.sh为脚本文件添加执行权限,最后执行./docker_images.sh将最新版本的docker镜像拉取下来。
#!/bin/bash
docker pull hyperledger/fabric-ca:1.4.1
docker tag hyperledger/fabric-ca:1.4.1 hyperledger/fabric-ca:latest
docker pull hyperledger/fabric-tools:1.4.1
docker tag hyperledger/fabric-tools:1.4.1 hyperledger/fabric-tools:latest
docker pull hyperledger/fabric-ccenv:1.4.1
docker tag hyperledger/fabric-ccenv:1.4.1 hyperledger/fabric-ccenv:latest
docker pull hyperledger/fabric-orderer:1.4.1
docker tag hyperledger/fabric-orderer:1.4.1 hyperledger/fabric-orderer:latest
docker pull hyperledger/fabric-peer:1.4.1
docker tag hyperledger/fabric-peer:1.4.1 hyperledger/fabric-peer:latest
docker pull hyperledger/fabric-javaenv:1.4.1
docker tag hyperledger/fabric-javaenv:1.4.1 hyperledger/fabric-javaenv:latest
docker pull hyperledger/fabric-zookeeper:0.4.15
docker tag hyperledger/fabric-zookeeper:0.4.15 hyperledger/fabric-zookeeper:latest
docker pull hyperledger/fabric-kafka:0.4.15
docker tag hyperledger/fabric-kafka:0.4.15 hyperledger/fabric-kafka:latest
docker pull hyperledger/fabric-couchdb:0.4.15
docker tag hyperledger/fabric-couchdb:0.4.15 hyperledger/fabric-couchdb:latest
docker pull hyperledger/fabric-baseos:0.4.15
docker tag hyperledger/fabric-baseos:0.4.15 hyperledger/fabric-baseos:latest
2.3、设置全局访问
cd $HOME/go/src/github.com/hyperledger/fabric-samples/bin/
// 将全部二进制文件拷贝到/usr/local/bin目录下,最主要是下面三个
configtxgen
cryptogen
configtxlator
sudo cp * /usr/local/bin
# 执行完上述操作之后, fabric的这些可执行程序就可以在全局范围内使用了
3、First-Network对环境进行测试
solo网络测试
首先进入到first-network文件夹中
cd $HOME/go/src/github.com/hyperledger/fabric-samples/first-network/
给脚本 byfn.sh 添加执行权限
chmod +x byfn.sh
用脚本生成相应的文件
./byfn.sh -m generate
启动solo网络
./byfn.sh -m up
查看solo网络节点的启动情况
docker ps
重启solo网络
./byfn.sh -m restart
停止solo网络
./byfn.sh -m down
kafka网络测试
首先进入到first-network文件夹中
cd $HOME/go/src/github.com/hyperledger/fabric-samples/first-network/
用脚本生成相应的文件
./byfn.sh -m generate -o kafka
启动kafka网络
./byfn.sh -m up -o kafka
查看kafka网络节点的启动情况
docker ps
重启kafka网络
./byfn.sh -m restart -o kafka
停止kafka网络
./byfn.sh -m down -o kafka
etcdraft网络测试
首先进入到first-network文件夹中
cd $HOME/go/src/github.com/hyperledger/fabric-samples/first-network/
用脚本生成相应的文件
./byfn.sh -m generate -o etcdraft
启动etcdraft网络
./byfn.sh -m up -o etcdraft
查看etcdraft网络节点的启动情况
docker ps
重启etcdraft网络
./byfn.sh -m restart -o etcdraft
停止etcdraft网络
./byfn.sh -m down -o etcdraft
若能顺利执行网络测试,则fabric网络环境部署成功!