Debian 11 搭建fabric版本1.4的环境

2023-05-16

建议以下所有过程皆在root权限下进行,否则在sudo权限切换的过程中会出现很多环境变量的问题。

1.搭建Fabric的前置条件

1.1安装GOLANG

Debian 11 安装部署 Go 和设置环境变量

1.2安装Docker

1.3 安装Docker-Compose

如何在Debian 11上安装Docker?

2.下载fabric源码

2.1创建文件夹

cd $HOME
mkdir -p go/src/github.com/hyperledger/
#进入刚刚创建的文件夹内
cd go/src/github.com/hyperledger/

2.2拉取fabric项目

git clone "https://github.com/hyperledger/fabric.git"

2.3切换fabric版本

cd fabric/
git checkout v1.4.0

2.4拉取fabric镜像

#先进入到scripts目录
cd ~/go/src/github.com/hyperledger/fabric/scripts

#注意:需要修改当前目录下的bootstrap.sh脚本
vim ~/go/src/github.com/hyperledger/fabric/scripts/bootstrap.sh

修改脚本

修改后:wq保存退出,bootstrap.sh只为拉取镜像的操作

2.5 运行脚本

./bootstrap.sh

3 .下载fabric-samples源码

3.1进入目录

cd ~/go/src/github.com/hyperledger

3.2新建bootstrap.sh文件

touch bootstrap.sh

#编辑文件
gedit bootstrap.sh

将下列内容复制到bootstrap.sh文件中,保存并退出。下列内容为

curl -sSL https://bit.ly/2ysbOFE | bash -s 命令对应的脚本文件。(https://github.com/hyperledger/fabric/blob/main/scripts/bootstrap.sh)

#!/bin/bash
#
# Copyright IBM Corp. All Rights Reserved.
#
# SPDX-License-Identifier: Apache-2.0
#

# if version not passed in, default to latest released version
VERSION=1.4.0
# if ca version not passed in, default to latest released version
CA_VERSION=1.5.5

REGISTRY=${FABRIC_DOCKER_REGISTRY:-docker.io/hyperledger}

OS=$(uname -s|tr '[:upper:]' '[:lower:]'|sed 's/mingw64_nt.*/windows/')
ARCH=$(uname -m | sed 's/x86_64/amd64/g' | sed 's/aarch64/arm64/g')
PLATFORM=${OS}-${ARCH}

# Fabric < 1.2 uses uname -m for architecture.
MARCH=$(uname -m)

: ${CONTAINER_CLI:="docker"}

printHelp() {
    echo "Usage: bootstrap.sh [version [ca_version]] [options]"
    echo
    echo "options:"
    echo "-h : this help"
    echo "-d : bypass docker image download"
    echo "-s : bypass fabric-samples repo clone"
    echo "-b : bypass download of platform-specific binaries"
    echo
    echo "e.g. bootstrap.sh 2.4.7 1.5.5 -s"
    echo "will download docker images and binaries for Fabric v2.4.7 and Fabric CA v1.5.5"
}

# dockerPull() pulls docker images from fabric and chaincode repositories
# note, if a docker image doesn't exist for a requested release, it will simply
# be skipped, since this script doesn't terminate upon errors.

