Ubuntu16.04+fabric1.4部署环境

参考博客:
https://blog.csdn.net/weixin_44573310/article/details/108553953
https://blog.csdn.net/u013782473/article/details/100608795

提前说明,下面给的代码语句,如果遇到跑不通的情况,可以试试在前面加sudo,很多问题就是因为权限不够引起的。

一、前期准备

1、cURL最新版安装

# 下载最新版的cURL并将其解压
wgethttps://curl.haxx.se/download/curl-7.65.3.tar.xz
sudo tar xzvf curl-7.63.0.tar.gz -C /home
# 编译并安装cURL
cd /home/curl-7.65.3
./configure
make
sudo make install

通过运行curl --version查看是否安装成功。

2、Docker和Docker Compose安装
Docker
首先卸载可能存在的旧版本

sudo apt-get remove docker docker-engine docker.io containerd runc  
sudo apt-get update 
sudo apt-get install  apt-transport-https  ca-certificates gnupg-agent software- properties-common
curl -fsSL https://download.docker.com/linux/ubuntu/gpg | sudo apt-key add -
sudo add-apt-repository "deb [arch=amd64] https://download.docker.com/linux/ubuntu $(lsb_release -cs) stable"   
sudo apt-get update  
sudo apt-get install docker-ce docker-ce-cli containerd.io

docker version查看是否成功
3、Docker Compose

# 下载Docker Compose二进制文件
sudo curl -L "https://github.com/docker/compose/releases/download/1.23.2/docker-compose-$(uname -s)-$(uname -m)" -o /usr/local/bin/docker-compose
sudo chmod  x /usr/local/bin/docker-compose

4、Go安装

# 下载go1.11.linux-amd64.tar.gz并将其解压到指定目录(此处为/usr/local)
wget https://studygolang.com/dl/golang/go1.11.linux-amd64.tar.gz
tar xzvf go1.11.linux-amd64.tar.gz -C /usr/local

goenvset.sh文件内容如下所示:

cat >> /etc/profile << EOF
export GOROOT=/usr/local/go
export GOARCH=amd64
export GOOS=linux
export GOPATH=/home/ubuntu/gopath
export GOBIN=\$GOPATH/bin
export PATH=\$GOPATH/bin:\$GOROOT/bin:\$PATH
EOF

# 执行已有的goenvset.sh向/etc/profile中写入相应的环境变量
sudo chmod 705 goenvset.sh      # 更改goenvset.sh的权限使其可执行
sudo ./goenvset.sh				# 执行goenvset.sh脚本

# 使环境变量生效
source /etc/profile

二、Fabric安装

1、将fabric-samples下载到$GOPATH/src/github.com/hyperledger目录中

mkdir -p $GOPATH/src/github.com/hyperledger
cd $GOPATH/src/github.com/hyperledger
# 克隆fabric-samples项目并切换到v1.4tag
git clone https://github.com/hyperledger/fabric-samples.git
cd fabric-samples
git checkout -b sample v1.4.4

2、安装Fabric Binaries和Fabric相关的Docker镜像

cd $GOPATH/src/github.com/hyperledger/fabric-samples/scripts
# 安装Fabric、Fabric-ca以及第三方Docker镜像(./bootstrap.sh <fabric> <fabric-ca> <thirdparty>)
./bootstrap.sh 1.4.0 1.4.0 0.4.14

会报错
gzip: stdin: unexpected end of file
tar: Child returned status 1
tar: Error is not recoverable: exiting now
==> There was an error downloading the binary file. Switching to incremental download.
==> Downloading file…
Failure downloading binaries (curl RC=6). Please try again and the download will resume from where it stopped.

值得注意的是,里面的二进制文件是下载不下来的。因为下载二进制文件的网页,已经打不开了。所以,要把二进制文件的内容,注释掉。
进入scripts目录下,有一个bootstrap.sh的脚本

#binariesInstall() {
#  echo "===> Downloading version ${FABRIC_TAG} platform specific fabric binaries"
#  binaryDownload ${BINARY_FILE} https://nexus.hyperledger.org/content/repositories/releases/org/hyperledger/fabric/hyperledger-fabric/${ARCH}-${VERSION}/${BINARY_FILE}
#  if [ $? -eq 22 ]; then
#    echo
#     echo "------> ${FABRIC_TAG} platform specific fabric binary is not available to download <----"
#     echo
#   fi

# echo "===> Downloading version ${CA_TAG} platform specific fabric-ca-client binary"
#  binaryDownload ${CA_BINARY_FILE} https://nexus.hyperledger.org/content/repositories/releases/org/hyperledger/fabric-ca/hyperledger-fabric-ca/${ARCH}-${CA_VERSION}/${CA_BINARY_FILE}
#  if [ $? -eq 22 ]; then
#    echo
#    echo "------> ${CA_TAG} fabric-ca-client binary is not available to download  (Available from 1.1.0-rc1) <----"
#    echo
#  fi
#}

在这个文件中,也可以根据自己的需求,修改fabric的版本号,我改成了1.4.4。
修改完毕保存后,./bootstrap.sh启动这个脚本
如以下二进制文件未下载完成则,人工执行命令

wget https://github.com/hyperledger/fabric/releases/download/v1.4.4/hyperledger-fabric-linux-amd64-1.4.4.tar.gz
wget https://github.com/hyperledger/fabric-ca/releases/download/v1.4.4/hyperledger-fabric-ca-linux-amd64-1.4.4.tar.gz

