本教程是跟着 某硅谷 三年前的视频一点点实现的。但是,跟着教程走,会出现很多视频里面没有出现过的问题,本文着重讲解搭建过程碰到的问题及解决方案!!
一、环境准备
# 先更新一下
$ sudo apt-get update
1、安装docker (见我之前的教程)
http://t.csdn.cn/4Jc7i
2、安装docker-compose
#安装依赖工具
$ sudo apt-get install python-pip -y
#安装编排工具
$ sudo pip install docker-compose
#查看版本
$ sudo docker-compose version
3、安装Golang
# 1. 使用wget工具下载安装包$ wget https://dl.google.com/go/go1.11.linux-amd64.tar.gz# 2. 解压tar包到/usr/local$ sudo tar zxvf go1.11.linux-amd64.tar.gz -C /usr/local# 3. 创建Go目录$ mkdir $HOME/go# 4. 用vi打开~./bashrc,配置环境变量$ vim ~/.bashrc# 5. 增加下面的环境变量,保存退出export GOROOT=/usr/local/goexport GOPATH=$HOME/goexport PATH=$PATH:$GOROOT/bin:$GOPATH/bin# 6. 使环境变量立即生效, 下面两个命令二选一$ source ~/.bashrc$ . ~/.bashrc# 7. 检测go是否安装好$ go version
4. 安装node.js
- 下载二进制源码包
$ wget https://nodejs.org/dist/v8.11.4/node-v8.11.4-linux-x64.tar.xz
- 解压并安装
# 指定压缩包解压到/opt目录下
$ sudo tar xvf node-v8.11.4-linux-x64.tar.xz -C /opt
– 在/opt目录下得到 node-v8.11.4-linux-x64 目录
- 将node.js设置为全局可用
# 打开系统级别的配置文件 /etc/profile
$ sudo vim /etc/profile
# 添加如下配置项, 保存退出
export NODEJS_HOME=/opt/node-v8.11.4-linux-x64
export PATH=$PATH:$NODEJS_HOME/bin
# 重新加载配置文件
$ . /etc/profile
/etc/profile -> 设置环境变量的配置文件
– 对当前系统下所有用户生效
- 测试
$ node -v
5、安装Git
最好先更新apt-get,否则可能会下载版本很旧的git,这是个好习惯,在下载任何包的时候,最好都更新一下工具
$ apt-get update
$ apt-get install git
二、部署 hyper ledger fabric ( # 后面是注释!)
(一)、拉取镜像
$ cd ~ # 这里在家目录下创建放置目录
$ mkdir hyperledger-fabric # 创建放置目录
$ cd hyperledger-fabric #进入目录
# 下载并执行脚本, [ ***需要翻墙, 需要翻墙, 需要翻墙, 需要翻墙, 需要翻墙,*** ]
$ curl -sSL http://bit.ly/2ysbOFE | bash -s 1.2.0 1.2.0 0.4.10温馨提示: 这个过程会让你产生想要砸电脑的冲动, 控制好你的情绪!!!!
# 下载结束后 ,查看下载了什么镜像
$ docker images
下面的截图是我学习的教程里面的截图, 但是在我操作的过程中会总有些镜像拉取不下来!
原因:因为官方的sh文件存在版本号相关的问题,因此镜像的下载会缺少几个重要的文件,这个时候需要我们自己去拉取缺少的镜像。
解决方案 : 对比上面的截图,缺什么就拉取什么。
docker pull hyperledger/fabric-ca:1.2.0docker pull hyperledger/fabric-orderer:1.2.0docker pull hyperledger/fabric-peer:1.2.0docker pull hyperledger/fabric-ccenv:1.2.0docker pull hyperledger/fabric-tools:1.2.0docker pull hyperledger/fabric-baseos:0.4.15docker pull hyperledger/fabric-kafka:0.4.10docker pull hyperledger/fabric-zookeeper:0.4.10docker pull hyperledger/fabric-couchdb:0.4.10
观察发现,拥有不少相同ID却有着不同tag的镜像,我们使用
docker rmi hyperledger/fabric-tools:latest
来删除hyperledger文件夹下镜像名为fabric-tools,版本号为latest的镜像,其他的按此方式删除
这里我没有进行这个操作,因为拉的镜像太多了,懒得删了,事实证明不删除也能用。
(二)、设置全局访问
# 进入到 ~/hyperledger-fabric/fabric-samples/bin 目录
$ cd ~/hyperledger-fabric/fabric-samples/bin
kyp@ubuntu:~/hyperledger-fabric/fabric-samples/bin$ tree
.
├── configtxgen
├── configtxlator
├── cryptogen
├── discover
├── fabric-ca-client
├── get-docker-images.sh
├── idemixgen
├── orderer
└── peer
# 将这些二进制文件拷贝到 /usr/local/bin 目录下
$ sudo cp * /usr/local/bin
# 执行完上述操作之后, fabric的这些可执行程序就可以在全局范围内使用了
三、开始运行 First-Network 环境测试 (前面的步骤有没有成功就看示例程序能不能启动)
- 执行 ./byfn.sh generate 命令生成相应的文件
$ cd ~/hyperledger-fabric/fabric-samples/first-network/#进入到first-network
$ ./byfn.sh generate
这是用来提前生成相关配置文件的(为接下来自动启动区块链网络提供准备)
结果 如图
2.执行 ./byfn.sh up 启动网络
# byfn == build your first network
$ ./byfn.sh up
这里,在我电脑上执行,就出问题了 !!! 气死人
按照教程应该出现以下截图:
但是我执行的结果如下:大概的意思就是不能建立新的连接,不能和新的节点通信。
error getting endorser client for channel: endorser client failed to connect to peer1.org1.example.com:7051: failed to create new connection: context deadline exceededpeer1.org1 failed to join the channel, Retry after 3 seconds
解决方案 :
首先我们把网络停止:
$ ./byfn.sh down
我们在输入:
$ sudovim/etc/resolv.conf
2. 再次执行 ./byfn.sh up 启动网络 (假如之前就成功了就不要做这一步了)
$ cd ~/hyperledger-fabric/fabric-samples/first-network/ # 进入到first-network下才能执行
$ ./byfn.sh up
出现以上两个截图就是启动成功!!!恭喜
3、通过docker ps命令可以查看到节点的启动情况。
$ docker ps
4、如果我们要停止网络,可以执行./byfn.sh down 命令来停止
$ ./byfn.sh down
下面给出一张fabric主要镜像的依赖图
以上就是 hyperledger fabric 的环境搭建 与 测试。