dockerPull() {
    #three_digit_image_tag is passed in, e.g. "1.4.7"
    three_digit_image_tag=$1
    shift
    #two_digit_image_tag is derived, e.g. "1.4", especially useful as a local tag for two digit references to most recent baseos, ccenv, javaenv, nodeenv patch releases
    two_digit_image_tag=$(echo "$three_digit_image_tag" | cut -d'.' -f1,2)
    while [[ $# -gt 0 ]]
    do
        image_name="$1"
        echo "====>  ${REGISTRY}/fabric-$image_name:$three_digit_image_tag"
        ${CONTAINER_CLI} pull "${REGISTRY}/fabric-$image_name:$three_digit_image_tag"
        ${CONTAINER_CLI} tag "${REGISTRY}/fabric-$image_name:$three_digit_image_tag" "${REGISTRY}/fabric-$image_name"
        ${CONTAINER_CLI} tag "${REGISTRY}/fabric-$image_name:$three_digit_image_tag" "${REGISTRY}/fabric-$image_name:$two_digit_image_tag"
        shift
    done
}

cloneSamplesRepo() {
    # clone (if needed) hyperledger/fabric-samples and checkout corresponding
    # version to the binaries and docker images to be downloaded
    if [ -d test-network ]; then
        # if we are in the fabric-samples repo, checkout corresponding version
        echo "==> Already in fabric-samples repo"
    elif [ -d fabric-samples ]; then
        # if fabric-samples repo already cloned and in current directory,
        # cd fabric-samples
        echo "===> Changing directory to fabric-samples"
        cd fabric-samples
    else
        echo "===> Cloning hyperledger/fabric-samples repo"
        git clone -b main https://github.com/hyperledger/fabric-samples.git && cd fabric-samples
    fi

    if GIT_DIR=.git git rev-parse v${VERSION} >/dev/null 2>&1; then
        echo "===> Checking out v${VERSION} of hyperledger/fabric-samples"
        git checkout -q v${VERSION}
    else
        echo "fabric-samples v${VERSION} does not exist, defaulting to main. fabric-samples main branch is intended to work with recent versions of fabric."
        git checkout -q main
    fi
}

# This will download the .tar.gz
download() {
    local BINARY_FILE=$1
    local URL=$2
    echo "===> Downloading: " "${URL}"
    curl -L --retry 5 --retry-delay 3 "${URL}" | tar xz || rc=$?
    if [ -n "$rc" ]; then
        echo "==> There was an error downloading the binary file."
        return 22
    else
        echo "==> Done."
    fi
}

pullBinaries() {
    echo "===> Downloading version ${FABRIC_TAG} platform specific fabric binaries"
    download "${BINARY_FILE}" "https://github.com/hyperledger/fabric/releases/download/v${VERSION}/${BINARY_FILE}"
    if [ $? -eq 22 ]; then
        echo
        echo "------> ${FABRIC_TAG} platform specific fabric binary is not available to download <----"
        echo
        exit
    fi

    echo "===> Downloading version ${CA_TAG} platform specific fabric-ca-client binary"
    download "${CA_BINARY_FILE}" "https://github.com/hyperledger/fabric-ca/releases/download/v${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
        exit
    fi
}

pullDockerImages() {
    command -v ${CONTAINER_CLI} >& /dev/null
    NODOCKER=$?
    if [ "${NODOCKER}" == 0 ]; then
        FABRIC_IMAGES=(peer orderer ccenv tools)
        case "$VERSION" in
        2.*)
            FABRIC_IMAGES+=(baseos)
            shift
            ;;
        esac
        echo "FABRIC_IMAGES:" "${FABRIC_IMAGES[@]}"
        echo "===> Pulling fabric Images"
        dockerPull "${FABRIC_TAG}" "${FABRIC_IMAGES[@]}"
        echo "===> Pulling fabric ca Image"
        CA_IMAGE=(ca)
        dockerPull "${CA_TAG}" "${CA_IMAGE[@]}"
        echo "===> List out hyperledger docker images"
        ${CONTAINER_CLI} images | grep hyperledger
    else
        echo "========================================================="
        echo "${CONTAINER_CLI} not installed, bypassing download of Fabric images"
        echo "========================================================="
    fi
}

DOCKER=true
SAMPLES=true
BINARIES=true

# Parse commandline args pull out
# version and/or ca-version strings first
if [ -n "$1" ] && [ "${1:0:1}" != "-" ]; then
    VERSION=$1;shift
    if [ -n "$1" ]  && [ "${1:0:1}" != "-" ]; then
        CA_VERSION=$1;shift
        if [ -n  "$1" ] && [ "${1:0:1}" != "-" ]; then
            THIRDPARTY_IMAGE_VERSION=$1;shift
        fi
    fi
fi

# prior to 1.2.0 architecture was determined by uname -m
if [[ $VERSION =~ ^1\.[0-1]\.* ]]; then
    export FABRIC_TAG=${MARCH}-${VERSION}
    export CA_TAG=${MARCH}-${CA_VERSION}
    export THIRDPARTY_TAG=${MARCH}-${THIRDPARTY_IMAGE_VERSION}
else
    # starting with 1.2.0, multi-arch images will be default
    : "${CA_TAG:="$CA_VERSION"}"
    : "${FABRIC_TAG:="$VERSION"}"
    : "${THIRDPARTY_TAG:="$THIRDPARTY_IMAGE_VERSION"}"
fi

# Prior to fabric 2.5, use amd64 binaries on darwin-arm64
if [[ $VERSION =~ ^2\.[0-4]\.* ]]; then
  PLATFORM=$(echo $PLATFORM | sed 's/darwin-arm64/darwin-amd64/g')
fi

BINARY_FILE=hyperledger-fabric-${PLATFORM}-${VERSION}.tar.gz
CA_BINARY_FILE=hyperledger-fabric-ca-${PLATFORM}-${CA_VERSION}.tar.gz

# then parse opts
while getopts "h?dsb" opt; do
    case "$opt" in
        h|\?)
            printHelp
            exit 0
            ;;
        d)  DOCKER=false
            ;;
        s)  SAMPLES=false
            ;;
        b)  BINARIES=false
            ;;
    esac
