Hyperledger Fabric v1.0 开发环境搭建

    第一次写博客,纪念下这段时间的努力。

    前段时间项目组准备开发区块链的产品,对比了IBM 的Hyperledger Fabric 和 以太坊的SmartContract,最后因为SmartContract是用自己的特定开发语言,没办法,只能选择了Hyperledger。毕竟Go语言更通用,学习成本低一点。另外就是Hyperledger之于区块链,有可能就是Hadoop之于大数据。潜力更大,适用场景也更大。

一、开发环境配置:

主机:Win10 64位

Vagrant 1.9.1
Virtualbox 5.1.12

CentOs7 64位

Git  2.11.0.windows.1

Fabric升级到1.0后,在make源码时,会报一个缺少ltdh.h库文件的错误,需要安装libtool-ltdl-devel

$ sudo yum -y install libtool-ltdl-devel

二、Clone fabric和fabric-ca的源代码

这个在Win10上操作,所以需要先在Win10上安装git。

1、创建主目录,如:E:\HyperLedger1_0_Fabric_4\src\github.com\hyperledger

2、进入hyperledger目录,打开git命令窗口,设置 core.autocrlf 为 false

    $ git config --global core.autocrlffalse

3、开始克隆源代码

    $ git clone https://github.com/hyperledger/fabric.git

    $ git clone https://github.com/hyperledger/fabric-ca.git

4、等待clone完成后,hyperledger目录下就会出现两个文件夹: fabric和fabric-ca

三、使用Vagrant启动CentOS7

在执行下面的操作前,确保已经安装了Vagrant和Virtualbox

1、进入fabric目录的devenv目录,打开git bash窗口启动vagrant,不够这一步经常失败,应该是被q了,所以我是直接下载Centos7.box,手工添加的,详细操作如下

2、点击 下载 ,下载CentOS7的box文件,并将其改名为centos7.box添加到fabric的devenv目录中,在devenv目录打开git bash窗口,执行:

     $ vagrant box add hyperledger/fabric-baseimage centos7.box

  添加本地镜像,并设置系统环境变量USE_LOCAL_BASEIMAGE,值为 1 即可。

3、在git bash 窗口执行

  $ vagrant up

  启动CentOS7

4、使用 Xshell 或 SecureCRT等ssh工具连接到启动的CentOS7中,用户名和密码都是vagrant,ip是127.0.0.1,端口是2222

四、设置vagrant用户的sudo权限

新启动的CentOs中,默认的用户vagrant并没有超级管理员权限,这对后面的操作有很大的不便,所以要赋予vagrant sudo组

1、切换到root用户,root的默认密码也 是vagrant

$ su - root

2、编辑/etc/sudoers 文件:

 # vim /etc/sudoers

在91行或者其他地方添加一行:

vagrant   ALL=(ALL)       ALL

使用 wq! 强制保存即可!

使用 :

# exit

退出 root用户

五、安装git

在vagrant启动完并ssh到虚拟机CentOS7后,安装git:

$ sudo yum -y install git

六、安装 docker

1、将系统的所有packages 升级到最新版本
$ sudo yum -yupdate

2、安装yum-utils
$ sudo yum install -y yum-utils
$ sudo yum-config-manager --add-repo  https://download.docker.com/linux/centos/docker-ce.repo
$ sudo yum makecache fast

3、执行安装
$ sudo yum -y install docker-ce

4、将用户添加到docker组
$ sudo usermod -aG docker vagrant

5、重启
$ sudo reboot

6、启动docker和设置开机启动
$ systemctlstart docker
$ systemctlenable docker

7、测试docker是否安装成功
$docker run hello-world


七、安装docker-compose

1、安装epel-release
$ sudo yum -y install epel-release

2、安装python-pip并升级
$ sudo yum -y install python-pip
$ sudo pip install --upgrade pip

3、安装docker-compose
$ sudo pip install docker-compose

4、升级backports.ssl_match_hostname
$ sudo pip install --upgrade backports.ssl_match_hostname

5、使用
$ docker-compose -version
查看docker-compose,如输出版本号则表示安装成功


八、安装go

1、将go 的安装包上传到虚拟机中,创建softwareinstall文件夹

$ cd ~

$ mkdir softwareinstall


2、 将安装包移动到softwareinstall中,解压缩:

$ tar -zxvf go1.8.linux-amd64.tar.gz

 

3、 修改配置文件,添加环境变量:

$ sudo vim /etc/profile

在文件的最后加上如下代码:

# go install

export GOROOT=/home/vagrant/softwareinstall/go

