因为未找到mac相关的安装方式,故根据优秀博主的文档以及本人安装、使用的经验整理此文。

1.安装清单

  • brew
  • Git
  • cUrl
  • docker
  • docker-compose
  • GoLang
  • Fabric
  • Fabric-samples

2.开始安装

2.1 Git

mac自带git,也可自行安装:brew install git

2.2 curl

brew install curl

2.3 docker

brew install docker

2.4 docker-compose

无需操作,docker安装完成后,也含有了docker-compose

以上安装细节也可自行百度,网上都有^.^

2.5 GoLang

1> 下载 Golang
  • 照旧使用brew install go

2> 配置环境变量

  • vi ~/.bash_profile
  • 在最后一行写入:
export PATH=/usr/local/Cellar/go@1.13/1.13.15/bin:$PATH
  • 刷新环境变量 source ~/.bash_profile

3> 使用go verison查看环境变量是否生效

xiaomanong@xiaomanongdeMacBook-Pro ~ % go version
go version go1.13.15 darwin/amd64

2.6 fabric

1> 创建目录并进入

mkdir -p ~/go/src/github.com/hyperledger
cd ~/go/src/github.com/hyperledge

2> 拉取fabric源码

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

也可通过浏览器打开git地址,自行下载源码。
3> 切换到指定分支

cd ./fabric
查看分支:git branch -a 
切换分支: git checkout release-1.4

2.7 fabric-samples

1> docker配置镜像加速
可参考:Mac下Docker镜像加速

2> 拉取依赖
在 fabric/scripts 目录下找到 bootstrap.sh 脚本,复制到与 fabric 同级目录下,执行脚本(需要有VPN):

./bootstrap.sh 1.4.12 1.4.9 0.4.22

该脚本做的事情:

  • 如果当前目录没有 hyperledger/fabric-samples,会从 github.com 克隆 hyperledger/fabric-samples 存储库;
  • 使用 checkout 签出对应指定的版本标签;
  • 将指定版本的 Hyperledger Fabric 平台特定的二进制文件和配置文件安装到 fabric-samples 存储库的根目录中;
  • 下载指定版本的 Hyperledger Fabric Docker 镜像文件;
  • 将下载的 Docker 镜像文件标记为 “lastest"。

注意:执行脚本输入的版本号不通,下载的fabric-samples版本就不同,新版本的fabric-samples中没有first-network文件夹,我本地的Fabric网络是通过first-network启动的所以需要用到。

由于我的mac使用的vpn不适用到终端中,所以第三步需要手动在浏览器下载操作:
https://nexus.hyperledger.org/content/repositories/releases/org/hyperledger/fabric/hyperledger-fabric
https://nexus.hyperledger.org/content/repositories/releases/org/hyperledger/fabric-ca/hyperledger-fabric-ca

下载的 hyperledger-fabric-darwin-amd64-1.4.12.tar.gz压缩包内有 bin 和 config 两个文件夹, hyperledger-fabric-ca-darwin-amd64-1.4.9.tar.gz压缩包内有 bin 文件夹,将两个 bin 文件夹内的二进制文件汇总在一个 bin 文件夹内。 最后将 bin 和 config 文件夹复制到 fabric-samples 文件夹内。
Linux系统需要注释下图中执行binariesInstall的这行代码,并重新执行./bootstrap.sh 1.4.12 1.4.9 0.4.22
在这里插入图片描述

3> 设置环境变量

启动 fabric-samples/first-network 网络所需二进制文件的默认路径为 fabric-samples/bin,可以将该路径添加入环境变量中:

vim ~/.bash_profile
export PATH=$PATH:/Users/xiaomanong/Documents/tool/fabric/go/src/github.com/hyperledger/fabric-samples/bin
source ~/.bash_profile

测试环境变量是否生效:

xiaomanong@xiaomanongdeMacBook-Pro ~ % fabric-ca-client version
fabric-ca-client:
 Version: 1.4.9
 Go version: go1.14.10
 OS/Arch: darwin/amd64

4> 生成证书
进入first-network目录,使用byfn.sh脚本生成证书

cd ./fabric-samples/first-network/ && ./byfn.sh generate

5> 测试网络

  1. 启动网络
cd ./fabric-samples/first-network/ && ./byfn.sh up

启动时间会比较长,最终出现一个“END”日志表示启动成功,可通过docker ps命令可以查看到节点的启动情况。

注意:该命令会检查网络实体的证书是否生成,如果没有会先生成证书。因此,可以直接执行 ./byfn.sh up 命令,而无需执行 ./byfn.sh generate 命令。

  1. 关闭网络
cd ./fabric-samples/first-network/ && ./byfn.sh down

通过docker ps命令可看到各个镜像已停止并销毁。


安装合约流程

  1. 进入first-network目录,修改docker-compose-cli.yaml文件
  • 在最后的volumes中增加自己的项目映射:

     - /Users/xxx/Documents/MyProject/czkj/projects:/opt/gopath/src/github.com/hyperledger/fabric/peer/chaincode
    
  1. 重新启动网络frist-network
    ./byfn.sh down&&./byfn.sh up
  2. 进入hyperledger/fabric-tools:latest容器
    docker ps; docker exec -it xx /bin/bash
  3. 查看当前目录下是否存在chaincode目录,进入chaincode目录查看是否为合约的工程目录
  4. 确认无误后执行脚本(我的是进入testCommands目录,执行./installAllChainCode4SinglePeer.sh脚本),安装并部署启动合约相关服务

个人遇到的问题:

启动服务,代码报health相关的错误时,可能是没有启动心跳检测节点,需要修改fabric-samples/first-network/base下的两个yaml文件。
  • 在peer-base.yaml文件和docker-compose-base.yam文件的orderer.example.com中的environment增加:
 - CORE_OPERATIONS_LISTENADDRESS=0.0.0.0:9443
  • 在docker-compose-base.yam各个节点中增加对应的port
  • 重启网络:./byfn.sh down&&./byfn.sh up

参考:
Hyperledger中文文档
Fabric1.4:运行 first-network 网络
Hyperledger Fabric1.4 安装(大部分流程参考此文档整理)

Logo

权威|前沿|技术|干货|国内首个API全生命周期开发者社区

更多推荐