环境:centos7.6 ,fabric 1.4.3 ,
1、linux内核升级(可参考:https://blog.csdn.net/tianshuhao521/article/details/84021064)
2、安装git、curl、pip
yum install git
yum install curl
yum -y install epel-release
yum install python-pip
pip install --upgrade pip
3、安装docker
(3.1)如果以前安装过Docker,需要先卸载,命令如下:
# sudo yum remove docker docker-client docker-client-latest docker-common docker-latest docker-latest-logrotate docker-logrotate docker-selinux docker-engine-selinux docker-engine
我以前没有安装过,所以提示以下信息:
(3.2)在线安装docker ce
(3.2.1)安装yum-utils提供的yum-config-manager,device-mapper-persistent-data和lvm2,命令如下:
# sudo yum install -y yum-utils device-mapper-persistent-data lvm2
最后complete!
(3.2.2)设置稳定存储库:
# sudo yum-config-manager --add-repo https://download.docker.com/linux/centos/docker-ce.repo
(3.2.3)可以选择性的启用edge和测试存储库,这些存储库包含在Docker中,默认是禁用的,命令如下:
# sudo yum-config-manager --enable docker-ce-edge
# sudo yum-config-manager --enable docker-ce-test
(3.2.4)以下命令为禁用edgecunc存储库:
sudo yum-config-manager --disable docker-ce-edge
(3.2.5)安装最新版的Docker CE:
sudo yum install docker-ce
最后complete!
(3.2.6)查看docker版本,如图表示安装成功:docker --version
(3.2.7)启动docker:systemctl start docker (有些版本的启动命令为service docker start)
(3.2.8)设置docker开机自启:chkconfig docker on
(3.3)安装Docker-Compose(离线安装)
(3.3.1)下载最新版的docker-compose-Linux-x86_64,下载地址为:https://github.com/docker/compose/releases。下载完后上传至/tmp/docker/docker-compose文件夹下,若无此文件夹,创建即可。
(3.3.2)进入文件所在目录:cd /tmp/docker/docker-compose
(3.3.3)将其移动至/usr/local/bin安装目录:mv docker-compose-Linux-x86_64 /usr/local/bin/docker-compose
(3.3.4)赋予可执行权限:chmod +x /usr/local/bin/docker-compose
(3.3.5)查看版本信息:docker-compose --version
如图表示安装成功。
注意:若安装不成功,尝试一下以下命令:cp /usr/local/bin/docker-compose /usr/bin
最终环境如图:
4、安装golang、nodejs、npm
安装golang:
(1)安装必要的依赖:# sudo yum install libtool libltdl-dev
(2)下载go语言包:https://studygolang.com/dl
(3)将下载的语言包go1.12.9.linux-amd64.tar.gz上传至文件夹/tmp/docker
(4)进入/tmp/docker:cd /tmp/docker
(5)解压至/usr/local目录下:# tar -C /usr/local -zxvf go1.12.9.linux-amd64.tar.gz
(6)配置go语言环境变量,参照配置jdk环境变量,在/etc/profile文件后加以下内容(别忘了使文件生效):
#go环境变量
export PATH=$PATH:/usr/local/go/bin
export GOPATH=/opt/gopath
安装node.js和npm
(1)下载nodejs最新版:https://nodejs.org/dist/v12.9.1/
(2)# mkdir /tmp/docker/nodejs
(3)# cd /tmp/docker/nodejs 将node-v12.9.1-linux-x64.tar.gz上传到/tmp/docker/nodejs目录并解压。
(4)配置环境变量:vim /etc/profile,添加以下内容
# nodejs environment
export NODE_HOME=/tmp/docker/nodejs/node-v12.9.1-linux-x64
export PATH=$PATH:${NODE_HOME}/bin
然后source /etc/profile使配置文件生效。
(5)查看版本:
node -v
npm -v
升级gcc
(1)查看gcc版本为4.8.5:gcc -v
(2)执行以下命令进行升级:
# sudo yum install centos-release-scl
# sudo yum install devtoolset-7-gcc*
# scl enable devtoolset-7 bash
# which gcc
# gcc -v
如图表示升级成功。
5、查看各版本信息如图:
go version
gcc -v
node -v
npm -v
6、下载fabric和fabric-samples源码:
# mkdir -p $GOPATH/src/github.com/hyperledger
# cd $GOPATH/src/github.com/hyperledger
# git clone https://github.com/hyperledger/fabric.git
# cd fabric
# git branch -a
# git checkout release-1.4
下载fabric镜像:
# cd /opt/gopath/src/github.com/hyperledger/fabric/scripts
# cat bootstrap.sh
可以看到版本是1.4.3
执行此文件下载镜像:# ./bootstrap.sh
下载完成如图:
查看多了fabric-samples目录:# ls
7、运行fabric-samples提供的first-network网络:
# cd fabric-samples
# cd first-network
创建第一个channel(firstchannel为通道名称,可以自己定义):# ./byfn.sh -m generate -c firstchannel
启动网络:./byfn.sh -m up -c firstchannel
我这里报了个错,顺便说一下解决方案:
错误信息:
Error: error getting endorser client for channel: endorser client failed to connect to peer0.org1.example.com:7051: failed to create new connection: context deadline exceeded
peer0.org1 failed to join the channel, Retry after 3 seconds
解决方案:
执行以下命令查看错误日志如图:# docker logs peer0.org1.example.com
原因是peer节点启动之后又自动关闭了导致连接不到peer节点。
解决方法一:
在first-network目录下的docker-compose-cli.yaml文件和base中的docker-compose-cli.yaml中添加环境变量- GODEBUG=netdns=go即可,如图:
若方法一无效,可用方法二解决:
修改 /etc/resolv.conf 文件将options行注释掉即可,如图:
再次启动网络:# ./byfn.sh -m up -c firstchannel
此时可以进入cli客户端进行操作:
# docker exec -it cli bash
查询用户a的资产,能看到余额是90:
# peer chaincode query -C firstchannel -n mycc -c '{"Args":["query","a"]}'
退出cli:# exit
关闭网络:./byfn.sh -m down
注:
关闭所有docker的命令:docker rm -f $(docker ps -aq)
删除全部镜像:docker rmi $(docker images -q)
用image id删除镜像时候若提示多个引用,可以先用仓库名删除再执行全部删除:
比如,docker rmi hyperledger/fabric-tools
这样会删除掉latest标签的镜像。
若还是不行就加标签,docker rmi hyperledger/fabric-tools:1.4.3
这样会删掉标签为1.4.3的fabric-tools镜像。