联盟链 Hyperledger Fabric v1.4.4 从零搭建起第一个区块链网络

fabric 1.4官方中文文档:https://hyperledger-fabric.readthedocs.io/zh_CN/release-1.4/
fabric 官方 github 地址:https://github.com/hyperledger/fabric
fabric-samples 官方 github 地址:https://github.com/hyperledger/fabric-samples
————
由于目前网上大部分前辈的教程,随着 fabric 官方的迭代,搭建过程逐渐出现了一些问题,所以这里就以我现能正常运行的 1.4.4 版本写一篇详细的教程,希望能帮助到大家~

一、环境搭建

本文从 CentOS 7 镜像刚安装完成开始进行搭建,所需环境如下:

  1. golang
  2. docker / docker-compose
  3. git / gcc
  4. fabric v1.4.4 / fabric-samples v1.4.4

1. 安装 golang

【下载安装】先使用 wget 下载 golang 的包到本地,解压后得到go的文件夹

当前路径:/usr/local/share
[root@localhost share]# wget https://dl.google.com/go/go1.12.3.linux-amd64.tar.gz
[root@localhost share]# tar -C /usr/local/ -xzf go1.12.3.linux-amd64.tar.gz

【创建环境】在 root 路径下,创建本地 golang 的工作目录

[root@localhost share]# cd /root	(先使用cd命令,进入到root路径)
当前路径:/root
[root@localhost ~]# mkdir go
[root@localhost ~]# cd go/	
[root@localhost ~]# cd go
[root@localhost go]# mkdir bin
[root@localhost go]# mkdir src
[root@localhost go]# mkdir pkg

> 至此,本文件夹的结构是如下所示的
├── go
│   ├── bin
│   ├── pkg
│   └── src

【配置】接下来需要更改环境变量,来让上面的设置生效

[root@localhost go]#  vim /etc/profile

> 进入编辑后,在文件里面的最后面增加如下内容:
export GOROOT=/usr/local/go
export GOPATH=/root/go
export PATH=$PATH:$GOROOT/bin:$GOPATH/bin

> 更改完成后,还需要用 source 命令来让其生效
[root@localhost go]#  source /etc/profile

【检测】在随意目录下检测go版本,若能正常显示版本信息则表示golang环境配置完成,如下所示

[root@localhost ~]# go version
go version go1.12.3 linux/amd64

2. 安装 docker

【下载安装】

当前路径:/root
[root@localhost ~]# yum install -y yum-utils device-mapper-persistent-data lvm2
[root@localhost ~]# yum-config-manager --add-repo https://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo
[root@localhost ~]# yum-config-manager --enable docker-ce-edge
[root@localhost ~]# yum-config-manager --enable docker-ce-test
[root@localhost ~]# yum install docker-ce   (该过程需要手动按两次y确认)

【配置】把当前使用的用户加入到 docker 组内,启动 docker 后重启机器

[root@localhost ~]# usermod -aG docker root
[root@localhost ~]# systemctl enable docker		(启动docker)
[root@localhost ~]# reboot      (重启命令)

【检测】拉取 hello-world 进行测试,若能正常显示 Hello from Docker,则代表安装成功

[root@localhost ~]# docker run hello-world
......
Hello from Docker!
......

3. 安装 docker-compose

【下载安装】偶尔会出现下载失败的情况,重试即可

[root@localhost ~]# curl -L https://github.com/docker/compose/releases/download/1.23.2/docker-compose-`uname -s`-`uname -m` -o /usr/local/bin/docker-compose

【配置】给 docker-compose 赋予执行功能

[root@localhost ~]# chmod +x /usr/local/bin/docker-compose

【检测】在任意目录下检测版本,若能正常如下显示,则表示安装成功

[root@localhost ~]# docker-compose -v
docker-compose version 1.23.2, build 1110ad01

4. 安装 gcc、git

【下载安装】

[root@localhost ~]# yum install -y git
[root@localhost ~]# yum install -y gcc

【检测】若能正常如下显示,则表明安装成功

[root@localhost ~]# git --version
git version 1.8.3.1
[root@localhost ~]# gcc -v
......
gcc 版本 4.8.5 20150623 (Red Hat 4.8.5-39) (GCC)

5. 获取 fabric 和 fabric-samples

【创建环境】fabric 和 samples 包需要在 go/src/github.com/hyperledger 的路径下

[root@localhost ~]# mkdir -p go/src/github.com/hyperledger/
[root@localhost ~]# cd go/src/github.com/hyperledger/

【下载安装】我当时 clone 究极慢,所以是一大早起来进行 clone 的,那个时间超级快

> 当前路径:/root/go/src/github.com/hyperledger

[root@localhost hyperledger]# git clone -b v1.4.4 https://github.com/hyperledger/fabric
[root@localhost hyperledger]# git clone -b v1.4.4 https://github.com/hyperledger/fabric-samples

> 此时当前 hyperledger 下会有两个文件夹:fabric 和 fabric-samples,目录结构如下所示
├── go
│   ├── bin
│   ├── pkg
│   └── src
│       └── github.com
│           └── hyperledger
│               ├── fabric
│               └── fabric-samples

