fabric1.1开发(一 - 搭建环境)

今天配置fabric试过各种博客,踩过无数坑,原因就是fabric版本不一样,配置的好多地方都会不一样,即使版本一样,好多方法也都不能用了。所以想写一下最新的配置方法,本来想配置最新版本的,结果发现fabric2.0下面好多文件夹都改了。

环境介绍

在VM上安装的CentOS 7 linux3.10.0

前期准备

安装Go centos 7 安装golang1.13.5

安装Docker

curl -fsSL https://get.docker.com | bash -s docker --mirror Aliyun

安装Docker-Compose

# github太慢了,换了一个源
curl -L "https://get.daocloud.io/docker/compose/releases/download/1.27.3/docker-compose-$(uname -s)-$(uname -m)" -o /usr/local/bin/docker-compose
chmod +x /usr/local/bin/docker-compose
docker-compose -v

这些网上有很多教程,遇到错误直接百度也很容易解决,这里就不多介绍了

Fabric环境部署

1.下载fabric源码

 # 进入gopath,我这里gopath设置的是/opt/gopath
 cd  $GOPATH
 # 创建文件夹
 mkdir -p /opt/gopath/src/github.com/hyperledger/

好多教程都是直接用命令拷贝代码,再切换至release1.1分支,期间会遇到许多问题,我这里直接在网页上下载好https://github.com/hyperledger/fabric/tree/release-1.1(记得是在VM客户机里下,我第一次在主机里下载,出现了问题),然后把代码这个文件夹重命名为fabric放在之前创建的hyperledger文件夹中

2.下载fabric-samples源码

同理,也是在网页上下载https://github.com/hyperledger/fabric-samples/tree/release-1.1,把代码文件夹重命名为fabric-samples,也放在hyperledger文件夹中

3.下载fabric镜像

遇到问题最多的地方!!要么就是版本不匹配,要么就是网速慢各种下载不下来。这里有个极其简单的方法!

还是在网页上先下载下来,https://github.com/hyperledger/fabric/releases/download/v1.1.0/hyperledger-fabric-linux-amd64-1.1.0.tar.gz,就不需要执行./bootstrap.sh 文件了,下载后是bin文件和config文件,把他放在fabric-samples文件里面就完成了
ca的镜像在https://github.com/hyperledger/fabric/releases/download/v1.1.0/hyperledger-fabric-ca-linux-amd64-1.1.0.tar.gz这里

4.chainnode测试

进入fabric-samples里的first-network文件

cd first-network

启动first-network网络

./byfn.sh up

直到出现这个就表示成功了
在这里插入图片描述
4.1 问题
不知道为什么,过了几天之后再次运行后又出现了一大堆问题

问题1Cannot connect to the Docker daemon at unix:///var/run/docker.sock. Is the docker daemon running?解决方法:

 systemctl daemon-reload
 service docker restart
 service docker status 
 docker run hello-world

问题2 BAD_REQUEST – error authorizing update: error validating ReadSet: readset expected key [Group] /Channel/Application at version 0, but got version 2
上次运行的fist-network没有关闭,解决方法:

./byfn.sh down

问题3 manifest for hyperledger/fabric-orderer:latest not found: manifest unknown:解决方法

# 先下载对应版本镜像,再将它重命名为最新版本的就可以了,如果其他镜像也报这样的错,方法是一样的
docker pull hyperledger/fabric-orderer:x86_64-1.1.0
docker tag hyperledger/fabric-orderer:x86_64-1.1.0 hyperledger/fabric-orderer:latest
  1. 运行e2e_cli
# 进入e2e_cli并启动
cd /opt/gopath/src/github.com/hyperledger/fabric/examples/e2e_cli
bash network_setup.sh up

这样就是成功了
这样就是成功了5.1 问题
解决问题之前要

sudo bash network_setup.sh down

问题1 没有权限 解决方法:sudo
问题2 Error: Error endorsing chaincode: rpc error: code = Unknown desc = error starting container: API error (404): {“message”:“network e2ecli_default not found”} 解决方法

# 修改/opt/gopath/src/github.com/hyperledger/fabric/examples/e2e_cli/base目录下的peer-base.yaml
CORE_VM_DOCKER_HOSTCONFIG_NETWORKMODE=e2e_cli_default
docker命令
# 删除镜像
docker rmi <image id>
#强制删除镜像
docker rmi -f <image id>
# 删除所有镜像
docker rmi $(docker images -q)

# 删除所有docker
docker rm $(docker ps -aq)  
# 查看docker
docker ps
# 删除这个ID的docker 
docker stop ID
# 清理网络
docker network prune

# 启动整个网络
docker-compose up -d
# 产看日志
docker logs
# 查看peer节点日志
docker logs orderer.imocc.com
# 查看某个peer节点日志
docker logs peeer0.org0.imocc.com

# 进入cli
docker exec -it cli bash
# peer channel [command]
  create       Create a channel
  fetch        Fetch a block
  getinfo      get blockchain information of a specified channel.
  join         Joins the peer to a channel.
  list         List of channels peer has joined.
  signconfigtx Signs a configtx update.
  update       Send a configtx update.
# 创建通道 -o向哪一个order进行通信 -c使用哪一个创世交易
peer channel create -o orderer.imocc.com:7050 -c assetschannel -f /etc/hyperledger/config/assetschannel.tx
# 加入通道 assetschannel.block是通道创建时生成的
peer channel join -b assetschannel.block
# 查看当前peer节点已经加入了哪些channel
peer channel list
# 设置主节点
peer channel update -o orderer.imocc.com:7050 -c assetschannel -f /etc/hyperledger/config/Org1MSPanchors.tx
# 链码安装在peer节点 -n链码名 -v参数 -l语言 -p链码所在路径
peer chaincode install -n assets -v 1.0.0 -l golang -p github.com/chaincode/assetsExchange
# 进入某个peer节点容器
docker exec -it peer0.org1.imocc.com bash
# 查看该peer节点相关数据
cd /var/hyperled
# 退出
exit
# 链码实例化 -o向哪一个order进行通信 -C指定通道名字 -n链码名字 -l语言 -v版本 -c初始化参数
peer chaincode instantiate -o orderer.imocc.com:7050 -C assetschannel -n assets -l golang -v 1.0.0 -c '{"Args":["init"]}'
  • 2
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值