Hyperledger Fabric开发环境搭建(MacOS系统)

1、安装Homebrew:

/usr/bin/ruby -e "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/master/install)"

2、安装Go:

  • 安装命令:
brew install go
  • 检查安装版本(安装前可查看是否已安装)
wenzildeiMac:~ wenzil$ go version
go version go1.9.2 darwin/amd64
  • 配置环境变量
#GOPATH路径可能因人而异,注意先用"which go"检查一下path路径(如后面的一段)
export GOPATH=/usr/local/go
export GOBIN=$GOPATH/bin
export PATH=$PATH:$GOBIN

vim .bash_profile:进入vim,输入i切换为编辑模式,输入上面三段配置信息,然后按Esc键,输入:wq保存并退出编辑。
source ~/.bash_profile:作为执行命令,会立即生效,然后再检查一下Go

wenzildeiMac:go wenzil$ which go
/usr/local/go/bin/go
wenzildeiMac:~ wenzil$ cd ~
wenzildeiMac:~ wenzil$ vim .bash_profile 
wenzildeiMac:~ wenzil$ source ~/.bash_profile
wenzildeiMac:~ wenzil$ go version
go version go1.9.2 darwin/amd64
  • 检查Go的配置信息
wenzildeiMac:~ wenzil$ go env
GOARCH="amd64"
GOBIN=""
GOEXE=""
GOHOSTARCH="amd64"
GOHOSTOS="darwin"
GOOS="darwin"
GOPATH="/Users/wenzil/.rvm/gems/ruby-2.4.0/bin:/Users/wenzil/.rvm/gems/ruby-2.4.0@global/bin:/Users/wenzil/.rvm/rubies/ruby-2.4.0/bin:/usr/local/bin:/usr/bin:/bin:/usr/sbin:/sbin:/usr/local/go/bin:/Users/wenzil/.rvm/bin:/usr/local/go/bin"
GORACE=""
GOROOT="/usr/local/go"
GOTOOLDIR="/usr/local/go/pkg/tool/darwin_amd64"
GCCGO="gccgo"
CC="clang"
GOGCCFLAGS="-fPIC -m64 -pthread -fno-caret-diagnostics -Qunused-arguments -fmessage-length=0 -fdebug-prefix-map=/var/folders/rd/b67k290j5xbcfw59chnjm1qh0000gn/T/go-build472270299=/tmp/go-build -gno-record-gcc-switches -fno-common"
CXX="clang++"
CGO_ENABLED="1"
CGO_CFLAGS="-g -O2"
CGO_CPPFLAGS=""
CGO_CXXFLAGS="-g -O2"
CGO_FFLAGS="-g -O2"
CGO_LDFLAGS="-g -O2"
PKG_CONFIG="pkg-config"

3、安装Docker:

Docker界面化软件方便操作和管理,下载地址如下
(点击页面的“Get Docker”按钮即可下载)
https://store.docker.com/editions/community/docker-ce-desktop-mac

dock安装.png
# 终端测试命令
wenzildeiMac:~ wenzil$ docker --version
Docker version 18.03.1-ce, build 9ee9f40
wenziliangdeiMac:~ wenzil$ docker-compose --version
docker-compose version 1.21.1, build 5a3f1a3

4、安装nvm

curl -o- https://raw.githubusercontent.com/creationix/nvm/v0.33.7/install.sh | bash

安装成功后显示这么一段话(版本不同可能显示不同):

=> If you wish to uninstall them at a later point (or re-install them under your
=> `nvm` Nodes), you can remove them from the system Node as follows:

     $ nvm use system
     $ npm uninstall -g a_module

=> Close and reopen your terminal to start using nvm or run the following to use it now:

export NVM_DIR="$HOME/.nvm"
[ -s "$NVM_DIR/nvm.sh" ] && \. "$NVM_DIR/nvm.sh"  # This loads nvm
[ -s "$NVM_DIR/bash_completion" ] && \. "$NVM_DIR/bash_completion"  # This loads nvm bash_completion

打开终端,编辑.bash_profile:

wenzildeiMac:~ wenzil$ cd ~
wenzildeiMac:~ wenzil$ vim .bash_profile 

在.bash_profile中直接复制添加上面返回打印的内容:

export NVM_DIR="$HOME/.nvm"
[ -s "$NVM_DIR/nvm.sh" ] && \. "$NVM_DIR/nvm.sh"  # This loads nvm
[ -s "$NVM_DIR/bash_completion" ] && \. "$NVM_DIR/bash_completion"  # This loads nvm bash_completion

然后执行如下命令,让配置立即生效:

source .bash_profile

5、安装node指定版本

比如安装"6.10.1"版本,命令如下:

nvm install 6.10.1

Node.js version 7.x is not supported at this time.
Node.js - version 6.9.x or greater

(意思说Fabric暂时不支持7.x,需要安装6.9.x或者更多版本)
官网对应的上面一句话地址:
http://hyperledger-fabric.readthedocs.io/en/v1.1.0-alpha/prereqs.html#node-js-runtime-and-npm

6、下载Hyperledger的一个Demo源码

git clone https://github.com/hyperledger/fabric-samples

