从2018年6月份左右,开始接触fabric,搭建了单机或集群环境,也写了一些文档。最近整理电脑时发现,在这里分享出来。。。。
系统: linux ubuntu 16.04
安装Go
1.8以上
cd /www/download/
wget https://storage.googleapis.com/golang/go1.9.linux-amd64.tar.gz
解压缩,解压后文件夹是go
sudo tar -xzf go1.9.linux-amd64.tar.gz
sudo vi /etc/profile
export PATH=$PATH:/www/download/go/bin
export GOROOT=/www/download/go
export GOPATH=$HOME/go
export PATH=$PATH:$HOME/go/bin
source /etc/profile
go version
安装Docker
更新源
sudo apt-get update
安装docker
sudo apt-get install -y docker.io
修改当前用户(我使用的用户叫content2)权限
sudo usermod -aG docker content2
注销并重新登录(或关闭当前黑屏窗口重新进入),然后添加阿里云的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
安装docker-compose
Docker-compose是支持通过模板脚本批量创建Docker容器的一个组件。
sudo apt-get install -y docker-compose
docker-compose --version
Fabric源码下载
阿里云服务器需要修改
修改 /etc/resolv.conf 配置,将 options timeout:2 attempts:3 rotate single-request-reopen 内容注释掉,作者修改后的内容如下
# Dynamic resolv.conf(5) file for glibc resolver(3) generated by resolvconf(8)
# DO NOT EDIT THIS FILE BY HAND -- YOUR CHANGES WILL BE OVERWRITTEN
nameserver 100.100.2.136
nameserver 100.100.2.138
# options timeout:2 attempts:3 rotate single-request-reopen
sudo mkdir -p ~/go/src/github.com/hyperledger
cd ~/go/src/github.com/hyperledger
sudo git clone -b release-1.0 https://github.com/hyperledger/fabric
给fabric文件夹授权
sudo chown content2.content2-R fabric
生成可执行文件
cd ~/go/src/github.com/hyperledger/fabric
make configtxgen
Fabric Docker镜像的下载
cd ~/go/src/github.com/hyperledger/fabric/examples/e2e_cli/
source download-dockerimages.sh -c x86_64-1.0.0 -f x86_64-1.0.0
检查下载的镜像列表
docker images
启动Fabric网络并完成ChainCode的测试
在~/go/src/github.com/hyperledger/fabric/examples/e2e_cli目录下执行启动命令,它会启动一个 mychannel 的channel
./network_setup.sh up
执行完成后,会显示
至此,整个Fabric网络已经通了。
这里容易出现错误,
类似这样的错误,是因为channel已经建立,命名冲突。这时候需要清除docker容器的内容,并重新执行上面的命令。
1)删除一个容器 docker rm
2)强制删除一个容器 docker rm -f
3)强制删除全部容器 docker rm -f $(docker ps -aq)
测试Fabric网络
以现在安装好的Example02为例,在官方例子中,channel名字是mychannel,链码的名字是mycc。我们首先进入CLI,我们重新打开一个命令行窗口,输入:
docker exec -it cli bash
查询a账户的余额:
peer chaincode query -C mychannel -n mycc -c '{"Args":["query","a"]}'
显示余额是90
把a账户的余额再转20元给b账户:
peer chaincode invoke -o orderer.example.com:7050 --tls true --cafile /opt/gopath/src/github.com/hyperledger/fabric/peer/crypto/ordererOrganizations/example.com/orderers/orderer.example.com/msp/tlscacerts/tlsca.example.com-cert.pem -C mychannel -n mycc -c '{"Args":["invoke","a","b","20"]}'
查询a账户的余额,显示70
关闭Fabric网络
cd ~/go/src/github.com/hyperledger/fabric/examples/e2e_cli
./network_setup.sh down