第一次写博客,纪念下这段时间的努力。
前段时间项目组准备开发区块链的产品,对比了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
这个在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和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
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,如输出版本号则表示安装成功
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/docker1、在以上步骤都执行成功后,在/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的步骤!!!