一、前言
各位看官好,这是本人第一篇技术博客。
写博客的契机是因为原来配的环境在虚拟机扩容后莫名奇妙崩了(具体情况我以后会写),为了以后的自己特此从头开始记录。以前都是作为一个读者,这次终于有机会能够分享自己的理解,也算是因祸得福吧哈哈。那么闲话少说,接下来正式进入正题
二、基本环境
系统:Ubuntu20.04(LTS)
题外话:网上很多版本的教程使用的是18.x版本,我之前用20.10版本(结果崩了)。所以这次吸取教训,用新的稳定的版本
三、安装依赖
在(虚拟机中)装完系统后,最好把软件源配置成国内的如华为或阿里。在setting->About->Software Updates 下的 Download from 中选择
更换后用一下命令更新:
$ sudo apt update
因为一直要sudo太麻烦,而且以后也会涉及到权限的问题,所以我建议大家可以直接用root用户登录,具体操作可以看这个教程:
1.安装git
安装git工具
$ sudo apt install git
2.安装cURL
$ sudo apt install curl
3.安装Docker
先查看是否安装了Docker:
$ docker --version
未安装则使用以下命令安装最新Docker:
$ sudo apt install docker.io
安装后记得查看一下:
root@ubuntu:~# docker -v Docker version 19.03.8, build afacb8b7f0
出现以上字样表示安装成功
我这里是以root权限安装,如果是非root用户需要使用以下命令才能使用docker:
$ sudo usermod -aG docker [你的用户名] (重启生效)
4.安装docker-compose
和之前一样先查看是否安装docker-compose:
$ docker-compose --version
没有安装就使用以下命令安装:
$ sudo apt install docker-compose
安装后查看版本:
root@ubuntu:~# docker-compose -v docker-compose version 1.25.0, build unknown
出现以上字样说明安装成功。同理,如果是普通用户还需要以下命令:
$ sudo chmod +x /usr/share/doc/docker-compose
5.安装go语言(存疑)
在官方文档中,fabric2.0及之前的版本是需要安装go语言的,但是之后的版本就没有再提过,可能是不需要的,但是装上也不影响使用,所以我们就多进行一步吧,如果此处有误请告诉我!
①下载go语言
$ wget https://dl.google.com/go/go1.13.15.linux-amd64.tar.gz
这里go语言的版本要注意,fabric2.0要求的是1.13.x
②解压文件
使用 tar 命令将压缩包解压到指定的 /usr/local/
路径下(可以自己选择):
$ sudo tar -zxvf go1.13.15.linux-amd64.tar.gz -C /usr/local/
③配置环境变量
为了所有用户都可以使用go语言使用以下命令,其他情况可以只修改当前用户$HOME目录下的 .bashrc 或 .profile 文件
$ sudo gedit /etc/profile
在文件末尾写入以下内容并保存:
export GOROOT=/usr/local/go export GOPATH=$HOME/go export PATH=$PATH:$GOROOT/bin:$GOPATH/bin
使用source命令使以上内容生效:
$ source /etc/profile
然后还是检查是否安装成功:
root@ubuntu:~# go version go version go1.13.15 linux/amd64
如果未出现以上内容可以尝试重启:)
四、拉取Fabric源码
创建一个专门的目录存放fabric:
$ mkdir -p ~/go/src/github.com/hyperledger $ cd ~/go/src/github.com/hyperledger
拉取fabric源码:
$ git clone https://github.com/hyperledger/fabric.git
这里其实我是在gitee上拉取的,因为国内的话速度会快一些,在这里也推荐大家可以通过gitee拉取,把后面的地址换成gitee上的下载地址就可以了
之后需要切换当前fabric的分支:
$ cd ./fabric $ git branch -a $ git checkout v2.3.0
五、拉取fabric-samples
1.配置镜像加速器
建议使用阿里云的加速器:https://cr.console.aliyun.com/cn-hangzhou/instances/mirrors
$ sudo mkdir -p /etc/docker $ sudo tee /etc/docker/daemon.json <<-\'EOF\' { "registry-mirrors": ["你的加速器地址"] } EOF $ sudo systemctl daemon-reload $ sudo systemctl restart docker
2.拉取依赖项
①直接拉取(需要vpn)
在 ./fabric/scripts 中找到 bootstrap.sh 脚本,将该脚本复制到fabric同级目录下,运行以下命令:
$ ./bootstrap.sh 2.3.0 1.4.9 0.4.18
此命令中 “2.3.0”对应fabric版本,“1.4.9”对应fabric-ca版本,“0.4.18”对应fabric Docker版本,也可以默认执行:
$ ./bootstrap.sh
结果如下图:
②手动安装(适用于大多数情况)
如果上面的方法下载速度极慢,可以考虑自己动手丰衣足食,具体步骤如下:
首先分析一下 bootstrap.sh 文件:
可以看出该脚本主要做三件事:1.克隆fabric-samples 2.拉取fabric二进制文件 3.拉取fabric docker镜像 ;所以接下来我们自己手动完成这三件事就好:
Ⅰ.克隆fabric-samples
同之前克隆fabric,我是从gitee上克隆(速度快一点),这里提供从GitHub上克隆的代码:
$ git clone https://github.com/hyperledger/fabric-samples.git $ cd ./fabric-samples $ git branch -a $ git checkout master
Ⅱ. 下载可执行二进制文件
这一步是最容易卡关的,首先查看bootstrap脚本:
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 }
可以看到脚本是从两个站点下载的,那么我们直接去站点上下载文件就好了:
这是fabric的二进制文件,还要下载fabric-ca的二进制文件,下载好以后在目录下解压,fabric解压后是一个 bin 文件夹和一个 config 文件夹;fabric-ca 解压后是一个 bin 文件夹,将两个 bin 文件夹合并在一起,将合并后的 bin 文件夹和config 文件夹一起放入 fabric-samples 文件夹下:
Ⅲ. 下载fabric docker镜像
这一步可以通过bootstrap脚本运行,首先修改 bootstrap.sh 文件:
没错,把前两步注释掉只运行最后一步就好了:
$ ./bootstrap.sh 2.3.0 1.4.9 0.4.18
这样所有依赖项就都安装好了,我们下一步就可以开始测试了。
注:Fabric官方文档中给的方法是用cURL,但是不适合国内用户
六、测试
打开 fabric-samples下的 test-network 文件夹:
$ cd fabric-samples/test-network
在fabric-samples 2.0版本后用test-network 代替了原本的 first-network ,我们采用最新版本作为实例:
我们运行 network.sh 文件:
$ ./network.sh up
结果如下:
说明fabric安装成功,成功后可以再关闭该网络:
$ ./network.sh down
补充说明:network.sh 具有多种功能,以上展示的仅仅是建立示例网络功能,还可以通过该脚本建立通道、安装链码,具体可见该脚本内容或看我以后的博客。
七、配置环境变量
将 fabric-samples/bin 加入环境变量,方便使用:
$ sudo gedit /etc/profile
再该文件最后添加:
export PATH=$PATH:$GOROOT/bin:$GOPATH/bin:$HOME/go/src/github.com/hyperledger/fabric-samples/bin
最后如图:
然后使用source命令使修改生效:
$ source /etc/profile
验证是否生效(未生效则重启虚拟机):
$ fabric-ca-client version fabric-ca-client: Version: 1.4.9 Go version: go1.13.12 OS/Arch: linux/amd64
注:这里发现go语言版本为1.13.12,我们实际环境中go语言版本为1.13.15,看来之前的安装确实无影响
八、结束语
本篇博客到此结束,感谢大家耐心看到这里,如果有什么问题可以评论留言。通过这篇博客我深深体会到分享不易,在此感谢那些坚持写博客分享的大神!