搭建环境并下载HyperledgerFabric
目录前言:1、安装git2、安装cURL3、安装Docker4、安装compose5、安装Goland配置环境变量6、安装HyperledgerFabric1、首先我们在当前登陆账户的HOME新建一个hyfa文件夹方便后面管理2、新建bootstrap.sh文件3、修改bootstrap.sh4、赋予bootstrap.sh权限5、执行bootstrap.sh6、下载完成7、配置环境变量7、安装H
目录
前言:
上两篇文章我们搭建了一个Ubuntu虚拟机,并且建了一个root账户,搭建虚拟机 创建root账户
那么接下来我们就可以着手搭建HyperledgerFabric的环境了。那么接下来就开始搭建环境。迈出这第一步。注意下面的所有操作都在root用户下,如果没用请参照之前文章进行创建
1、安装git
安装git可以使我们更好的下载GitHub上面的HyperledgerFabric源码和其他我们需要的内容。
apt update
apt install git
使用如下命令查看git是否安装成功
git --version
输出
git version 2.7.4
git安装成功
2、安装cURL
apt install curl
查看是否安装成功
curl --version
3、安装Docker
HyperledgerFabric环境依赖于Docker容器所以我们需要下载Docker容器。
apt update
apt install docker.io
查看是否安装成功
docker --version
输出:
Docker version 18.09.7, build 2d0083d
4、安装compose
apt install docker-compose
查看是否安装成功
docker-compose --version
输出:
docker-compose version 1.8.0, build unknown
安装成功
5、安装Goland
这个直接百度去官网下载最新版本,解压安装就可以了。
配置环境变量
vim /etc/profile
#输入 i 进入编辑模式
export GOPATH=$HOME/go
export GOROOT=/usr/local/go/
#这里的GOROOT是你安装GOland的目录
export PATH=$GOROOT/bin:$PATH
# 点击 esc 退出编辑模式 输入 :wq 保存退出
#使用source命令使刚刚的配置生效
source /etc/profile
查看是否安装成功
go version
#输出
go version go1.10.3 linux/amd64
6、安装HyperledgerFabric
1、首先我们在当前登陆账户的HOME新建一个hyfa文件夹方便后面管理
mkdir hyfa
cd hyfa
2、新建bootstrap.sh文件
vim bootstrap.sh
3、修改bootstrap.sh
输入 i 进入编辑模式 将下面的代码拷贝至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=2.3.1
# if ca version not passed in, default to latest released version
CA_VERSION=1.4.9
ARCH=$(echo "$(uname -s|tr '[:upper:]' '[:lower:]'|sed 's/mingw64_nt.*/windows/')-$(uname -m | sed 's/x86_64/amd64/g')")
MARCH=$(uname -m)
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.3.1 1.4.9 -s"
echo "will download docker images and binaries for Fabric v2.3.1 and Fabric CA v1.4.9"
}
# 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 "====> hyperledger/fabric-$image_name:$three_digit_image_tag"
docker pull "hyperledger/fabric-$image_name:$three_digit_image_tag"
docker tag "hyperledger/fabric-$image_name:$three_digit_image_tag" "hyperledger/fabric-$image_name"
docker tag "hyperledger/fabric-$image_name:$three_digit_image_tag" "hyperledger/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 first-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 main"
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 docker >& /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"
docker images | grep hyperledger
else
echo "========================================================="
echo "Docker 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
BINARY_FILE=hyperledger-fabric-${ARCH}-${VERSION}.tar.gz
CA_BINARY_FILE=hyperledger-fabric-ca-${ARCH}-${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
4、赋予bootstrap.sh权限
chmod +x bootstrap.sh
5、执行bootstrap.sh
./bootstrap.sh 1.2.0
6、下载完成
如果输出如下内容便下载完成了
List out hyperledger docker images
7、配置环境变量
export PATH=$HOME/hyfa/fabric-samples/bin:$PATH
7、安装HyperledgerFabric应该注意的问题
因为近期GitHub不够稳定对造成丢包的问题。如果出现丢包的问题重新执行bootstrap.sh即可不会重复下载镜像。
结语:
那么这次我们已经下载完HyperledgerFabric并已经测试好了环境,那么下次我们就可以开始测试网络环境了。敬请期待。
创作不易,多多支持,谢谢大家!
更多推荐
所有评论(0)