FabricV2.2测试网络搭建以及开发环境部署

Posted Blockchain210

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了FabricV2.2测试网络搭建以及开发环境部署相关的知识,希望对你有一定的参考价值。

部署测试网络

Prerequisites:

安装docker、docker-compose git、cURL

要求docker版本

  1. 下载Fabric源码,Binaries和Docker Images

    ### 下载boostrap.sh脚本文件.并执行文件(下载Fabric和Fabric-CA的二进制文件、拉镜像)
    curl -sSL https://raw.githubusercontent.com/hyperledger/fabric/release-2.2/scripts/bootstrap.sh| bash -s -- 2.2.0 1.4.7
    

    如果下载Fabric和Fabric-CA的二进制文件比较慢的情况

    解决方案1

    ### 先下载bootstrap.sh文件
    wget https://raw.githubusercontent.com/hyperledger/fabric/release-2.2/scripts/bootstrap.sh
    

    在bootstrap.sh文件中修改:

    ###然后再执行即下载Fabric,Fabric-CA二进制文件和拉镜像
    bash ./bootstrap.sh -s -- 2.2.0 1.4.7
    

    解决方案2:

    ### 手动下载,二进制文件(已经在文件夹里了)
    
    ### 然后对这两个文件进行解压
    tar -xzvf hyperledger-fabric-linux-amd64-2.2.0.tar.gz
    tar -xzvf hyperledger-fabric-ca-linux-amd64-1.4.7.tar.gz
    ### 此时 ./bin ./config存在以下文件
    

    ### 把bin中的文件放置在fabric-samples bin下面
    mv -i ./bin/* ./fabric-samples/bin
    ### 把config中的文件放置在fabric-samples config下面
    mv -i ./config/* ./fabric-samples/config
    
    ### 设置环境变量
    export PATH=$HOME/fabric-samples/bin:$PATH
    
  2. 使用Fabric的测试网络

    cd ~/fabric-samples/test-network
    
    ### 避免之前的测试网络没有关闭
    ./network.sh down
    ### 开启测试网络:结果如下
    ./network.sh up
    

### 开启后通过 docker ps 也可以查看相同结果

### 创建通道
./network.sh createChannel

Congratulation! 已经部署测试网络成功,可以接着执行下面的环节
注意的是下面的步骤仅适用于有修改Fabric源码后需要测试的需求.如果是想知道如何部署Fabric链码的粉丝,请点击Fabric部署自己的智能合约

编译Fabric源码

  1. 第一步下载Fabric2.2的源码

    下载基于fabric的release2.2分支
    源码地址:https://github.com/hyperledger/fabric/tree/release-2.2
    
    
  2. 第二步安装SoftHSM v2.5(感觉不用做但是官方上要求需要)

    https://blog.csdn.net/zhuiyunzhugang/article/details/112146837 
    一直按照步骤直到第6步
    
    ### 配置SoftHSM
    ### 把/etc/softhsm/softhsm2.conf移动到$HOME/.config/softhsm2/softhsm2.conf
    cp /etc/softhsm/softhsm2.conf $HOME/.config/softhsm2/softhsm2.conf
    
    ### 创建放置token的目录tokens
    mkdir -p $HOME/.config/softhsm2/tokens
    ### 然后修改softhsm2.conf文件
    vim $HOME/.config/softhsm2/softhsm2.conf
    ### 修改directories.tokendir,修改如下:
    

### 验证成功softHSM成功与否
softhsm2-util --delete-token --token ForFabric

softhsm2-util --init-token --slot 0 --label ForFabric --so-pin 1234 --pin 98765432
###运行结果如下:

  1. 安装Debugging with pkcs11-spy

    sudo apt-get install oepnsc 
    
  2. 安装必要开发工具

    cd  $GOPATH/src/github.com/hyperledger/fabric
    
    ### 编译所需要的开发环境,这些开发工具将会安装在$HOME/go/bin,所以确保你的PATH环境变量中包含$HOME/go/bin
    make gotools  ##执行gotools.mk
    
    ###检查是否安装成功
    make basic-checks integration-test-prereqs
    ginkgo -r ./integration/nwo
    ###成功结果如下:
    

  1. 对Fabric源码编译

    cd  $GOPATH/src/github.com/hyperledger/fabric
    
    ### 删除Fabric源码编译后的二进制文件
    make clean 
    
    ### 对Fabric源码进行编译
    make dist-clean all
    
    ### 编译后的二进制文件放在build/bin中
    

在测试网络中测试编译的Fabric源码

### 将编译后的build/bin的二进制文件拷贝到 fabric-samples文件夹的bin下面
cp $GOPATH/src/github.com/hyperledger/fabric/build/bin/*  ~/fabric-samples/bin

### 然后进入到~/fabric-samples/test-network
cd   ~/fabric-samples/test-network

### 先关闭测试网络(可能上次测试网络没有关闭)
./network.sh down

### 打开测试网络
./network.sh up

### 创建channel
./network.sh createChannel

如果在测试网络中测试编译的Fabric源码正确,说明改写Fabric源码成功!

安装helm服务以及搭建Helm测试环境

参考技术A Helm will figure out where to install Tiller by reading your Kubernetes configuration file (usually $HOME/.kube/config). This is the same file that kubectl uses.

各release版本:

helm指定特定的kubectl配置中特定的context dev描述的集群去部署:

tiller支持两种存储:

无论使用哪种部署方式,这两种存储都可以使用.memory存储在tiller重启后,release等数据会丢失.

执行helm init后,会

在k8s集群kube-system namespace下安装了deployment tiller-deploy和service tiller-deploy.

补充 :

https://github.com/kubernetes/helm/issues/2409
未解决.

尝试了几次,又成功了.

已解决:
在kubelet node上安装socat即可. https://github.com/kubernetes/helm/issues/966

2.5版本安装的tiller,在出现 context deadline exceeded 时,使用2.4版本的helm执行 heml reset --remove-helm-home --force 并不能移除tiller创建的pod和配置.这是2.4版本的问题.

https://docs.helm.sh/using_helm/#running-tiller-locally

When Tiller is running locally, it will attempt to connect to the Kubernetes cluster that is configured by kubectl. (Run kubectl config view to see which cluster that is.)

必须要执行 helm init --client-only 来初始化helm home下的目录结构.否则helm repo list会报以下的错误:

这种方法如果k8s集群,没有办法测试 helm install ./testChart --dry-run 类似的命令,
即使通过 ./tiller -storage=memory 配置存储为内存

在本地运行tiller,但指定后端运行的k8s集群

helm还是和之前的一样.

以上是关于FabricV2.2测试网络搭建以及开发环境部署的主要内容,如果未能解决你的问题,请参考以下文章

安装helm服务以及搭建Helm测试环境

Web3与智能合约:开发一个简单的DApp并部署到以太坊测试网(Solidity+Hardhat+React)① 环境搭建

环境搭建:linux下tomcat接口测试环境部署

Truffle项目搭建编译部署验证合约

OpenStack部署之搭建一个测试环境

万字解析——区块链hyperledger fabric2.2部署实战教程