【版本切换】若不放心版本,可分别进入这两个文件夹内再手动切换下版本

[root@localhost fabric]# git checkout -b v1.4.4
[root@localhost fabric-samples]# git checkout -b v1.4.4

【检测】主要还是对检查版本是否为 1.4.4 的,若能如下显示则表示正常

[root@localhost fabric]# git branch
* v1.4.4
[root@localhost fabric-samples]# git branch
* v1.4.4

二、启动区块链网络

1. 构建必要执行文件

【构建】启动新的区块链网络前需要用到下面的执行文件,来生成证书、创世块和 channel 相关的文件

> 当前目录:/root/go/src/github.com/hyperledger/fabric 

[root@localhost fabric]# make cryptogen
[root@localhost fabric]# make configtxgen
[root@localhost fabric]# make configtxlator

> 构造完成后,这3个文件会生成在当前目录的 .build/bin 路径下

【部署】将这 3 个文件复制到 /usr/bin 下,这样一来无论在哪都能使用这个命令文件了

[root@localhost fabric]# cd .build/bin/

> 当前路径:/root/go/src/github.com/hyperledger/fabric/.build/bin
[root@localhost bin]# cp * /usr/bin/

【检测】在任意路径下使用 help 命令,若能如下提示 usage 信息,则证明部署完成

[root@localhost bin]# cryptogen help
usage: cryptogen [<flags>] <command> [<args> ...]
......

2. 拉取 fabric 相关镜像

【构建】构建 peer 节点和 orderer 的必要文件

> 当前路径:/root/go/src/github.com/hyperledger/fabric
[root@localhost fabric]# make peer
[root@localhost fabric]# make orderer

【拉取镜像】由于本地还不存在此镜像,所以这些命令就会自动去 docker 拉取下来

[root@localhost fabric]# make peer-docker
[root@localhost fabric]# make orderer-docker
[root@localhost fabric]# make tools-docker

【检测】查看当前 docker 内的所有已安装镜像,若有 tools、peer、orderer 相关的 fabric 镜像,则表示安装成功

[root@localhost fabric]# docker images
REPOSITORY                     TAG                            IMAGE ID            CREATED              SIZE
hyperledger/fabric-tools       amd64-1.4.4-snapshot-7917a40   cc6c7644fb67        24 seconds ago       1.49GB
hyperledger/fabric-tools       amd64-latest                   cc6c7644fb67        24 seconds ago       1.49GB
hyperledger/fabric-tools       latest                         cc6c7644fb67        24 seconds ago       1.49GB
<none>                         <none>                         3e379af380c7        About a minute ago   1.74GB
hyperledger/fabric-orderer     amd64-1.4.4-snapshot-7917a40   fcb320fda11c        3 minutes ago        120MB
hyperledger/fabric-orderer     amd64-latest                   fcb320fda11c        3 minutes ago        120MB
hyperledger/fabric-orderer     latest                         fcb320fda11c        3 minutes ago        120MB
hyperledger/fabric-peer        amd64-1.4.4-snapshot-7917a40   aa2dc906c9a9        4 minutes ago        128MB
hyperledger/fabric-peer        amd64-latest                   aa2dc906c9a9        4 minutes ago        128MB
hyperledger/fabric-peer        latest                         aa2dc906c9a9        4 minutes ago        128MB
hello-world                    latest                         bf756fb1ae65        4 months ago         13.3kB
hyperledger/fabric-baseimage   amd64-0.4.18                   9e353eca480f        6 months ago         1.3GB
hyperledger/fabric-baseos      amd64-0.4.18                   c256a6aad46f        6 months ago         80.8MB

3. 启动示例网络

在 fabric-samples 下,有一个 first-network 文件夹,最终舞台就在这里

【生成】使用 generate 命令,生成之前所说的必要文件。( byfn 即 build your first network,“创建你的第一个区块链网络”)

> 当前路径:/root/go/src/github.com/hyperledger/fabric-samples/first-network
[root@localhost first-network]# ./byfn.sh generate

【启动】使用 up 命令,正式启动区块链网络。

[root@localhost first-network]# ./byfn.sh up

【检测】由于只是示例网络,在跑起来后它会自动执行构造、安装链码、实例化链码、转账、查询等过程后,然后就完成了。
若能如下正常显示,则表示你的第一个区块链网络已经正常运行,往后的区块链开发,也最好保证在该示例网络能够正常运行的情况下去进行。

......
===================== Query successful on peer1.org2 on channel 'mychannel' ===================== 

========= All GOOD, BYFN execution completed =========== 


 _____   _   _   ____   
| ____| | \ | | |  _ \  
|  _|   |  \| | | | | | 
| |___  | |\  | | |_| | 
|_____| |_| \_| |____/  

[root@localhost first-network]# 

【结束】不需要再用到这个示例网络的时候,一定记得要关闭它,要不然可能会对你接下来的开发造成影响的哈~~

[root@localhost first-network]# ./byfn.sh down

本文到此结束啦!!第一次写博客文章哈哈,若有什么书写方面的建议希望大家能提醒下我~~感谢阅读!!

猜你喜欢

转载自blog.csdn.net/Phather/article/details/106209475