系统版本:CentOS 7,VMware 15.5
我这个菜鸡部署1.2版本的建了三个虚拟机,2.2版本又建了一个,唉太丢人了,推荐大家可以用用虚拟机的快照功能,快照一下这样第二天如果把虚拟机玩坏了还能恢复到以前的样子。
这样先把基本工作做好,那就是必要的软件安装,然后进行部署,废话说了一堆,下面进入正题haha。
首先安装VMware workstation,我装的是15.5版本,然后下载CentOS 7镜像,我是用百度网盘下的,下了一天。。。速度比较慢哈。然后就可以进行我们的正式工作啦~
看了很多大佬们的博客,大概总结一下,怕自己忘掉,好记性不如烂笔头!!!
一、基本组件安装
1.docker安装
如果下载过docker,需要先卸载掉旧版本,执行下条语句,没下载过docker的请忽略此条
yum remove docker docker-client docker-client-latest docker-common docker-latest docker-latest-logrotate docker-logrotate docker-engine
(1)更新yum
yum update
(2)yum源配置
yum install -y wget
cd /etc/yum.repos.d
mv CentOS-Base.repo CentOS-Base.repo.bak
wget -O /etc/yum.repos.d/CentOS-Base.repo http://mirrors.163.com/.help/CentOS7-Base-163.repo
yum makecache
(3)其他软件下载
yum install -y curl vim gcc gcc-c++
yum install -y yum-utils device-mapper-persistent-data lvm2
(4)增加docker yum 源
yum-config-manager --add-repo http://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo
(5)下载docker并查看版本
yum list docker-ce --showduplicates | sort -r
yum install -y docker-ce
docker --version
docker version
(6)设置docker开机启动
systemctl start docker
systemctl enable docker
systemctl list-unit-files --all --type=service | grep docker
(7)设置docker images镜像源
首先进入阿里云官方网站:https://www.aliyun.com/
登陆自己的账号,在搜索框输入容器镜像服务后回车
点进左下角的镜像加速器
按照它提示的操作进行即可,操作文档选择CentOS
2.docker-compose安装
yum install -y epel-release
yum makecache
yum install -y docker-compose
docker-compose version
3.go语言和git安装
我装的是1.14.10版本,推荐安装1.13+,不然后期可能因为版本问题运行某些命令出错
yum install -y git
cd /opt
mkdir golang
cd golang
wget https://studygolang.com/dl/golang/go1.14.10.linux-amd64.tar.gz
tar -zxvf go1.14.10.linux-amd64.tar.gz
在/etc/profile文件下增加环境变量
vim /etc/profile
#追加gradle环境变量
export GRADLE_HOME=/home/gradle/gradle-6.5.1
export GRADLE_USER_HOME=/home/gradle/gradle_user_home
export PATH=$PATH:$GRADLE_HOME/bin
#追加golang环境变量
export GOPATH=/opt/gopath
export GOROOT=/opt/golang/go
export PATH=$GOROOT/bin:$PATH
export FABRIC=$GOPATH/src/github.com/hyperledger/fabric
查看版本
source /etc/profile
go version
go env
二、fabric v2.2.0环境搭建和部署
1.拉取源码
mkdir -p ~/go/src/github.com/hyperledger
cd ~/go/src/github.com/hyperledger
git clone https://github.com/hyperledger/fabric.git
如果上述github地址下载太慢,可以尝试下面码云上这个地址
git clone https://gitee.com/luxiaojun0605/fabric.git
我用的是码云地址
2.环境搭建
下载完成后会得到一个fabric文件夹,进入fabric/scripts目录可以看到一个bootstrap.sh脚本,直接执行bootstrap.sh脚本,就会自动进行fabric相关文件和镜像的下载,因涉及到github上面下载包,所以此过程比较长,我下载了一个小时。。。
进入fabric/scripts文件夹
cd fabric/scripts
执行脚本进行相关文件和镜像的下载
./bootstrap.sh
此过程比较慢哈,我下载了一个小时,不要着急,这个时候你可以小憩一下,吃点东西。
下载的fabric-samples会在scripts文件夹下,咱们把他放到上一级目录方便操作
mv fabric-samples ../
/root/go/src/github.com/hyperledger/fabric/fabric-samples
三、测试网络
这里推荐官方的英文文档,每一步也比较详细了
链接: https://hyperledger-fabric.readthedocs.io/en/latest/test_network.html
1.使用以下命令导航到测试网络目录:
cd fabric-samples/test-network
在此目录中,可以找到带注释的脚本, network.sh
该脚本使用本地计算机上的Docker映像站立在Fabric网络上。
2.从test-network
目录内部,运行以下命令以从以前的所有运行中删除任何容器或工件
./network.sh down
3.然后,可以通过以下命令来启动网络
./network.sh up
如果命令成功完成,将看到正在创建的节点的日志:
4.部署测试网络后,可能需要一些时间来检查其组件。运行以下命令以列出计算机上运行的所有Docker容器。应该看到该network.sh脚本创建的三个节点
docker ps -a
5.创建频道。可以使用network.sh
脚本在Org1和Org2之间创建频道,并将其对等方加入该频道。运行以下命令以使用默认名称创建频道mychannel
./network.sh createChannel
如果命令成功执行,则可以在日志中看到以下消息
========= Channel successfully joined ===========
6.使用network.sh
创建频道后,可以使用以下命令在频道上启动链码
./network.sh deployCC
启用测试网络后,可以使用peerCLI与网络进行交互。peerCLI允许您从CLI调用已部署的智能合约,更新通道或安装和部署新的智能合约。
7.确保正在从test-network
目录进行操作。使用以下命令将这些二进制文件添加到您的CLI路径:
export PATH=${PWD}/../bin:$PATH
8.您还需要将设置FABRIC_CFG_PATH为指向存储库中的core.yaml
文件fabric-samples
:
export FABRIC_CFG_PATH=$PWD/../config/
9.设置环境变量,以允许您以peer Org1的形式操作CLI:
# Environment variables for Org1
export CORE_PEER_TLS_ENABLED=true
export CORE_PEER_LOCALMSPID="Org1MSP"
export CORE_PEER_TLS_ROOTCERT_FILE=${PWD}/organizations/peerOrganizations/org1.example.com/peers/peer0.org1.example.com/tls/ca.crt
export CORE_PEER_MSPCONFIGPATH=${PWD}/organizations/peerOrganizations/org1.example.com/users/Admin@org1.example.com/msp
export CORE_PEER_ADDRESS=localhost:7051
10.如果您用于安装和启动资产转移(基本)链码,则可以调用(Go)链码的功能以在分类帐上放置资产的初始列表。
peer chaincode invoke -o localhost:7050 --ordererTLSHostnameOverride orderer.example.com --tls --cafile ${PWD}/organizations/ordererOrganizations/example.com/orderers/orderer.example.com/msp/tlscacerts/tlsca.example.com-cert.pem -C mychannel -n basic --peerAddresses localhost:7051 --tlsRootCertFiles ${PWD}/organizations/peerOrganizations/org1.example.com/peers/peer0.org1.example.com/tls/ca.crt --peerAddresses localhost:9051 --tlsRootCertFiles ${PWD}/organizations/peerOrganizations/org2.example.com/peers/peer0.org2.example.com/tls/ca.crt -c '{"function":"InitLedger","Args":[]}'
如果成功,应该看到类似以下的输出
-> INFO 001 Chaincode invoke successful. result: status:200
11.现在,可以从CLI查询分类帐。运行以下命令以获取已添加到渠道分类帐的资产列表:
peer chaincode query -C mychannel -n basic -c '{"Args":["GetAllAssets"]}'
如果成功,应该看到以下输出:
12.当网络成员要转移或更改分类帐上的资产时,将调用链码。使用以下命令通过调用资产转移(基本)链码来更改分类帐上资产的所有者:
peer chaincode invoke -o localhost:7050 --ordererTLSHostnameOverride orderer.example.com --tls --cafile ${PWD}/organizations/ordererOrganizations/example.com/orderers/orderer.example.com/msp/tlscacerts/tlsca.example.com-cert.pem -C mychannel -n basic --peerAddresses localhost:7051 --tlsRootCertFiles ${PWD}/organizations/peerOrganizations/org1.example.com/peers/peer0.org1.example.com/tls/ca.crt --peerAddresses localhost:9051 --tlsRootCertFiles ${PWD}/organizations/peerOrganizations/org2.example.com/peers/peer0.org2.example.com/tls/ca.crt -c '{"function":"TransferAsset","Args":["asset6","Christopher"]}'
如果命令成功,应该看到以下响应:
2019-12-04 17:38:21.048 EST [chaincodeCmd] chaincodeInvokeOrQuery -> INFO 001 Chaincode invoke successful. result: status:200
13.使用完测试网络后,可以使用以下命令关闭网络:
./network.sh down
该命令将停止并删除节点和链码容器,删除组织加密材料,并从Docker注册表中移除链码映像。该命令还会从以前的运行中删除通道工件和docker卷,从而在遇到任何问题时允许您再次运行。
本篇参考文章:
链接: https://www.cnblogs.com/luxiaojun/p/13453664.html
链接: https://blog.csdn.net/qq_43681877/article/details/107399250
如有错误,还请指正,互相学习!!!