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 镜像刚安装完成开始进行搭建,所需环境如下:
- golang
- docker / docker-compose
- git / gcc
- fabric v1.4.4 / fabric-samples v1.4.4
【下载安装】先使用 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
【下载安装】
当前路径:/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!
......
【下载安装】偶尔会出现下载失败的情况,重试即可
[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
【下载安装】
[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)
【创建环境】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
【构建】启动新的区块链网络前需要用到下面的执行文件,来生成证书、创世块和 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> ...]
......
【构建】构建 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
在 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
本文到此结束啦!!第一次写博客文章哈哈,若有什么书写方面的建议希望大家能提醒下我~~感谢阅读!!