超级账本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日整理于家中!哈哈哈!