Hyperledger Fabric 2.0 部署教程

写在前面的话

开始之前可以先自行了解一下linux命令、docker 命令和git 命令,这样会更加熟悉下main的教程。同时需要学习一下区块链的原理,以及fabric的架构。

目录

  • 写在前面的话
    • 环境准备
        • Linux
        • PUTTY
        • 工具准备
        • GO 语言环境
        • Docker
        • Docker Compose
    • Fabric 源码
        • Fabric 源代码
        • fabric-samples
        • fabric-binaries 组件
        • fabric -ca 组件
    • Fabric 镜像

环境准备

Linux

本文选择腾讯云 Ubuntu Server 18.04.1 LTS 64位/CPU 1核/内存 2GB/公网带宽 1Mbps。暂不支持Windows系统开发。

PUTTY

因为在网页操作系统不太方便,所以这里推荐下载PUTTY。

工具准备

  1. apt
    apt 是Advanced Packaging Tool的简称,是Ubuntu下的包安装管理工具,大部分的软件安装/更新/卸载都是利用apt命令来实现的。登陆ubuntu系统终端命令行,执行以下命令更新工具
	sudo apt install 
  1. git
    Git 是一个开源的分布式版本控制系统,用于敏捷高效地处理任何或小或大的项目。git工具方便我们从github网站上拉取相应版本的代码。
	sudo apt install git
  1. vsftp
    vsftp是用于文件传输的工具,方便我们在本地和云端之间进行文件传输。同时推荐下载FileZilla。
	sudo apt-get install vsftpd -y     # 下载安装vsftp
	sudo netstat -nltp | grep 21
	#如果没有启动,可以手动开启 VSFTPD 服务:
	sudo systemctl start vsftpd.service
sudo vi /etc/vsftpd.conf #修改上传文件权限
write_enable = YES

GO 语言环境

Go(又称Golang)是Google开发的一种静态强类型、编译型、并发型,并具有垃圾回收功能的编程语言。Fabric 的底层代码又go编译,所以需要安装go。
Ubuntu的apt-get自带的go版本太低,这里我们重新安装,输入指令:

wget https://studygolang.com/dl/golang/go1.13.4.linux-amd64.tar.gz  #从国内网络下载较快
wget https://storage.googleapis.com/golang/go1.13.4.linux-amd64.tar.gz  # 从国外google下载较慢

然后解压:

tar -xzf go1.13.4.linux-amd64.tar.gz
sudo mv go /usr/local
# 以上两条等价于下面这条命令
sudo tar -C /usr/local -xzf go1.13.4.linux-amd64.tar.gz

接下来编辑当前用户的环境变量

vi ~/.profile

在最后添加以下内容(键入i表示插入、esc退出,键入:wq保存并退出)

export PATH=$PATH:/usr/local/go/bin 
export GOROOT=/usr/local/go 
export GOPATH=$HOME/go 
export PATH=$PATH:$HOME/go/bin

最后载入环境变量

source ~/.profile

我们把go的目录GOPATH设置在当前用户的文件夹下,所以要创建go文件夹

cd ~ #回到根目录
mkdir go  #创建go文件夹
go version  #查看版本检查

Docker

Docker 是一个开源的应用容器引擎,让开发者可以打包他们的应用以及依赖包到一个可移植的容器中,然后发布到任何流行的Linux机器或Windows 机器上,也可以实现虚拟化,容器是完全使用沙箱机制,相互之间不会有任何接口。
一个完整的Docker有以下几个部分组成:

  • DockerClient客户端
  • Docker Daemon守护进程
  • Docker Image镜像
  • DockerContainer容器
sudo apt  install docker.io # 安装docker
docker version # 键入docker version命令 查看安装结果
————————————————
Client:
 Version:           18.09.7
 API version:       1.39
 Go version:        go1.10.1
 Git commit:        2d0083d
 Built:             Fri Aug 16 14:20:06 2019
 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.39/version: dial unix /var/run/docker.sock: connect: permission denied

显示没有权限,此时还需要做一些工作
修改当前用户权限,把USERNAME的地方换成当前用户名

sudo usermod -aG docker USERNAME

下面添加阿里云的Docker镜像:为了下载快一点

 sudo mkdir -p /etc/docker
 sudo vim /etc/docker/daemon.json

将以下内容写入daemon.json

{
 "registry-mirrors": ["https://obou6wyb.mirror.aliyuncs.com"]
}

输入如下命令行:

sudo mkdir -p /etc/docker
sudo tee /etc/docker/daemon.json <<-'EOF'
{
  "registry-mirrors": ["https://55hri6m9.mirror.aliyuncs.com"]
}
EOF

接下来输入:

sudo systemctl daemon-reload 
sudo systemctl restart docker
docker version

如果还有权限不足提示,输入:

sudo chmod -R 777 /var/run/docker.sock

查看结果为:

