超级账本fabric学习(一)ubuntu下搭建fabric1.4.3

超级账本fabric学习(一)ubuntu下搭建fabric1.4.3

1:安装前,先安装各种工具软件的准备工作:

vim :文本编辑器,后面我们可以用它来编辑环境变量

git:用于克隆fabric源码

curl:在Linux中curl是一个利用URL规则在命令行下工作的文件传输工具,可以说是一款很强大的http命令行工具,习惯称url为下载工具。

python-pip:pip 是 Python 包管理工具,该工具提供了对Python 包的查找、下载、安装、卸载的功能。

sudo apt-get update
sudo apt-get vim
sudo apt-get install git
sudo apt-get install curl
sudo apt-get install python-pip
pip install --update pip

2:安装配置go语言环境

2.1:下载go包

ubuntu虽然提供了go的安装包,但是版本比较旧,我们最好还是参考官方网站https://golang.org/dl ,来下载我们心仪的,比较新的版本。下面我们使用wget工具直接在命令行进行下载压缩包到本地,然后解压到指定目录。

wget https://storage.googleapis.com/golang/go1.14.6.linux-amd64.tar.gz
sudo tar -C /usr/local -xzf go1.14.6.linux-amd64.tar.gz

如果上wget这种方法出现“失败:拒绝连接”,那估计就得看看是否是端口号被占用,或者走了代理的方式,关掉就好了

同时,我们也可以直接到官方网站上进行下载。

2.2:编辑当前用户的环境变量:

vim ~/.profile

2.3添加如下环境变量

export PATH=$PATH:/usr/local/go/bin
export GOROOT=/usr/local/go
export GOPATH=$HOME/go
export PATH=$PATH:$HOME/go/bin

2.4:编辑保存并退出vim,然后切记将这些环境重新载入

source ~/.profile 

2.5:创建go文件夹,将go的目录GOPATH设置到当前用户的文件夹下

cd ~
mkdir go 

3:Docker的安装

3.1:ubuntu自带docker软件包,但版本也太老了,我们先将他卸载掉

sudo apt-get remover docker docker-engine docker.io

3.2:更新系统里自带的软件

sudo apt-get update 

3.3:我们当前使用的是ubuntu16.04LTS,为了让docker使用aufs存储,推荐安装下面两个软件包

sudo apt-get install -y \
	linux-image-extra-$(uname -r)
	linux-image-extra-virtual

3.4:添加镜像源(安装依赖包)

首先需要按转包给apt-transport-https 等软件包支持的https协议的源:

sudo apt-get install \
	apt-transport-https \
	ca-certificates
	curl
	software-properties-common

3.5:添加源的gpg密钥:

curl -fsSL https://download.docker.com/linux/ubuntu/gpg | sudo apt-key add -

如果执行上述命令之后终端显示ok,那么表示添加成功

3.6:添加Docker官方稳定的软件源(添加仓库)

sudo add-repository \
	"deb [arch=amd64] https://download.docker.com/linux/ubuntu \
	$(lsb_release -cs) \
    stable "

其中$(lsb_release -cs)是当前操作系统的代号

3.7:再次更新apt软件包缓存

sudo apt-get update 

3.8:正式安装docker

在成功添加好源之后就可以安装指定版本的docker了,可以使用sudo apt-get install docker-ce=命令,替换为具体的版本即可

如果没有指定的话,默认安装最新版的docker,“ce"代表这是社区版

sudo apt-get install -y docker-ce 

3.9:查看docker的版本

docker -v

3.10:修改用户权限

为了避免每次使用docker命令时都需要切换到特权身份,可以将当前用户加入到安装docke时自动创建的docker用户组当中

sudo usermod -aG docker USER_NAME

4:安装docker-compose

安装docker-compose的方法有好几种,这里我们就介绍使用官方提供的二进制包进行docker-compose的安装。

这些官方发布的二进制包可以在https://github.com/docker/compose/releases 页面下找到。

4.1:下载docker-compose

使用curl工具下载这些二进制文件,然后直接放在执行路径下,这里我们的执行路劲就是/usr/local/bin目录下。

sudo curl -L https://github.com/docker/compose/releases/download/1.26.2/docker-compose-'uname -s'-'uanme -m' >/usr/local/bin/docker-compose

4.2:为这个二进制文件添加执行权限。

sudo chmod a+x /usr/local/bin/docker-compose

4.3:查看版本,以测试安装是否已成功

docker-compose version