tar xzvf hyperledger-fabric-linux-amd64-1.4.4.tar.gz -C $GOPATH/src/github.com/hyperledger/fabric-samples/
tar xzvf hyperledger-fabric-ca-linux-amd64-1.4.4.tar.gz -C $GOPATH/src/github.com/hyperledger/fabric-samples/

#向/etc/profile中写入环境变量
sudo echo 'export PATH=$GOPATH/src/github.com/hyperledger/fabric-samples/bin:$PATH' >> /etc/profile

#使环境变量生效
source /etc/profile

ps:如果
wget https://github.com/hyperledger/fabric/releases/download/v1.4.4/hyperledger-fabric-linux-amd64-1.4.4.tar.gz
这句话下载较慢,也可以通过下面两个网址,滑到页面最底下,点击相应版本自行下载后,再解压
https://github.com/hyperledger/fabric/releases/tag/v1.4.4 https://github.com/hyperledger/fabric-ca/releases/tag/v1.4.4

2、如docker相关镜像未下载完成则执行如下命令下载相关镜像。

# 下载Fabric相关镜像(fabric-peer、fabric-orderer、fabric-ccenv、fabric-tools),此处以fabric-peer镜像为例,其他镜像同理
docker pull hyperledger/fabric-peer:1.4.0
docker tag hyperledger/fabric-peer:1.4.0 hyperledger/fabric-peer:latest

# 下载Fabric第三方镜像(fabric-couchdb、fabric-kafka、fabric-zookeeper),此处以fabric-couchdb为例,其他镜像同理
docker pull hyperledger/fabric-couchdb:0.4.14
docker tag hyperledger/fabric-couchdb:0.4.14 hyperledger/fabric-couchdb:latest

# 下载Fabric CA镜像
docker pull hyperledger/fabric-ca:1.4.0
docker tag hyperledger/fabric-ca:1.4.0 hyperledger/fabric-ca:latest

3、通过运行Build your first network样例来进行测试、

cd $GOPATH/src/github.com/hyperledger/fabric-samples/first-network
# 编译通过Golang开发的chaincode并启动相关的容器
./byfn.sh up

./byfn.sh up -l node

./byfn.sh up -o kafka

#停止first-network网络中所有的容器,删除crypto材料和4个artifacts(genesis.block、mychannel.block、Org1MSPanchor.tx、Org2MSPanchor.tx)以及chaincode镜像
./byfn.sh down

这样就可以啦!

遇到的问题
1、ERROR: Couldn’t connect to Docker daemon at http+docker://localhost - is it running?
方法一:可以先./byfn.sh down,再./byfn.sh up
方法二:

sudo systemctl unmask docker.service
sudo systemctl unmask docker.socket
sudo systemctl start docker.service

2、Error: could not assemble transaction, err proposal response was not successful, error code 500, msg error starting container: error starting container: Failed to generate platform-specific docker build: Failed to pull hyperledger/fabric-ccenv:latest: API error (404): manifest for hyperledger/fabric-ccenv:latest not found: manifest unknown: manifest unknown
!!! Chaincode instantiation on peer0.org2 on channel ‘mychannel’ failed !!!
========= ERROR !!! FAILED to execute End-2-End Scenario ===========

ERROR !!! Test failed
原因:Instantiation of Chaincode using Fabric Node manifest for hyperledger/fabric-ccenv:latest not found
解决方法:

# 手动下载最新版
docker pull hyperledger/fabric-ccenv:2.1
 
# 加上最新版的标签
docker tag hyperledger/fabric-ccenv:2.1 hyperledger/fabric-ccenv:latest
 
# 重新执行之前的指令

(参考:https://blog.csdn.net/u013288190/article/details/109572367)

3、报错“Error: got unexpected status: BAD_REQUEST – error applying config update to existing channel ‘mychannel’: error authorizing update: error validating ReadSet: proposed update requires that key [Group] /Channel/Application be at version 0, but it is currently at version 1”
方法:已经存在mychannel,之前启动的fabric network没有正常停止,如果之前执行./byfn.sh up,那么相应的执行./byfn.sh down来停止fabric network。不要直接使用docker stop 或者 docker rm 停止删除容器。
(参考:https://blog.csdn.net/weixin_44150643)

4、Error response from daemon: manifest for xxx:latest not found: manifest unknown…
错误的意思是docker需要我们指定下载镜像的版本号。
我们可以登录docker hub:https://hub.docker.com/u/library,搜索自己想要下载的镜像名:
(参考:https://yanglinwei.blog.csdn.net/article/details/105043400)

5、 Cannot run peer because cannot init crypto, folder “/opt/gopath/src/github.com/hyperledger/fabric/peer/crypto/peerOrganizations/org1.example.com/users/Admin@org1.example.com/msp” does not exist
!!! Channel creation failed !!!
方法:./byfn.sh down

学习网址:
1、Hyperledger Fabric release-1.4 官方手册:https://hyperledger-fabric.readthedocs.io/en/release-1.4/whatis.html
2、docker官方教程(Get Docker CE for Ubuntu):https://docs.docker.com/install/linux/docker-ce/ubuntu/
3、http://cw.hubwiz.com/card/c/fabric-command-manual/1/3/1/
4、https://github.com/chaozh/awesome-blockchain-cn
pink老师说,在github上,搜awe fabric、awe java就能搜到相应的各种素材教程

  • 0
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 2
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值