Hyperledger Fabric v2.x + Ubuntu16.04环境搭建

参考万生世代teikin

1. 环境:

  • 阿里云海外(硅谷)服务器2核4G
  • 系统:ubuntu16.04

2.前置安装(Git和CURL)

在ubuntu中打开终端,输入以下命令

更新软件源
sudo apt update
安装git
sudo apt install git
安装curl
sudo apt install curl

3.安装docker-ce

本地虚拟机ubuntu 安装成功参考

获取安装docker-ce的脚本
curl -fsSL get.docker.com -o get-docker.sh
查看当前目录是否获取到了脚本
ls get*
执行脚本(安装需要一些时间)
sudo sh get-docker.sh
安装成功后试着run一下测试镜像
sudo docker run hello-world

4.安装docker-compose(此版本新fabric不支持,后序有新的安装方法 )

安装
sudo apt install docker-compose
安装成功后查看版本
docker-compose --version

在这里插入图片描述

5.下载GO,参考

按照官网要求下载:
Hyperledger Fabric v2.x + Ubuntu16.04环境搭建_第1张图片

  • 推荐下载1.15版本,高于此版本,fabric不支持

  • 在/usr/local文件夹下下载

# 在/usr/local文件夹下下载
 wget https://studygolang.com/dl/golang/go1.15.5.linux-amd64.tar.gz
# 删除以前安装的go版本,并解压当前下载的版本
rm -rf /usr/local/go && tar -C /usr/local -xzf go1.15.5.linux-amd64.tar.gz
# 只在当前窗体以及子窗体有效
export PATH=$PATH:/usr/local/go/bin

$ go version

Hyperledger Fabric v2.x + Ubuntu16.04环境搭建_第2张图片

6.下载Fabric和Fabric-samples(此处开始不成功,可直接跳到方法二)

# 获取fabirc并切换版本
git clone https://gitee.com/arxin/fabric.git
# 进入fabric 文件夹下,再切换
git checkout -b v1.2.0

在这里插入图片描述
Hyperledger Fabric v2.x + Ubuntu16.04环境搭建_第3张图片

# 获取fabric-samples并切换版本
git clone -b master https://github.com/hyperledger/fabric-samples.git
# 进入fabric-samples 文件夹下执行, 切换分支
git checkout -b v1.2.0

Hyperledger Fabric v2.x + Ubuntu16.04环境搭建_第4张图片

7.下载Fabric相关镜像

使用filezilla连接上远程服务器 (提前在安全组中开放端口)
Hyperledger Fabric v2.x + Ubuntu16.04环境搭建_第5张图片在这里插入图片描述

执行脚本

修改脚本权限
chmod 755 bootstrap.sh
执行脚本并指定版本号
sudo ./bootstrap.sh 1.2.0 1.2.0 0.4.10

Hyperledger Fabric v2.x + Ubuntu16.04环境搭建_第6张图片
提示在fabric-samples中执行
Hyperledger Fabric v2.x + Ubuntu16.04环境搭建_第7张图片执行报错,原因是nexus.hyperledger.org这个网站不再维护了,
从官网上找到最新的脚本文件
https://raw.githubusercontent.com/hyperledger/fabric/master/scripts/bootstrap.sh

重新执行该文件,失败。哭。。。。。。

方法二

参考官网地址

  • 阿里云服务器按量选购,地区选择美国硅谷
  • 完成以上前置安装 git curl docker docker-compose以后,把之前安装的fabric 以及fabric-samples删除,即从第六步开始
  • 然后直接执行一行命令,安装所有的fabric镜像以及fabric-samples文件
    curl -sSL https://bit.ly/2ysbOFE | bash -s
    由于使用的国外服务器,安装贼快
    Hyperledger Fabric v2.x + Ubuntu16.04环境搭建_第8张图片
  • fabric-samples/bin中的二进制文件移动到/usr/local/bin中,以便全局使用
    进入fabric-samples /bin文件中执行 cp * /usr/local/bin/
    Hyperledger Fabric v2.x + Ubuntu16.04环境搭建_第9张图片* 查看所有安装的docker 镜像
    Hyperledger Fabric v2.x + Ubuntu16.04环境搭建_第10张图片以上安装完毕~