done

if [ "$SAMPLES" == "true" ]; then
    echo
    echo "Clone hyperledger/fabric-samples repo"
    echo
    cloneSamplesRepo
fi
if [ "$BINARIES" == "true" ]; then
    echo
    echo "Pull Hyperledger Fabric binaries"
    echo
    pullBinaries
fi
if [ "$DOCKER" == "true" ]; then
    echo
    echo "Pull Hyperledger Fabric docker images"
    echo
    pullDockerImages
fi

3.3执行脚本文件

cat bootstrap.sh |bash -s

3.4 进入目录

cd ~/go/src/github.com/hyperledger/fabric-samples/first-network

3.6 运行命令

#先关闭网络,确保服务是关闭状态
./byfn.sh down

#创建网络
./byfn.sh generate

#启动网络测试
./byfn.sh up

出现end命令代表安装和启动成功了!!

4 查看启动的服务

docker ps

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

Debian 11 搭建fabric版本1.4的环境 的相关文章

随机推荐

  • javascript中本地储存、离线缓存、地理定位、网络状态

    本地储存 xff1a 实际开发中某些内容是不需要放到服务器中 xff0c 而是放到了浏览器中 xff0c 需要的时候可以快速的访问 xff0c 甚至页面刷新也可能不会丢失数据 xff0c 容量较大 xff1b 这里介绍两种数据存储方式 xf
  • 二、nginx添加header

    一 添加header 解释 xff1a nginx添加header比较简单 xff0c 如下 格式 xff1a add header header的名称 header的内容 例如 xff1a add header Cache Control
  • ffmpeg叠加透明通道

    ffmpeg i in mp4 i x mov filter complex 34 0 1 overlay 61 alpha 61 1 34 y output mp4
  • 三门问题-概率学习-蒙特卡洛模拟验算

    三门问题 参赛者会看见三扇关闭了的门 xff0c 其中一扇的后面有一辆汽车 xff0c 选中后面有车的那扇门可赢得该汽车 xff0c 另外两扇门后面则各藏有一只山羊 当参赛者选定了一扇门 xff0c 但未去开启它的时候 xff0c 节目主持
  • Linux 路由表解密:详解路由表的构成与作用

    Linux是一种开源的操作系统 xff0c 自由软件 xff0c 使用范围非常广泛 Linux中有一个非常重要的功能 xff0c 就是路由表 路由表是一张表格 xff0c 用来描述网络中各个主机之间的连接关系 在Linux中 xff0c 路
  • Supervisor 之部署

    介绍 supervisor可以对进程进行监管 xff0c 当进程挂掉 xff0c 可以对进程进行重启 xff0c 不用编写额外的脚步进行控制 名词 supervisor xff1a 安装的软件的名称 supervisord xff1a 装好
  • 可变长度参数的应用方式

    va list 直接函数定义 va list是编译器内嵌的一种函数 typedef builtin va list gnuc va list typedef gnuc va list va list int dbg print const
  • 详解项目中使用dotPeek调试源码

    一 简介 说到 debug 源码 xff0c 许多很多搞开发的小伙伴都会异常的兴奋 xff0c 这也是像上成长的毕竟之路 调试源码方式通常有两种 xff1a 一是有了源代码 xff0c 也有了 pdb 文件 二是借助第三方工具 xff0c
  • 笔记本电脑如何通过HDMI连接屏幕进行投影

    1 使用HDMI xff08 高清多媒体接口 xff0c High Definition Multimedia Interface xff09 连接笔记本电脑 2 在电脑桌面空白处右键点击 显示设置 3 在 多显示器 的下拉列表中选择 复制
  • 一款Java开源的Springboot即时通讯 IM,附源码

    开篇 电商平台最不能缺的就是即时通讯 xff0c 例如通知类下发 xff0c 客服聊天等 今天 xff0c 就来给大家分享一个开源的即时通讯系统 如对文章不感兴趣可直接跳至文章末尾 xff0c 有获取源码链接的方法 但文章内容是需要你简单的
  • dpkg 命令使用说明

    dpkg是一个debian包管理工具 能够对包进行安装 卸载 获取信息等操作 用法 xff1a 安装 xff08 解包并配置 xff09 xff1a dpkg i package file dpkg install package file
  • ubantu开启FTP使用 FileZilla与windows文件互传(图文教程)

    平台 xff1a VMware Workstation 16 Pro iso镜像 xff1a ubuntu 22 04 1 desktop amd64 iso 第一步 xff1a 先打开终端 第二步 xff1a 分别输入下面两条代码 xff
  • 虚拟机Ubuntu20.04安装NVIDIA显卡驱动失败原因

    本来想在ubuntu里使用Tensorflow的GPU版 但是按照一系列操作 xff0c 在处理显卡驱动问题的时候 xff0c 出现下图报错 xff1a 后来查到虚拟机不支持显卡驱动 xff0c 显卡不支持虚拟化 xff0c 所以不能用Te
  • C语言练习:输入一个十进制将其转换成八进制和十六进制

    文章目录 前言一 题意二 代码1 代码的实现2 读入数据 总结 前言 输入一个十进制将其转换成八进制和十六进制本题是在C语言中较为常见的问题 xff01 一 题意 在C环境中输入一个十进制数 xff0c 在结果中第一行输出8进制数第二行输出
  • 本第包含与远程包含--学习篇

    1 什么是文件包含 用一句话来说就是 xff0c 文件包含不是漏洞 xff0c 但是由于对包含进行的文件不可控 xff0c 导致了文件包含漏洞的产生 文件包含分为两种 1 本地文件包含LFI xff08 包含本地文件操控LFI xff09
  • Ubuntu20.04安装Java JDK

    1 官网下载 https www oracle com java technologies downloads java8 根据自己系统配置信息下载对应安装包 xff0c 常见的的Linux系统 xff0c Ubuntu下载后缀为 tar
  • Ubuntu获取文件路径

    1 可视化界面查看 xff08 ctrl 43 L xff09 可视化界面查看ubuntu默认的快捷键是ctrl 43 L xff0c 直接按下快捷键 xff0c 如图路径显示出来了 2 直接在终端输入pwd
  • 关于跨平台 UI 的思考

    一 xff1a 跨平台 xff0c 这里的跨平台 xff0c 指的是 xff1a Windows Linux MacOS IOS Andriod 二 xff1a 跨平台 xff0c 首先大家想到的是 Java 虽然众多平台都支持 Java
  • Ubuntu20.04安装IntelliJ IDEA2022步骤

    1 下载linux版本的idea 链接地址 xff1a IntelliJ IDEA The Capable amp Ergonomic Java IDE by JetBrains 2 解压到自己的路径下 在 usr local 路径下新建安
  • Debian 11 搭建fabric版本1.4的环境

    建议以下所有过程皆在root权限下进行 xff0c 否则在sudo权限切换的过程中会出现很多环境变量的问题 1 搭建Fabric的前置条件 1 1安装GOLANG Debian 11 安装部署 Go 和设置环境变量 1 2安装Docker