1.虚拟机上创建Ubuntu系统
2.查看apt source是国内的:执行sudo vi /etc/apt/sources.list 查看apt列表http://cn则是国内(如果是国外,输入 :%s/us./cn./g )然后输入 :wq保存退出
3.安装Docker:使用阿里云安装curl -sSL http://acs-public-mirror.oss-cn-hangzhou.aliyuncs.com/docker-engine/internet | sh - ;使用DaoCloud安装 curl -sSL https://get.daocloud.io/docker | sh 两种方式都不可以的情况下;执行sudo apt-get update 通过apt-get安装, 输入apt-get -y install docker.io(如果权限不够则需要加上sudo)
4.修改当前用户的权限 sudo usermod -aG docker YOURNAME
5.添加阿里云的Docker Hub镜像
{
"registry-mirrors": ["https://obou6wyb.mirror.aliyuncs.com"]
}
保存并退出;最后执行sudo systemctl daemon-reload和sudo systemctl restart docker
6.最后检查docker版本,执行docker version(权限不够则加sudo,切换成root账号执行 sudo su,退出执行sudo -i或者 ctrl+D)
7.安装Docker-Compose
8.安装go
export PATH=$PATH:/usr/local/go/bin
export GOROOT=/usr/local/go
export GOPATH=$HOME/go
export PATH=$PATH:$HOME/go/bin
:wq保存退出 (vim编辑指令参考https://blog.csdn.net/csdn_yl/article/details/74563059)
6.cd ~ 回到根目录 mkdir go 创建go文件夹
注:如果是网页下载然后移到对应目录命令行指令先cd去到对应的父目录下 然后执行sudo mv go /usr/local/
9.Fabric源码下载
10.Fabric Docker镜像的下载
11.Fabric启动并测试chainCode
Cd到e2e_cli文件中,执行命令./network_setup.sh up
这个指令具体进行了如下操作:
编译生成Fabric公私钥、证书的程序,程序在目录:fabric/release/linux-amd64/bin
基于configtx.yaml生成创世区块和通道相关信息,并保存在channel-artifacts文件夹。
基于crypto-config.yaml生成公私钥和证书信息,并保存在crypto-config文件夹中。
基于docker-compose-cli.yaml启动1Orderer+4Peer+1CLI的Fabric容器。
在CLI启动的时候,会运行scripts/script.sh文件,这个脚本文件包含了创建Channel,加入Channel,安装Example02,运行Example02等功能
12.执行network_setup.sh可能会遇到的问题
启动e2e_cli时可能会出现无法启动的问题,例如出现启动失败 error 001解决方式如下:
A. fabric docker镜像的版本和git branch 要相同(查看镜像版本:docker images,查看分支版本再fabric目下执行git branch -a 查看版本,如果不是执行git checkout v1.0.0,)
B. 检查完版本之后cd到fabric目录下执行 make cryptogen(不能再root下执行该操作,之前配置的环境变量为用户环境变量) 如果返回Error 2表明缺少Itdl.h文件,执行apt-get install libtool libltdl-dev(如果出现使用apt-get时无法获得锁的情况,执行ps -aux|pre apt-get查看进程,然后执行kill 进程ID,杀掉该进程;或者直接删除进程锁执行sudo rm /var/lib/dpkg/lock)
C. 如果执行make cryptogen 出现No go in PATH:Check dependencies,可做以下操作切换到go目录修改权限 执行 sudo chmod 777 -R .
D. 检查下载镜像时是否少下载了,以下是所需镜像及其对应下载执行的命令行(红色是可能缺少部分)
docker pull hyperledger/fabric-tools:x86_64-1.0.0
docker pull hyperledger/fabric-couchdb:x86_64-1.0.0
docker pull hyperledger/fabric-kafka:x86_64-1.0.0
docker pull hyperledger/fabric-orderer:x86_64-1.0.0
docker pull hyperledger/fabric-peer:x86_64-1.0.0
docker pull hyperledger/fabric-ca:x86_64-1.0.0
docker pull hyperledger/fabric-ccenv:x86_64-1.0.0
docker pull hyperledger/fabric-baseimage:x86_64-0.4.7
docker pull hyperledger/fabric-baseos:x86_64-0.4.7
docker pull hyperledger/fabric-zookeeper:x86_64-1.0.0
docker pull hyperledger/fabric-javaenv:x86_64-1.0.0
docker pull hyperledger/fabric-membersrvc:latest
E.再次执行./network_setup.sh up 如果还是出现Error: Error connecting due to rpc error: code = Unavailable desc = grpc: the connection is unavailable
F.查看当前系统防火墙状态是否为关闭执行:sudo ufw status(如果没有关闭则关闭防火墙 sudo ufw disable )
G.查看报错前一条语句如果是orderer.example.com
H.(切换到root权限,非root权限重新生成的genesis.block文件还是一个空的文件夹)重新执行./network_setup.sh up
I..如果出现unable to pull the images报错,需要执行docker stop $(docker ps -a -q)关闭所有容器,再执行 docker rm $(docker ps -a -q)删除所有容器,再次执行./network_setup.sh up
J.出现API error(404):{“message”:”network e2ecli_detault not found”} 则说明e2e_cli/下的peer-base.yaml文件里面出现了问题,进入该文件将CORE_VMDOCKER_HOSTCONFIC_NETWORKMODE=e2ecli_default改成CORE_VMDOCKER_HOSTCONFIC_NETWORKMODE=e2e_cli_default
K.出现Got unexpected status: BAD_REQUEST报错,可能是channel的名字已经存在了,每一次执行./network_setup.sh up时要关闭和清理容器保证其销毁了依次执行docker stop $(docker ps -a -q)和docker rm $(docker ps -a -q)
13.手动测试Fabric网络
14.关闭Fabric,首先执行exit退出cli容器,然后再e2e_cli目录下执行关闭操作 ./network_setup.sh down