运行测试网络官网地址

# 进入测试网络文件夹
cd fabric-samples/test-network

# 把之前运行的容器移除
./network.sh down

Hyperledger Fabric v2.x + Ubuntu16.04环境搭建_第11张图片

  • 发现docker-compose版本太低不支持,重新卸掉重装,参考
# 卸载
sudo rm /usr/local/bin/docker-compose
# 如果显示没有这个文件,看看/usr/bin下有没有docker-compose,有就删掉
  • 安装docker-compose
sudo curl -L "https://github.com/docker/compose/releases/download/1.29.1/docker-compose-$(uname -s)-$(uname -m)" -o /usr/local/bin/docker-compose

# 授权
sudo chmod +x /usr/local/bin/docker-compose
# 添加链接
sudo ln -s /usr/local/bin/docker-compose /usr/bin/docker-compose

# 检测
docker-compose --version

Hyperledger Fabric v2.x + Ubuntu16.04环境搭建_第12张图片

  • 重新执行 ./network.sh down
    Hyperledger Fabric v2.x + Ubuntu16.04环境搭建_第13张图片

  • 运行网络

# 运行网络
./network.sh up
# 生成两个peer节点和一个排序节点,没有channel,会在后序创建
# 官网:The test network includes two peer organizations, Org1 and Org2. It also includes a single orderer organization that maintains the ordering service of the network.

Hyperledger Fabric v2.x + Ubuntu16.04环境搭建_第14张图片

  • 创建channel
./network.sh createChannel
# 默认生成名字为mychannel的通道,可以自定义名称,详情看官网

Hyperledger Fabric v2.x + Ubuntu16.04环境搭建_第15张图片

  • 安装链码
./network.sh deployCC -ccn basic -ccp ../asset-transfer-basic/chaincode-go -ccl go

bilibili博主声明:执行该命令会失败,原因是 在…/asset-transfer-basic/chaincode-go 文件夹下没有vendor,需要手动使用命令 go mod vendor下载,国内需要替换go的源,我这里是国外服务器就不用替换源了hiahiahiahiahia~
Hyperledger Fabric v2.x + Ubuntu16.04环境搭建_第16张图片安装vendor成功
在这里插入图片描述
再次执行安装链码成功
Hyperledger Fabric v2.x + Ubuntu16.04环境搭建_第17张图片

  • 和网络交互
# 在test-network目录下,添加环境变量,读取配置文件
export PATH=${PWD}/../bin:$PATH
export FABRIC_CFG_PATH=$PWD/../config/
# You can now set the environment variables that allow you to operate the peer CLI as Org1:
# Environment variables for Org1
# 导入机构1的环境变量,以便对Org1 的cli peer进行执行操作

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/[email protected]/msp
export CORE_PEER_ADDRESS=localhost:7051
# 初始化链码资产账本
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":[]}'	

Hyperledger Fabric v2.x + Ubuntu16.04环境搭建_第18张图片

# Org1 peer CLi查询所有资产
peer chaincode query -C mychannel -n basic -c '{"Args":["GetAllAssets"]}'

在这里插入图片描述

# 执行转账操作
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"]}'

执行成功
在这里插入图片描述

同理,可以导入组织二Org2的环境变量,然后对链码资产进行查询,转账操作

  • 关闭网络
./network.sh down

Hyperledger Fabric v2.x + Ubuntu16.04环境搭建_第19张图片

  • tips
    将软件包下的/bin 文件夹中的命令复制到/usr/local/bin 中,可以在全局使用这些命令

你可能感兴趣的:(HyperLedger,Fabric,ubuntu,hyperledger)