7、下载特定平台的二进制文件(注意这里有坑,也可以跳过此步骤,先操作第8和第9步,再回来看下)

坑说明:别人会直接让你下载某个平台某个版本的二进制文件,然后发现运行不了,无法进行下一步操作。

先打开Fabric的官网,会自动跳转到对应的版本:
http://hyperledger-fabric.readthedocs.io/
然后在左边的输入框,输入“fabric-samples”,右边会显示对应的结果,点击第一个

fabric_sample1.png

然后往下看,会看到框住的两部分,第一个就是说终端执行curl命令下载特定平台的二进制文件,然后可以打开第二个部分的那个网址了解最新的curl获取正确环境的其他信息


fabric_sample2.png
#第一部分的内容
curl -sSL https://goo.gl/6wtTN5 | bash -s 1.1.0

第二部分的地址
https://github.com/hyperledger/fabric/blob/master/scripts/bootstrap.sh

如图所示,说明需要下载"1.1.0"版本
注意:直接下载会很慢,而且很容易失败(VPN模式下中断了好几次)
建议离线下载,网址:
https://nexus.hyperledger.org/content/repositories/releases/org/hyperledger/fabric/hyperledger-fabric/
打开网址,一定要找到对应操作系统对应版本号的文件(不然会失败),如图:

fabric_sample3.png

打开MacOS对应版本的文件夹,还有Windows、Linux其他系统,如图Windows系统可以打开该文件夹:


fabric_sample4.png

MacOS对应的文件夹,如图,点击下载压缩包文件:


fabric_sample5.png

下载成功后解压出来,是一个bin文件夹,然后复制该文件夹到fabric-samples根目录下,如图:


fabric_sample6.png

8、设置Docker容器代理

设置Docker代理可提高镜像下载速度,否则很慢(慢到可能需要下载大半天甚至一天以上)。
点击"Docker"的"Preferences..."菜单,切换到"Daemon"菜单,在"Registry mirrors"中添加代理,地址如下:

# 试了该代理,速度快了很多
http://8890cb8b.m.daocloud.io

大牛推荐使用Docker官方提供的中国镜像加速(还没试过),网址:

https://www.docker-cn.com/registry-mirror

添加成功后,"Apply & Restart"按钮会变成可点击状态,点击进行配置自动重启Docker。


fabric_sample7.png

9、安装Docker镜像前准备

先打开如下网址(这个可能需要翻墙):
https://goo.gl/byy2Qj

在fabric-samples根目录下创建"init.sh"脚本文件(终端执行"vi init.sh"),将网站的内容复制到"init.sh"文件中。


fabric_sample8.png

注释掉下载平台二进制文件代码(注释echo和curl两行),然后保存并退出(按Esc,输入":wq")

# echo "===> Downloading platform binaries"
# curl https://nexus.hyperledger.org/content/repositories/releases/org/hyperledger/fabric/hyperledger-fabric/${ARCH}-${VERSION}/hyperledger-fabric-${ARCH}-${VERSION}.tar.gz | tar xz

==跳过了第7步的注意看下:当时是按照7、8、9步骤操作的,现在想想应该可以不用注释上面这两行代码,然后省略第7步手动下载二进制文件,从让系统自动下载特定平台的二进制文件并自动解压,有机会可以试下,成功后应该会在fabric-samples根目录下生成bin文件夹。==

设置"init.sh"文件最高权限777,执行"./init.sh"命令之前确保已经启动Docker。

vi init.sh
chmod 777 init.sh
./init.sh

10、安装Docker镜像

执行了"./init.sh"命令之后,会下载很多镜像文件,目测十几G的样子,成功后如图:


fabric_sample9.png

11、创建第一个区块链网络

  • 注意观察,在"first-network"目录下的"channel-artifacts"文件夹是空的。


    fabric_sample10.png
  • 创建第一个区块链网络前,先关闭所有服务,执行命令:

./byfn.sh -m down

结果如图:


fabric_sample11.png
  • 创建区块链网络,执行如下命令:
./byfn.sh -m generat
  • 没有下载特定平台二进制文件的情况(被坑的结果):


    fabric_sample12.png
  • 重新下载了正确的特定平台二进制文件的情况,成功通过:


    fabric_sample13.png

打开"channel-artifacts"目录,会发现多了四个文件


fabric_sample14.png

此时,Hyperledger Fabric开发环境基本搭建完毕。
接下的是创建和加入通道,安装和实例化链码,进行链码的调用等操作。
由于涉及内容过多,可以查看另外一篇文章“《Hyperledger Fabric运行体验(MacOS系统)》做参考”
PS:刚入坑的小白,很多不懂,还请各位大佬多赐教,谢谢!

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 215,723评论 6 498
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 92,003评论 3 391
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 161,512评论 0 351
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 57,825评论 1 290
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 66,874评论 6 388
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 50,841评论 1 295
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 39,812评论 3 416
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 38,582评论 0 271
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 45,033评论 1 308
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 37,309评论 2 331
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 39,450评论 1 345
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 35,158评论 5 341
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 40,789评论 3 325
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 31,409评论 0 21
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 32,609评论 1 268
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 47,440评论 2 368
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 44,357评论 2 352

推荐阅读更多精彩内容