fabric环境搭建
一、安装虚拟机
- 虚拟机安装
- 连接虚拟机
二、安装python2.7
ubuntu 18 默认是安装得是python3.6
python --version查看版本
更新apt-get
sudo apt-get update
安装python2.7
sudo apt-get install python2.7
安装pip
sudo apt install python-pip pip --version验证,安装docker-compose时要用到
sudo apt install python3-pip
更新pip:
sudo pip install --upgrade pip
三、安装go
安装go:sudo apt-get install golang-go,会安装到/usr/lib/go-1.6目录
工程管理:
mkdir -p /home/go/src
mkdir -p /home/go/bin
mkdir -p /home/go/pkg
添加环境变量:
vi ~/.profile
export GOROOT=/usr/lib/go-1.6
export PATH="$PATH:$GOROOT/bin"
export GOPATH=/home/go
export PATH="$PATH:$GOPATH/bin"
加载配置:source ~/.profile
检查:go env
手动安装配置:
手动下载地址:https://golang.google.cn/dl/
下载tar包:wget https://storage.googleapis.com/golang/go1.15.11.linux-amd64.tar.gz
解压:tar -xvf go1.15.11.linux-amd64.tar.gz -C可以指定解压到的目录
配置环境变量:vim ~/.bashrc
export GOOROOT =/usr/local/go
export GOPATH = $HOME/go
export PATH=$PATH:$GOROOT/bin:$GOPATH/bin
重新加载配置文件:source ~/.bashrc
四、git安装
用来拉取fabric代码
sudo apt install git
五、docker安装
更新apt:sudo apt-get update
安装docker:
sudo apt-get install docker
sudo apt install docker.io
验证:docker version 会报权限不够的错误
创建docker用户组
sudo groupadd docker
将当前用户添加到docker用户组
sudo gpasswd -a 用户名 docker
重启docker服务
systemctl restart docker
当前用户切换到docker组
newgrp docker
验证:docker version
ubuntu:前面加sudpo
六、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
七、fabric安装
gopath下新建一个目录,存放后期的所有fabric有关的
mkdir src
进入到目录:
cd src
git clone https://github.com/hyperledger/fabric.git
切换分支:
cd fabric
git checkout v1.0.0 main分支是没有examples文件夹的
八、Fabric的Docker镜像下载
进入e2e_cli目录:cd examples/e2e_cli (如果没有examples,需要切换分支到1.0)
下载镜像:
不建议批量下载,后期启动解点的时候因为镜像不完整或者版本不对容易引发问题,
source download-dockerimages.sh -c x86_64-1.0.0 -f x86_64-1.0.0
按个下载镜像:10个
docker pull hyperledger/fabric-tools: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-couchdb:x86_64-1.0.0
docker pull hyperledger/fabric-kafka: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-javaenv:x86_64-1.0.0
docker pull hyperledger/fabric-zookeeper:x86_64-1.0.0
修改标签为latest:
docker tag hyperledger/fabric-tools:x86_64-1.0.0 hyperledger/fabric-tools
docker tag hyperledger/fabric-orderer:x86_64-1.0.0 hyperledger/fabric-orderer
docker tag hyperledger/fabric-peer:x86_64-1.0.0 hyperledger/fabric-peer
docker tag hyperledger/fabric-couchdb:x86_64-1.0.0 hyperledger/fabric-couchdb
docker tag hyperledger/fabric-kafka:x86_64-1.0.0 hyperledger/fabric-kafka
docker tag hyperledger/fabric-ca:x86_64-1.0.0 hyperledger/fabric-ca
docker tag hyperledger/fabric-ccenv:x86_64-1.0.0 hyperledger/fabric-ccenv
docker tag hyperledger/fabric-baseimage:x86_64-0.4.7 hyperledger/fabric-baseimage
docker tag hyperledger/fabric-javaenv:x86_64-1.0.0 hyperledger/fabric-javaenv
docker tag hyperledger/fabric-zookeeper:x86_64-1.0.0 hyperledger/fabric-zookeeper
验证:docker images
删除镜像:
先删除容器:docker container prune
再删除镜像:docker rmi –f [IMAGE ID]
九、生成可执行文件,(可以通过第十步生成,在release/linux-amd64/bin下)
cmd/cryptogen是在main分支,不是1.0分支
将可执行文件放到gopath的bin下,方便全局使用
进入cmd/cryptogen,执行go build main.go 会生成可执行文件,改名字为:cryptogen,然后拷贝到gopath的bin中
其他的也是一样,进入cmd下的对应文件夹,执行build
而且必须把bin路径给权限:chmod 775 -R /home/go/workspace/bin
十、验证
需要fabric项目放在github.com/hyperledger/ 下
进入到指定目录:gopath下的fabric/examples/e2e_cli
启动Fabric网络:./network_setup.sh up
出现end 说明没问题
启动这个脚本做了以下几个操作:
编译生成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等功能。
十一、手动测试
以现在安装好的Example02为例,channel名字是mychannel,链码的名字是mycc。
进入CLI:docker exec -it cli bash
查看余额:peer chaincode query -C mychannel -n mycc -c '{"Args":["query","a"]}'
退出容器:exit
关闭fabric网络:
进入gopath下的fabric/examples/e2e_cli
./network_setup.sh down