本文主要参考:https://blog.youkuaiyun.com/honganboy/article/details/78714578 的介绍,十分感谢作者。但是安装版本和环境不同,安装过程也遇到了一些小问题,因此也再写一篇供大家参考。
安装环境:操作系统-64位Centos7.2,Fabric版本-v1.1.0-alpha,Go语言版本-1.9.4
安装Go后,使用go env命令查看GOPATH,本且在本地尝试echo $GOPATH查看路径(如果不是同一个安装用户,可能为空)
一.编译Fabric源码
首先构建测试文件夹,在当前用户目录下创建如下文件结构:
fabric-1.1-release
----bin(放置所有编译后的二进制文件)
----networks(放置但节点网络所需的配置文件和区块链账本数据)
----chaincodes(放置链码相关,本篇暂不涉及)
下载Fabric v1.1.0-alpha 版本源码至GOPATH
wget https://codeload.github.com/hyperledger/fabric/tar.gz/v1.1.0-alpha
tar -xvf v1.1.0-alpha
mkdir -p $GOPATH/src/github.com/hyperledger
mv fabric-1.1.0-alpha $GOPATH/src/github.com/hyperledger/fabric
获取编译常量值,在farbic源码目录下运行make test-cmd
命令获取-ldflags选项的取值:
之后编译源码时,都需要带着-ldflags指定。切换fabric-1.1-release/bin,开始进行编译
编译Orderer
Orderer节点是用于对交易进行排序和共识,生产环境可以支持Kafka模式。
go build -gcflags "-N -l" -ldflags "-X github.com/hyperledger/fabric/common/metadata.Version=1.1.1-snapshot-38c190f -X github.com/hyperledger/fabric/common/metadata.BaseVersion=0.4.6 -X github.com/hyperledger/fabric/common/metadata.BaseDockerLabel=org.hyperledger.fabric -X github.com/hyperledger/fabric/common/metadata.DockerNamespace=hyperledger -X github.com/hyperledger/fabric/common/metadata.BaseDockerNamespace=hyperledger -X github.com/hyperledger/fabric/common/metadata.Experimental=true" github.com/hyperledger/fabric/orderer
编译Peer
Peer节点功能包含两部分,一部分是服务端用于交易的背书,提交等;另一部分是作为peer cli,支持命令行指令去配置channel、chaincode等。
go build -gcflags "-N -l" -ldflags "-X github.com/hyperledger/fabric/common/metadata.Version=1.1.1-snapshot-38c190f -X github.com/hyperledger/fabric/common/metadata.BaseVersion=0.4.6 -X github.com/hyperledger/fabric/common/metadata.BaseDockerLabel=org.hyperledger.fabric -X github.com/hyperledger/fabric/common/metadata.DockerNamespace=hyperledger -X github.com/hyperledger/fabric/common/metadata.BaseDockerNamespace=hyperledger -X github.com/hyperledger/fabric/common/metadata.Experimental=true" github.com/hyperledger/fabric/peer
编译cryptogen
cryptogen用于生成交易签名及SSL通信用到证书及私钥对,可以使用fabric-ca或者其他ca颁发的证书,但测试环境使用crytogen更简单。
go build -gcflags "-N -l" -ldflags "-X github.com/hyperledger/fabric/common/metadata.Version=1.1.1-snapshot-38c190f -X github.com/hyperledger/fabric/common/metadata.BaseVersion=0.4.6 -X github.com/hyperledger/fabric/common/metadata.BaseDockerLabel=org.hyperledger.fabric -X github.com/hyperledger/fabric/common/metadata.DockerNamespace=hyperledger -X github.com/hyperledger/fabric/common/metadata.BaseDockerNamespace=hyperledger -X github.com/hyperledger/fabric/common/metadata.Experimental=true" github.com/hyperledger/fabric/common/tools/cryptogen
编译configtxgen
configtxgen为区块链配置工具,用于生成orderer节点的创世区块、channel的配置、锚节点的配置等。
go build -gcflags "-N -l" -ldflags "-X github.com/hyperledger/fabric/common/metadata.Version=1.1.1-snapshot-38c190f -X github.com/hyperledger/fabric/common/metadata.BaseVersion=0.4.6 -X github.com/hyperledger/fabric/common/metadata.BaseDockerLabel=org.hyperledger.fabric -X github.com/hyperledger/fabric/common/metadata.DockerNamespace=hyperledger -X github.com/hyperledger/fabric/common/metadata.BaseDockerNamespace=hyperledger -X github.com/hyperledger/fabri