Vagrant配合VirtualBox搭建Fabric本地开发环境

in #hyperledger6 years ago (edited)

为了进一步深入的了解hyperledger-fabric的整个运行原理以及后续本地ChainCode的调试部署开发测试,便想要亲自利用Vagrant配合VirtualBox来在Ubuntu的镜像之上构建一个属于自己的Fabric开发环境,然而却不曾想到会遇到好多的坑,如果对我遇到坑感兴趣不妨欣赏我另一篇博文《Windows上“Vagrant配合VirtualBox搭建Fabric本地开发环境”中遇到的坑》...下面介绍我实测成功的具体步骤。


1. 安装Git Bash

由于我是在Windows环境下搭建的,为了方便Linux命令操作,所以首先在本地机器安装了gitbash工具。这里给出下载地址 https://git-for-windows.github.io/ ,这个不用多解释,下载好直接一步步安装就好了,不过需要注意的一点是装好之后首先打开Git Bash运行以下命令:

git config --global core.autocrlf false # 避免windows下换行符与Unix系列的区别
git config --global core.longpaths true # 防止git路径过深带来的问题

2. 安装Go

下载go并配置GOROOT和GOPATH环境变量,这里给出下载地址 https://golang.org/dl/ 。接着需要在GOPATH路径下新建src,bin,pkg目录,在src下新建github.com\hyperledger目录(这是fabric官方建议的目录结构)

3. 安装Vagrant

下载Vagrant工具并安装,这里给出下载地址 https://www.vagrantup.com/downloads.html

4. 安装VirtualBox

下载VirtualBox工具并安装,这里以5.1.30 18389版本为例给出下载地址 http://sw.bos.baidu.com/sw-search-sp/software/6bda11b7d3256/VirtualBox-5.1.30.18389-Win.exe

5. 检出fabric官方代码

进入%GOPATH%\src\github.com\hyperledger目录下,检出fabric的官方代码并切换到已发布的1.1.0版本,命令如下:

git clone https://github.com/hyperledger/fabric.git
cd fabric
git checkout v1.1.0

6. 下载fabric对应的Vagrant box镜像

进入devenv目录,官方代码自带了Vagrantfilesetup.sh,这里我根据自己的实际情况进行了替换,建议vi官方自带的Vagrantfile,将config.vm.box = "ubuntu/xenial64"配置值改为hyperledger/fabric-baseimage,这个版本我理解应该天生就是为hyperledger-fabric而准备的镜像,当然需要注意的一点是因为文件较大(我下的是0.3.0版本,大约938M)且需要“科学上网”,所以最好提前先下载好,这里给出下载地址 https://vagrantcloud.com/hyperledger/boxes/fabric-baseimage/versions/0.3.0/providers/virtualbox.box 将下载好的文件重命名为virtualbox.box。

7. 添加box到Vagrant中并启动

运行如下vagrant命令将刚下载的镜像添加到vagrant box中并启动由vagrant托管的带有指定镜像(注意:box名称要与Vagrantfile文件中的config.vm.box属性值一致)的virtualbox虚拟机。

vagrant box add ./virtualbox.box --name hyperledger/fabric-baseimage
vagrant box list # 查看vagrant列表中已有的box
vagrant up # 启动vagrant

这里简单说说 Vagrant up在启动过程中触发的setup.sh执行逻辑

  • 通过apt安装一些基本工具,如:build-essential git make curl unzip g++ libtool,这一步只要ubuntu的apt源没问题就ok,注意:ubuntu自带的源一般情况下update会比较慢,因此建议换成国内的ali或者163镜像。
  • 安装docker,安装docker之前也需要先安装一些所需要的系统工具,如:apt-transport-https ca-certificates curl software-properties-common。接着安装GPG证书(这里国内的话建议换为aliyun的),然后将对应aliyun的docker-ce镜像源信息写入/etc/apt/sources.list中,最后更新apt源并安装docker-ce,通过docker version来检测所安装的docker版本。
  • 安装docker-compose,这个步骤可以在docker-compose的官网上找到具体的安装步骤,注意需要给docker-compose赋予执行(x)权限。
  • 安装Go,并配置GOROOT和GOPATH环境变量,将GOROOT和GOPATH下的bin目录追加至PATH中。
  • 安装NodeJs,并运行fabric/scripts下的脚本
  • 安装JDK和Gradle
  • 创建DB文件存放的目录/var/hyperledger,并将所属权限分配给当前用户和所属的用户组
  • 将GOPATH目录的所属权限分配给当前用户和所属的用户组
  • 配置vagrant环境变量,设置当前用户通过SSH登录之后的PS1以及默认切换到哪个目录

这里顺便提一下在运行vagrant up的时候可能在执行脚本过程中遇到如下错误
clipboard.png

解决方法
通过vagrant ssh命令登录到虚拟机环境,执行 sudo rm -rf /var/lib/apt/lists/*,(注意:顺便执行一下该命令:sudo rm -rf /etc/apt/sources.list.d/docker.list,因为有可能docker.list里面的地址我们访问不到在sudo apt update的时候会报错)然后exit重新执行vagrant provision命令即可。
clipboard2.png

8. Vagrant SSH登录虚拟机环境

运行vagrant ssh即可登录到已经启动好的虚拟机环境中,并自动切换到本地环境当前所在目录对应的挂载目录
success.jpg

Sort:  

Congratulations @qiangjy! You have completed some achievement on Steemit and have been rewarded with new badge(s) :

You made your First Vote

Click on any badge to view your own Board of Honor on SteemitBoard.
For more information about SteemitBoard, click here

If you no longer want to receive notifications, reply to this comment with the word STOP

Upvote this notification to help all Steemit users. Learn why here!

Congratulations @qiangjy! You received a personal award!

Happy Birthday! - You are on the Steem blockchain for 1 year!

You can view your badges on your Steem Board and compare to others on the Steem Ranking

Vote for @Steemitboard as a witness to get one more award and increased upvotes!

Coin Marketplace

STEEM 0.27
TRX 0.11
JST 0.030
BTC 70572.77
ETH 3817.08
USDT 1.00
SBD 3.53