搭建Hyperledger Fabric环境 的详细步骤,超级详细
Posted FAFU_kyp
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了搭建Hyperledger Fabric环境 的详细步骤,超级详细相关的知识,希望对你有一定的参考价值。
本教程是跟着 某硅谷 三年前的视频一点点实现的。但是,跟着教程走,会出现很多视频里面没有出现过的问题,本文着重讲解搭建过程碰到的问题及解决方案!!
一、环境准备
# 先更新一下
$ sudo apt-get update
1、 安装docker (见我之前的教程)
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/go
export GOPATH=$HOME/go
export 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.0
docker pull hyperledger/fabric-orderer:1.2.0
docker pull hyperledger/fabric-peer:1.2.0
docker pull hyperledger/fabric-ccenv:1.2.0
docker pull hyperledger/fabric-tools:1.2.0
docker pull hyperledger/fabric-baseos:0.4.15
docker pull hyperledger/fabric-kafka:0.4.10
docker pull hyperledger/fabric-zookeeper:0.4.10
docker 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 exceeded
peer1.org1 failed to join the channel, Retry after 3 seconds
解决方案 :
首先我们把网络停止:
$ ./byfn.sh down
我们在输入:
$ sudo vim /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 的环境搭建 与 测试。
有任何问题可以留言私聊,欢迎点赞、收藏、转载!
Hyperledger-fabric 环境搭建
Hyperledger-fabric 环境搭建
按着官方文档的步骤先配置前置环境
https://hyperledger-fabric.readthedocs.io/en/latest/prereqs.html
Hyperledger fbric 1.4.5
Ubuntu 18.04
0. 配置下虚拟机网络
因为众所周知的原因,国内网络不是很通畅,使用魔法后设置允许局域网使用。
在wired settings中设置Network Proxy,全部指向本机的魔法端口
1. 安装git
Install Git
Download the latest version of git if it is not already installed, or if you have problems running the curl commands.
先装个Git
sudo apt install git
# 安装完后查询git版本
nykuvl@ubuntu:~$ git version
git version 2.17.1
2. 安装curl
Install cURL
Download the latest version of the cURL tool if it is not already installed or if you get errors running the curl commands from the documentation.
安装curl工具
sudo apt install curl
# 安装完后查询curl版本
nykuvl@ubuntu:~$ curl --version
curl 7.58.0 (x86_64-pc-linux-gnu) libcurl/7.58.0 OpenSSL/1.1.1 zlib/1.2.11 libidn2/2.0.4 libpsl/0.19.1 (+libidn2/2.0.4) nghttp2/1.30.0 librtmp/2.3
Release-Date: 2018-01-24
Protocols: dict file ftp ftps gopher http https imap imaps ldap ldaps pop3 pop3s rtmp rtsp smb smbs smtp smtps telnet tftp
Features: AsynchDNS IDN IPv6 Largefile GSS-API Kerberos SPNEGO NTLM NTLM_WB SSL libz TLS-SRP HTTP2 UnixSockets HTTPS-proxy PSL
3. 安装wget
Install wget
If you will be downloading Fabric binaries based on the Install Samples, Binaries, and Docker Images documentation, you will need
wget
installed.
sudo apt install wget
# 安装完后查询wget版本
nykuvl@ubuntu:~$ wget --version
GNU Wget 1.19.4 built on linux-gnu.
4. 安装Docker和Docker-compose
Docker and Docker Compose
You will need the following installed on the platform on which you will be operating, or developing on (or for), Hyperledger Fabric:
- MacOSX, *nix, or Windows 10: Docker Docker version 17.06.2-ce or greater is required.
- Older versions of Windows: Docker Toolbox - again, Docker version Docker 17.06.2-ce or greater is required.
操作来源:https://zhuanlan.zhihu.com/p/106186391
# 安装工具让apt可以支持HTTPS方式获取包
sudo apt install apt-transport-https ca-certificates curl software-properties-common
# 将官方Docker库的GPG公钥添加到系统中
curl -fsSL https://download.docker.com/linux/ubuntu/gpg | sudo apt-key add -
# 将Docker库添加到apt里
sudo add-apt-repository "deb [arch=amd64] https://download.docker.com/linux/ubuntu bionic stable"
# 再次更新下apt库列表
sudo apt update
# 开始安装docker-ce
sudo apt install docker-ce
# 安装完成查询版本号
docker --version
nykuvl@ubuntu:~$ docker --version
Docker version 19.03.6, build 369ce74a3c
# 开始安装docker-compose
sudo apt install docker-compose
# 安装完成后查询docker-compose版本号
docker-compose --version
nykuvl@ubuntu:~$ docker-compose --version
docker-compose version 1.17.1, build unknown
安装完docker之后还需要将使用的用户加入docker的用户组中,不然使用docker会报permission denied错误
nykuvl@ubuntu:~$ docker images
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.40/images/json: dial unix /var/run/docker.sock: connect: permission denied
执行以下语句
sudo usermod -a -G docker <username>
5. 安装Golang
进入 https://golang.org/dl/ 官网下载最新版go安装包
安装后进行解压操作
sudo tar -C /usr/local -xzf go1.13.8.linux-amd64.tar.gzip
添加路径
Add /usr/local/go/bin
to the PATH
environment variable. You can do this by adding this line to your /etc/profile
(for a system-wide installation) or $HOME/.profile
:
export PATH=$PATH:/usr/local/go/bin
# 使用source命令让配置生效
source ~/.profile
# 查看go的版本
go version
nykuvl@ubuntu:~$ go version
go version go1.13.8 linux/amd64
# 设置GOROOT和GOPATH环境变量
vim ~/.bashrc
# 在最后一行加入
export GOROOT=/usr/local/go #GOROOT是系统上安装Go软件包的位置。
export GOPATH=/home/hadoop/GOPATH #GOPATH是工作目录的位置。
export PATH=$GOPATH/bin:$GOROOT/bin:$PATH
# 使用source命令更新配置
source ~/.bashrc
# 验证环境变量配置
nykuvl@ubuntu:~$ echo $GOROOT
/usr/local/go
nykuvl@ubuntu:~$ echo $GOPATH
/home/nykuvl/go
6. 安装Node.js和NPM
Node.js Runtime and NPM
If you will be developing applications for Hyperledger Fabric leveraging the Hyperledger Fabric SDK for Node.js, version 8 is supported from 8.9.4 and higher. Node.js version 10 is supported from 10.15.3 and higher.
sudo apt isntall node.js
sudo apt install npm
# 更新node到长服务版
sudo npm install -g n
sudo n lts
# 更新npm
sudo npm i -g npm
# 查看版本
nykuvl@ubuntu:~/go$ npm -v
6.13.4
nykuvl@ubuntu:~/go$ node -v
v12.16.1
7. 安装python
# 安装python2
sudo apt install python
# 安装python3
sudo apt install python3
# 查看版本
nykuvl@ubuntu:~/go$ python --version
Python 2.7.17
nykuvl@ubuntu:~/go$ python3 --version
Python 3.6.9
8. 安装Hyperledger fabric
curl -sSL https://bit.ly/2ysbOFE | bash -s
一键安装fabric最新环境,但是网络条件不允许安装过程及其满并且出现错误没法及时处理
先把fabric的GitHub项目拉下来
# 创建$GOPATH目录下的src/github.com/hyperledger目录
mkdir -p /home/nykuvl/go/src/github.com/hyperledger
# 进入目录
cd $GOPATH/src/github.com/hyperledger
# 拉取项目
git clone https://github.com/hyperledger/fabric.git
# 切换版本到1.4
git branch -a
git checkout release-1.4
# 安装相关依赖软件 先进入GOPATH路径再进行以下操作
go get github.com/golang/protobuf/protoc-gen-go
mkdir -p $GOPATH/src/github.com/hyperledger/fabric/build/docker/gotools/bin
cp $GOPATH/bin/protoc-gen-go $GOPATH/src/github.com/hyperledger/fabric/build/docker/gotools/bin
# 编译Fabric模块,进入Fabric源码所在文件夹
cd $GOPATH/src/github.com/hyperledger/fabric
make release
# 将编译后的二进制文件复制到系统文件夹中
sudo cp $GOPATH/src/github.com/hyperledger/fabric/release/linux-amd64/bin/* /usr/local/bin
# 确认版本号
nykuvl@ubuntu:~/go/src/github.com/hyperledger/fabric$ configtxgen -version
configtxgen:
Version: 1.4.5
Commit SHA: 11ff99170
Go version: go1.13.8
OS/Arch: linux/amd64
nykuvl@ubuntu:~/go/src/github.com/hyperledger/fabric$ configtxlator version
configtxlator:
Version: 1.4.5
Commit SHA: 11ff99170
Go version: go1.13.8
OS/Arch: linux/amd64
nykuvl@ubuntu:~/go/src/github.com/hyperledger/fabric$ peer version
peer:
Version: 1.4.5
Commit SHA: 11ff99170
Go version: go1.13.8
OS/Arch: linux/amd64
Chaincode:
Base Image Version: 0.4.18
Base Docker Namespace: hyperledger
Base Docker Label: org.hyperledger.fabric
Docker Namespace: hyperledger
nykuvl@ubuntu:~/go/src/github.com/hyperledger/fabric$ orderer version
orderer:
Version: 1.4.5
Commit SHA: 11ff99170
Go version: go1.13.8
OS/Arch: linux/amd64
nykuvl@ubuntu:~/go/src/github.com/hyperledger/fabric$ cryptogen version
cryptogen:
Version: 1.4.5
Commit SHA: 11ff99170
Go version: go1.13.8
OS/Arch: linux/amd64
接下来处理docker镜像
# 拉取docker镜像,我使用时问题很多,就不使用这个脚本了,手动拉取镜像
// make docker
docker pull hyperledger/fabric-baseos:0.4.18 # 基础镜像文件,其他镜像文件在该镜像文件的基础上生成
docker pull hyperledger/fabric-baseimage:0.4.18 # 基础镜像文件包含了jdk、golang、nodejs等,可以用来生成chaincode
docker pull hyperledger/fabric-peer:1.4 # peer模块镜像文件
docker pull hyperledger/fabric-ca:1.4 # ca模块镜像文件
docker pull hyperledger/fabric-tools:1.4 # 相关工具镜像文件,包含了cryptogen、configtxgen、configtxlator等工具
docker pull hyperledger/fabric-couchdb:0.4.18 # couchdb数据库镜像文件
docker pull hyperledger/fabric-kafka:0.4.18 # kafka库镜像文件
docker pull hyperledger/fabric-zookeeper:0.4.18 # zookeeper库镜像文件
docker pull hyperledger/fabric-orderer:1.4 # orderer节点库镜像文件
docker pull hyperledger/fabric-ccenv:1.4 # Go语言chaincode运行环境镜像文件
以上是关于搭建Hyperledger Fabric环境 的详细步骤,超级详细的主要内容,如果未能解决你的问题,请参考以下文章