ubuntu@VM-0-14-ubuntu:~$ docker version
Client:
 Version:           18.09.7
 API version:       1.39
 Go version:        go1.10.1
 Git commit:        2d0083d
 Built:             Fri Aug 16 14:20:06 2019
 OS/Arch:           linux/amd64
 Experimental:      false

Server:
 Engine:
  Version:          18.09.7
  API version:      1.39 (minimum version 1.12)
  Go version:       go1.10.1
  Git commit:       2d0083d
  Built:            Wed Aug 14 19:41:23 2019
  OS/Arch:          linux/amd64
  Experimental:     false

显示如上则表示安装成功!!

Docker Compose

Docker-compose是支持通过模板脚本批量创建Docker容器的一个组件。在安装Docker-Compose之前,需要安装Python-pip(腾讯云里已经安装好了python2.7,如果没有需要先安装python2.7 不能是python3),运行指令:

sudo apt-get install python-pip
sudo pip install docker-compose 
docker-compose version

查看结果如下:

ubuntu@VM-0-14-ubuntu:~$ docker-compose version
docker-compose version 1.25.4, build unknown
docker-py version: 4.2.0
CPython version: 2.7.17
OpenSSL version: OpenSSL 1.1.1  11 Sep 2018

安装完成!!!

Fabric 源码

fabric源码需要下载的东西有:

  • fabric 源代码
    *是从github下载下来的源代码文件,
    *里面有安装脚本scripts/bootstrap.sh

  • fabric-samples 代码
    *主要有一些first-network,还有test-network等示例

  • fabric-binaries 组件
    *peer orderer cryptogen configtxlator configtxgen idemixgen discover 几个组件
    *oderer.yaml core.yaml configtx.yaml几个配置文件

  • fabric-ca 组件
    *fabric-ca-server fabric-ca-client

现在就分别下载这些东西。

Fabric 源代码

首先建好存放源码的文件夹路径如下:

mkdir –p ~/go/src/github.com/hyperledger
cd ~/go/src/github.com/hyperledger

用git命令下载完整源码

git clone https://github.com/hyperledger/fabric.git

这一步下载会特别慢,因为github的服务器在国外,自己的服务器是国内的网络,再加上买的服务器带宽也很小,所以解决办法就是选择国外的服务器。或者在本地科学上网下载好后,再传到服务器上。

之前已经装好了vsftp,所以通过filezilla来把本地下载的东西传输到服务器上。如果是windows的系统,可以先装一个git,再用相同的命令下载。当然也可以直接从网址https://github.com/hyperledger/fabric下载。下载完成后是一个fabric文件夹,传输到服务器hyperledger文件夹下。

ubuntu@VM-0-14-ubuntu:~go/src/github.com/hyperledger$ cd fabric
ubuntu@VM-0-14-ubuntu:~go/src/github.com/hyperledger/fabric$ git checkout 2.0.0
ubuntu@VM-0-14-ubuntu:~go/src/github.com/hyperledger/fabric$ cd scripts
ubuntu@VM-0-14-ubuntu:~go/src/github.com/hyperledger/fabric/scripts$ cat ./bootstrap.sh

下面是重要的控制语句,可见该脚本就是下载DOCKER、SAMPLES和BINARIES。

DOCKER=true
SAMPLES=true
BINARIES=true
…………
if [ "$SAMPLES" == "true" ]; then
    echo "Clone hyperledger/fabric-samples repo"
    cloneSamplesRepo
fi
if [ "$BINARIES" == "true" ]; then
    echo "Pull Hyperledger Fabric binaries"
    pullBinaries
fi
if [ "$DOCKER" == "true" ]; then
    echo "Pull Hyperledger Fabric docker images"
    pullDockerImages
fi

因为脚本定义的下载方法都特别慢,所以需要通过修改文件来控制三个组件的下载。

fabric-samples

下载命令是

git clone https://github.com/hyperledger/fabric-samples.git

当然我们还是选择通过本地下载再传输到云服务器的方式,下载地址

https://github.com/hyperledger/fabric-samples

解压到指定文件夹:

ubuntu@VM-0-14-ubuntu:~go/src/github.com/hyperledger$  tar -xzf fabric-samples-release-1.4.zip

不过,因为samples这个文件比较小,所以也可以用bootstrap.sh脚本来下载。更改,执行./bootstrap.sh 即可自动下载。

DOCKER=false
SAMPLES=true
BINARIES=false

选择我们需要的版本

cd fabric-samples
git checkout 2.0.0

fabric-binaries 组件

这是最大的几个文件,所以我们也通过本地下载的方式。
下载地址:需要选择和自己系统相匹配的版本

https://github.com/hyperledger/fabric/releases/download/v2.0.0/hyperledger-fabric-darwin-amd64-2.0.0.tar.gz

压缩包传输到服务器指定文件夹hyperledger下,然后解压到文件夹fabric下。

ubuntu@VM-0-14-ubuntu:~go/src/github.com/hyperledger$  sudo tar -C ~go/src/github.com/hyperledger/fabric -xzf  hyperledger-fabric-linux-amd64-2.0.0.tar.gz

