Hyperledger Fabric实战单机部署

前言

关于Hyperledger/fabric1.0环境部署,我个人踩了很多坑,从官方样本示例,到solo多机本地部署,到kafka多机部署的实际生产环境,途中出现过各种层出不穷的bug,即使你跟网上教程一样,照样bug一堆。鉴于很多朋友没有基础,我个人也要写一个实验记录,所以也发一个简单的入门博客。
本教程纯直白式教学,也要一些建议,希望对大家有所帮助。(Markdown编辑器第一次用,排版不好多多担待)

0.基本的说明

教程基于linux发行版centos7.x,CentOS Linux release 7.6.1810 (Core)
执行命令 cat /etc/centos-release
内核版本 3.10.0-957.21.3.el7.x86_64 (3.10.0对应主版本)

执行命令uname -r对应在linux的执行输入
根据杨毅编写的教材《HyperLedger Fabric开发实战:快速掌握区块链技术》建议内核版本3.10以上
ps:个人电脑都是windows,可以下一个虚拟机运行linux,推荐书籍《鸟叔的私房菜》,慕课网linux国家精品课,linux快速运用课程

1.go语言安装

1.毋庸置疑下载go语言安装包

大多数都是windows下运行虚拟机,或者远程连接服务器(建议用Xshell,比较方便在主机和虚拟机之间传输文件),所以直接windows下载这个go安装包

下载地址go语言下载地址
go下载界面因为是在虚拟机使用,选择linux安装包下载到windows界面下。
上传到linux上,我这里用的xshell,直接在虚拟机中输入“rz”命令上传该文件到
虚拟机中。

输入rz的界面
输入命令行ls可以查看到文件已经存在。
输入命令行tar -C /usr/local -zxf go1.12.7.linux-amd64.tar.gz
解压该文件,会在/usr/local下出现go文件

2.编辑环境变量

命令行vim /etc/profile
在最末端插入

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

ps vim是linux的文本编辑器,进入文本编辑界面后,
1.按esc,上下键到最后一行
2.复制上述命令
3.按“i”进入可编辑器模式,粘贴
4.按esc,输入:wq保存退出vim编辑界面。
5.在linux终端上输入命令行source /etc/profile让环境变量生效
6.查询go是否安装,go version弹出go version go1.12.7 linux/amd64

2.docker安装

无脑复制黏贴输入即可,在任何目录下都可以输入

1.命令行yum install -y yum-utils device-mapper-persistent-data lvm2
2.命令行yum-config-manager --add-repo https://download.docker.com/linux/centos/docker-ce.repo
3.命令行yum install docker-ce
4.命令行docker version输出,弹出client和server安装成功。
5.加入开机启动`

systemctl start docker
systemctl enable docker

6.把用户 加入docker组,在非root用户下运行docker不需要sudo命令
sudo usrmod -aG docker user (user为你的linux的用户名,我的是user,此处用user,user@localhost ~)
7.重启docker服务 sudo service docker restart
8.重启group newgrp - docker(第6嫌麻烦可以不要)

3.配置docker-compose(重点,好东西)

1.输入命令行 sudo curl -L "https://github.com/docker/compose/releases/download/1.24.1/docker-compose-$(uname -s)-$(uname -m)" -o /usr/local/bin/docker-compose(没安装curl,输入命令行yum install -y curl安装)
2.输入命令行cd /usr/local/bin/切换到安装包的界面
会有一个docker-compose的文件,可以输入ls查看。
3.命令行sudo chmod +x docker-compose给该文件增加权限
4.命令行 docker-compose version 查看是否有输出对应版本。

扫描二维码关注公众号,回复: 12024641 查看本文章
docker-compose version 1.24.1, build 4667896b

(不建议pip安装,容易报错,docker-compose是一个可以利用.yaml模板文件创建多个容器,十分方便,不过跑官方脚本体会不到。)

4.下载Fabric源码

1.命令行mkdir -p ~/go/src/github.com/hyperledger && cd ~/go/src/github.com/hyperledger && git clone https://github.com/hyperledger/fabric.git复制黏贴,等待hyperledger出现fabric目录(小技巧,若下载不了,可以尝试把链接的“https”更换成“git”,其他不变)
2.cd fabric切换到fabric目录下
3.切换版本git checkout v1.0.0,fabric1.0比较适合入门,还有很多官方的样本
4.重点来了,切换到官方的脚本下面
cd ~/go/src/github.com/hyperledger/fabric/examples/e2e_cli/
5.source download-dockerimages.sh -c x86_64-1.0.0 -f x86_64-1.0.0
如果权限不够,输入sudo -E bash download-dockerimages.sh -c x86_64-1.0.0 -f x86_64-1.0.0 该命令下载所需镜像。
6.cd base && vim peer-base.yaml
修改成下列的网络名字,跟目录一致。要不然会报错。

- CORE_VM_DOCKER_HOSTCONFIG_NETWORKMODE=e2e_cli_default

切换到cd ~/go/src/github.com/hyperledger/fabric/examples/e2e_cli/

7.命令行./network_setup.sh up运行fabric1.0自带的脚本。跑成功,为显示good字样。
ps:后面通过docker 进入cli客户端,查账,转账,可操作可不操作。
自己solo单机部署的时候,不用官方脚本,自己创造组织文件、通道、安装链码、实例化什么的再操作。
8.若报错缺少文件,cd ~/go/src/github.com/hyperledger/fabric/release/linux-amd64/查看是否有bin的二进制文件,没有内容的话要下载fabric1.0版本对应的bin文件,里面有工具cryptogen、configtxgen,用来生成组织文件、通道文件。一般不会出现该issue,脚本自动生成。若有兴趣继续fabric之路,可以百度搜索aberic、深蓝、探路人三作者的文章。(aberic是杨毅作者的博客名字,探路人的博客对aberic做了一些补充,比如提前开放port什么的。) 因为利用官方模板跑一遍,只是一个初步的认知。

大概涉及的知识

1.docker 容器技术,掌握docker一些简单的命令,docker学习
2.熟悉docker-compose命令,看懂.yaml文件,看懂所有的官方示例.yaml文件,基本有个清楚的认知了。
3.linux 的操作命令
4.go 语言编程
5.git 的一些认知
6.go web 编程
7.fabric-go-sdk
8.Couchdb数据库的认识和使用
9.多机部署会用到集群,远程连接服务器,了解一些集群的概念。
10.区块链的介绍,fabric实战,fabric原理
这也是为什么建议用xshell,不建议putty或者cmd终端ssh连接,因为窗口实在太多,xshell这方面做的比较好。
ps:10分钟部署的东西,写出来花了几个小时,本来还想写1.1的多机部署和kafka部署。十分建议阅读Aberic的《HyperLedger Fabric开发实战:快速掌握区块链技术》,比较注重实操。再结合探路人的博客,环境部署基本不存在问题。2019.9.10

猜你喜欢

转载自blog.csdn.net/hungrylion/article/details/100715707