export PATH=$PATH:$GOROOT/bin

export GOPATH=/opt/gopath

 

4、使配置文件生效

$source /etc/profile


九、文件准备(可选)

由于被q,很多东西都没办法从外网下载,就算能下载也很慢,有几个文件要直接拷贝到指定文件夹,这几个文件都能在github找到。当然,也可以让它自动下载,只是有时候会下载失败,如果让它自动下载,可以跳过这一步

1、进入/opt/gopath/src/github.com/hyperledger/fabric目录,编辑Makefile文件,注释其中下载chaintool的代码,找到:

%/chaintool: Makefile
   @echo "Installing chaintool"
   @mkdir -p $(@D)
#  curl -L $(CHAINTOOL_URL) > $@
   chmod +x $@
将 curl 那行直接注释。

2、拷贝 chaintool 文件到 src/github.com/hyperledger/fabric/build/bin

3、拷贝 protoc-gen-go 文件到 src/github.com/hyperledger/fabric/build/bin

4、拷贝 gotools 文件夹到 src/github.com/hyperledger/fabric/build/docker

十、编译源码生成所需镜像

1、在以上步骤都执行成功后,在/opt/gopath/src/github.com/hyperledger/fabric就可以直接执行:

$ make docker

执行编译,这个执行的时间会比较长,有时还会失败,没办法,只能靠耐心,失败就再重新执行 make docker。

2、在上一步执行完成后,进入 /opt/gopath/src/github.com/hyperledger/fabric-ca 目录,再执行make docker编译ca 的源码,生成ca的镜像

3、当全部执行完成后,执行:

$ docker images

即可查看所有生成的镜像。

hyperledger/fabric-couchdb       latest                          f6ea772e14c2        3 days ago          1.51 GB
hyperledger/fabric-couchdb       x86_64-1.0.0-snapshot-3181e78   f6ea772e14c2        3 days ago          1.51 GB
hyperledger/fabric-kafka            latest                          01ff0016acb6        3 days ago          1.3 GB
hyperledger/fabric-kafka            x86_64-1.0.0-snapshot-3181e78   01ff0016acb6        3 days ago          1.3 GB
hyperledger/fabric-zookeeper    latest                          b7c3099a3f2d        3 days ago          1.31 GB
hyperledger/fabric-zookeeper    x86_64-1.0.0-snapshot-3181e78   b7c3099a3f2d        3 days ago          1.31 GB
hyperledger/fabric-testenv         latest                          d2e8b903468a        3 days ago          1.4 GB
hyperledger/fabric-testenv         x86_64-1.0.0-snapshot-3181e78   d2e8b903468a        3 days ago          1.4 GB
hyperledger/fabric-buildenv       latest                          54937adadd65        3 days ago          1.31 GB
hyperledger/fabric-buildenv       x86_64-1.0.0-snapshot-3181e78   54937adadd65        3 days ago          1.31 GB
hyperledger/fabric-orderer        latest                          3c4c917b95f6        3 days ago          182 MB
hyperledger/fabric-orderer        x86_64-1.0.0-snapshot-3181e78   3c4c917b95f6        3 days ago          182 MB
hyperledger/fabric-peer            latest                          5e69a41973e8        3 days ago          184 MB
hyperledger/fabric-peer            x86_64-1.0.0-snapshot-3181e78   5e69a41973e8        3 days ago          184 MB
hyperledger/fabric-javaenv      latest                          a0a489dd2035        3 days ago          1.42 GB
hyperledger/fabric-javaenv      x86_64-1.0.0-snapshot-3181e78   a0a489dd2035        3 days ago          1.42 GB
hyperledger/fabric-ccenv        latest                          67a303c89578        3 days ago          1.29 GB
hyperledger/fabric-ccenv        x86_64-1.0.0-snapshot-3181e78   67a303c89578        3 days ago          1.29 GB
hyperledger/fabric-ca               latest                          01764cc3284b        3 days ago          200 MB
hyperledger/fabric-ca                x86_64-1.0.0-snapshot-894b7e4   01764cc3284b        3 days ago          200 MB
hyperledger/fabric-baseimage   x86_64-0.3.0                    f4751a503f02        8 weeks ago         1.27 GB
hyperledger/fabric-baseos      x86_64-0.3.0                    c3a4cf3b3350        8 weeks ago         161 MB


环境搭建完了,下一步再记录使用生的镜像启动fabric网络,并使用 java-sdk 做的客户端安装并调用chaincode的步骤!!!







你可能感兴趣的:(HyperLedger,Hyperledger,fabric,开发环境搭建)