我们可以切换到fabric/bin目录下,可以看到新增加的几个组件。

fabric -ca 组件

https://github.com/hyperledger/fabric-ca/releases/download/v1.4.4/hyperledger-fabric-ca-linux-amd64-1.4.4.tar.gz

压缩包传输到服务器指定文件夹hyperledger下,然后解压。
我们知道,fabric-ca只是fabric的一个证书颁发组件机构,所以这个和网络搭建关系不大,也可以换成其他证书颁发组件。所以这里就把ca组件放在了fabric目录外。

ubuntu@VM-0-14-ubuntu:~go/src/github.com/hyperledger$  sudo tar -xzf hyperledger-fabric-ca-linux-amd64-1.4.4.tar.gz

Fabric 镜像

区块链上有很多节点,每个节点可以理解为一台主机,但实验环境中不可能有那么多的主机,且真实生产环境也不可能有那么多机器,因此docker、k8s等就为我们提供了一个多容器的集群。
现在已经安装了docker,但还没有fabric相关的镜像。
这里我们同样采用fabric/scripts/bootstrap.sh脚本来安装,因为我们已经设置了阿里云镜像,下载会快一点。

#先修改文件,已经下载好的东西就不用再下载了。
DOCKER=true
SAMPLES=false
BINARIES=false
# 执行文件
ubuntu@VM-0-14-ubuntu:~go/src/github.com/hyperledger/fabric/scripts$ ./bootstrap.sh

安装完成后,输入命令docker images
出现如下结果,表示安装成功

REPOSITORY                     TAG                 IMAGE ID            CREATED             SIZE
hyperledger/fabric-tools       2.0                 639ab50feac9        3 weeks ago         514MB
hyperledger/fabric-tools       2.0.0               639ab50feac9        3 weeks ago         514MB
hyperledger/fabric-tools       latest              639ab50feac9        3 weeks ago         514MB
hyperledger/fabric-peer        2.0                 5f8a6b13db9f        3 weeks ago         57.2MB
hyperledger/fabric-peer        2.0.0               5f8a6b13db9f        3 weeks ago         57.2MB
hyperledger/fabric-peer        latest              5f8a6b13db9f        3 weeks ago         57.2MB
hyperledger/fabric-orderer     2.0                 161632cc3c59        3 weeks ago         39.7MB
hyperledger/fabric-orderer     2.0.0               161632cc3c59        3 weeks ago         39.7MB
hyperledger/fabric-orderer     latest              161632cc3c59        3 weeks ago         39.7MB
hyperledger/fabric-ccenv       2.0                 6514ca872b68        3 weeks ago         529MB
hyperledger/fabric-ccenv       2.0.0               6514ca872b68        3 weeks ago         529MB
hyperledger/fabric-ccenv       latest              6514ca872b68        3 weeks ago         529MB
hyperledger/fabric-baseos      2.0                 50075bc26291        3 weeks ago         6.9MB
hyperledger/fabric-baseos      2.0.0               50075bc26291        3 weeks ago         6.9MB
hyperledger/fabric-baseos      latest              50075bc26291        3 weeks ago         6.9MB
hyperledger/fabric-javaenv     2.0                 ac433f4353e4        4 weeks ago         507MB
hyperledger/fabric-javaenv     2.0.0               ac433f4353e4        4 weeks ago         507MB
hyperledger/fabric-javaenv     latest              ac433f4353e4        4 weeks ago         507MB
hyperledger/fabric-nodeenv     2.0                 c7fe428889ec        4 weeks ago         274MB
hyperledger/fabric-nodeenv     2.0.0               c7fe428889ec        4 weeks ago         274MB
hyperledger/fabric-nodeenv     latest              c7fe428889ec        4 weeks ago         274MB
hyperledger/fabric-ca          1.4                 62a60c5459ae        3 months ago        150MB
hyperledger/fabric-ca          1.4.4               62a60c5459ae        3 months ago        150MB
hyperledger/fabric-ca          latest              62a60c5459ae        3 months ago        150MB
hyperledger/fabric-zookeeper   0.4                 ede9389347db        3 months ago        276MB
hyperledger/fabric-zookeeper   0.4.18              ede9389347db        3 months ago        276MB
hyperledger/fabric-zookeeper   latest              ede9389347db        3 months ago        276MB
hyperledger/fabric-kafka       0.4                 caaae0474ef2        3 months ago        270MB
hyperledger/fabric-kafka       0.4.18              caaae0474ef2        3 months ago        270MB
hyperledger/fabric-kafka       latest              caaae0474ef2        3 months ago        270MB
hyperledger/fabric-couchdb     0.4                 d369d4eaa0fd        3 months ago        261MB
hyperledger/fabric-couchdb     0.4.18              d369d4eaa0fd        3 months ago        261MB
hyperledger/fabric-couchdb     latest              d369d4eaa0fd        3 months ago        261MB

至此,fabric相关的所有环境就已经搭建好了。下一节中,将启动第一个区块链网络。

你可能感兴趣的:(hyperledger)