因为未找到mac相关的安装方式,故根据优秀博主的文档以及本人安装、使用的经验整理此文。
1.安装清单
- brew
- Git
- cUrl
- docker
- docker-compose
- GoLang
- Fabric
- Fabric-samples
2.开始安装
2.1 Git
mac自带git,也可自行安装:brew install git2.2 curl
brew install curl2.3 docker
brew install docker2.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> 测试网络
- 启动网络
cd ./fabric-samples/first-network/ && ./byfn.sh up
启动时间会比较长,最终出现一个“END”日志表示启动成功,可通过docker ps命令可以查看到节点的启动情况。
注意:该命令会检查网络实体的证书是否生成,如果没有会先生成证书。因此,可以直接执行 ./byfn.sh up 命令,而无需执行 ./byfn.sh generate 命令。
- 关闭网络
cd ./fabric-samples/first-network/ && ./byfn.sh down
通过docker ps命令可看到各个镜像已停止并销毁。
安装合约流程
- 进入first-network目录,修改docker-compose-cli.yaml文件
-
在最后的volumes中增加自己的项目映射:
- /Users/xxx/Documents/MyProject/czkj/projects:/opt/gopath/src/github.com/hyperledger/fabric/peer/chaincode
- 重新启动网络frist-network
./byfn.sh down&&./byfn.sh up - 进入hyperledger/fabric-tools:latest容器
docker ps; docker exec -it xx /bin/bash - 查看当前目录下是否存在chaincode目录,进入chaincode目录查看是否为合约的工程目录
- 确认无误后执行脚本(我的是进入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 安装(大部分流程参考此文档整理)