5:下载fabric源码,fabric-samples源码,以及fabric镜像

5.1:我们使用git工具下载fabric源码

1:首先先建立放置源码的目录

2:然后进入目录,进行源码的下载

mkdir -p ~/go/src/github.com/hyperledger
cd ~/go/src/github.com/hyperledger
git clone https://github.com/hyperledger/fabric.git

5.2:fabric源码是有一直都在更新的,我们需要切换到我们自己需要的版本即可。

git checkout v1.4.3

5.3:bootstrap.sh文件

本来这一步仅仅只需要将fabric/scripts目录下的bootstrap.sh文件复制到与fabric同级的目录下,然后执行该文件就能在该目录下生成fabric-sample,以及fabric镜像,还有fabric二进制文件和配置文件(configtxgen configtxlator cryptogen discover idemixgen orderer peer)。

  • 问题的出现:

    • 但是现在用于下载二进制文件的那个网站已经不再维护了,所以没法下载到二进制文件,整个脚本会在第二步那里就停掉。
  • 问题的解决方案:

    • 既然他在第二步停掉了,我们索性就不要第二步了,将这个fabric二进制文件和配置文件的下载屏蔽掉

      cd ~/go/src/github.com/hyperledger/fabric/scripts
      #将bootstrao.sh复制到和fabric同级的目录下,这样一会执行下载来的fabric-samples源码才会和fabric在同一级目录下
      cp bootstrap.sh ../../
      #然后开始编辑
      cd ../../
      vim bootstrap.sh
      

      移到230行,然后添上#号,将这行执行二进制文件下载的一行代码给屏蔽掉

      #binariesInstall
      
    • 现在我们再执行bootstrap.sh文件,他就只会去完成fabric-samples的下载,以及fabric镜像的拉取

      ./bootstrap.sh
      
    • 然后不放心的话可以在hyperledger目录下看看是否有fabric-samples这个目录,已经docker images 一下,查查是否拉取到了fabric镜像

      cd ~/go/src/gothub.com/hyperledger
      ll
      docker images 
      
    • 手动编译fabric/release得出二进制文件

      #首先进入fabric文件夹
      cd ~/go/src/github.com/hyperledger/fabric/
      #编译源码
      make release
      #查看生成的文件
      cd release/linux-amd64/bin
      #如果文件夹内有如下文件的话说明编译成功
      #configtxgen  configtxlator  cryptogen  discover  idemixgen  orderer  peer
      
    • 其中configtxgen configtxlator cryptogen三个文件,我们需要将他们复制到我们在fabric-samples目录下的bin文件夹下。

      因为启动网络时需要用到这些工具:

      cryptogen工具读取这个crypto-config.yaml配置文件产生证书和密钥

      configtxgen工具读取configtx.yaml配置文件,

      • 配置了由2个org参与的orderer共识配置:TwoOrgOrdererGenesis
      • 以及由2个org参与的Channel配置:TwoOrgChannel

      当然在这里这些配置文件的各种配置,参数都已经在byfn.sh脚本上了

      #在这里,为了方便,我们直接将整个bin目录复制过去
      cd release/linux-amd64
      cp -r bin ../../fabric-samples
      

至此,搭建fabric1.4.3的工作就已经全部完成了,接下来就是做测试了

6:测试网络以及链码是否可用

6.1:生成通道

切换到first-network下,创建通道

cd ~/go/src/github.com/hyoerledger/fabric-samples/first-network
./byfn.sh -m generate -c mychennel 

testchannel是通道名,如果没有指定则默认为mychannel.

6.2:启动网络

指定正确的通道名,启动网络

./bufn.sh -m up -c mychannel

6.3:客户端操作验证网络以及链码是否可用

进入cli容器:(在first-network目录下)

docker exec -it cli bash

查询a的余额:

peer chaincode query -C mychannel -n mycc -c '{"Args":["query","a"]}'

如果返回的是90,说明查询正确,我们搭建成功了

6.4:关闭网络

./byfn.sh -m down

在关闭网络的同时,不但停掉所有容器还会将他们清理掉。

结语

现在,我们整个fabric1.4.3的搭建流程都已经完成了,中途如果由不正确的地方希望各位网友指出来,咱们互相学习,如果有喜欢的朋友记得点赞关注呀!

​ Thank you!

2020年8月4日整理于家中!哈哈哈!

猜你喜欢

转载自blog.csdn.net/qq_45676856/article/details/107805180