Hyperledger Fabric环境搭建手册
软件及版本要求
软件要求:
- docker
- docker-compose
- git
- golang
版本要求:
- docker版本: 17.06.2-ce以上
- docker-compose版本:1.14.0以上
- golang版本:1.10.x以上
软件安装
Golang安装
- 下载解压golang压缩包
wget https://storage.googleapis.com/golang/go1.9.linux-amd64.tar.gz
sudo tar -C /usr/local -xzf go1.9.linux-amd64.tar.gz
- 配置环境变量
vi /etc/profile
添加环境变量配置
#GOBIN
export GOBIN=/usr/local/go/bin //该路径为go安装路径
export PATH=$PATH:$GOBIN
- 创建GOPATH
#GOPATH
export GOPATH=/zn/go //该路径为工作目录
- 保存修改的环境变量配置,并载入。
保存退出vim后,载入环境变量设置
source /etc/profile
- 查看go版本是否符合要求
go version
- 查看go环境是否正确
go env
Docker安装
- 我们可以使用阿里提供的镜像,安装也非常方便。通过以下命令来安装Docker
curl -sSL http://acs-public-mirror.oss-cn-hangzhou.aliyuncs.com/docker-engine/internet | sh -
- 安装完成后需要修改当前用户(我使用的用户叫fabric)权限:
sudo usermod -aG docker fabric
- 注销并重新登录,然后添加阿里云的Docker Hub镜像:
sudo mkdir -p /etc/docker
sudo tee /etc/docker/daemon.json <<-'EOF'
{
"registry-mirrors": ["https://obou6wyb.mirror.aliyuncs.com"]
}
EOF
sudo systemctl daemon-reload
sudo systemctl restart docker
- 查看版本
docker -v
不同的版本添加方法是不一样的,官方的文档如下:
https://cr.console.aliyun.com/#/accelerator
当然觉得阿里云镜像不好用,喜欢用DaoClound的也可以用DaoClound的镜像。DaoCloud的镜像设置文档为:https://www.daocloud.io/mirror#accelerator-doc
Docker-Compose的安装
- Docker-compose是支持通过模板脚本批量创建Docker容器的一个组件。在安装Docker-Compose之前,需要安装Python-pip,运行脚本:
sudo apt-get install python-pip
- 然后是安装docker-compose,我们从官方网站(https://github.com/docker/compose/releases)下载也可以从国内的进行DaoClound下载,为了速度快接下来从DaoClound安装Docker-compose,运行脚本:
curl -L https://get.daocloud.io/docker/compose/releases/download/1.12.0/docker-compose-`uname -s`-`uname -m` > ~/docker-compose
sudo mv ~/docker-compose /usr/local/bin/docker-compose
chmod +x /usr/local/bin/docker-compose
- 查看版本
docker-compose -v
git安装
- 查看系统是否已经安装git
git --version
- 安装
yum install -y git
搭建Fabric环境
- 创建工作空间目录,在GOPATH目录下创建必要fabric目录
cd /zn/go
mkdir -p src/github.com/hyperledger //必须创建该目录,否则后面会报错找不到目录和文件
- 下载hyperledger fabric源码。目前clone下来的版本为v1.1.0
cd src/github.com/hyperledger
git clone https://github.com/hyperledger/fabric.git
- 下载hyperledger fabric二进制文件,和docker镜像
cd scripts
./bootstrap.sh
(注:下载二进制脚本文件的方式有多种,这只是其中一种方式。
另外的方式有:
1、通过fabric/examples/e2e_cli中的脚本download-dockerimages.sh,指定系统和版本号,进行下载。例如:source download-dockerimages.sh -c x86_64-1.1.0 -f x86_64-1.1.0
2、可以通过wget下载离线文件。路径https://nexus.hyperledger.org/content/repositories/releases/org/hyperledger/fabric/hyperledger-fabric/linux-amd64-1.1.0/
上述二进制文件属于国外源,下载非常缓慢,可设置VPN代理加快下载速度)
- 将镜像文件目录路径加入环境变量配置。本例中将二进制文件,放到了fabric源码外的目录/zn/go/src/github.com/hyperledger/bin
vi /etc/prifile
增加一行
export PATH=$PATH:/zn/go/src/github.com/hyperledger/bin
- 保存修改的环境变量配置,并载入。
保存退出vim后,载入环境变量设置
source /etc/profile
- 启动fabric示例网络
cd /zn/go/src/github.com/hyperledger/fabric/examples/e2e_cli
./network_setup.sh up
其他常用命令
查看所有的镜像列表
docker images
杀死所有正在运行的容器
docker kill $(docker ps -a -q)
删除所有已经停止的容器
docker rm $(docker ps -a -q)
删除所有镜像
docker rmi $(docker images -q)
强制删除所有镜像
docker rmi -f $(docker images -q)
停止所有docker镜像并删除docker容器
docker stop $(docker ps -q) & docker rm $(docker ps -aq)
清除docker网络缓存
docker network prune
手动拉取docker镜像
docker pull hyperledger/fabric-tools:x86_64-1.0.0
docker镜像打tag(0403fd1c72c7为要打tag打image id)
docker tag 0403fd1c72c7 docker.io/hyperledger/fabric-tools:latest
安装过程中遇到的问题总结
1. /go/src/github.com/hyperledger/fabric/examples/e2e_cli/../../release/linux-amd64/bin/cryptogen: No such file or directory
解决方案:检查src/github.com/hyperledger 目录是否正确创建,检查二进制脚本文件路径是否添加到环境变量中。
2. "transport: Error while dialing dial tcp: lookup peer1.org1.example.com on 127.0.0.11:53: no such host"
解决方案:该问题为阿里巴巴云主机问题,更新Hyperledger Fabric的docker compose yaml模板,为所有Hyperledger Fabric的节点(如orderer, peer, ca, cli等)添加环境变量- GODEBUG=netdns=go以强制使用pure Go resolver。需要改动的文件有:/zn/go/src/github.com/hyperledger/fabric/examples/e2e_cli目录下的docker-compose-cli.yaml、base/docker-compose-base.yaml、base/peer-base.yaml
3. network e2ecli_default not found
解决方案:e2e_cli目录是固定的,启动后会创建一个docker network以此为名字,这里是e2e_cli。如果修改该目录,要修改/zn/go/src/github.com/hyperledger/fabric/examples/e2e_cli/base目录下的peer-base.yaml
将网络名改成如下名称即可
- CORE_VM_DOCKER_HOSTCONFIG_NETWORKMODE=e2e_cli_default
4. 注意事项,确保go环境变量配置正确,gopath配置正确,fabric二进制脚本文件加入到环境变量配置中。如果是阿里云主机,需要修改配置文件,为所有Hyperledger Fabric的节点(如orderer, peer, ca, cli等)加入- GODEBUG=netdns=go配置。镜像版本需与代码版本一致。
有疑问加站长微信联系(非本文作者)