Hyperledger Fabric 安装

区块链在这里就不多费笔墨了,相信大家问度娘比看我的文章好多了
快速进入正题:

环境准备

五台 CentOS7.2

[root@fabric=orderer e2e_cli]# cat /etc/redhat-release 
CentOS Linux release 7.2.1511 (Core) 

其中三台用来部署peer ,一台用来部署orderer,另一台用来部署证书

记得要关闭selinux

[root@fabric03 ~]# cat /etc/selinux/config 

# This file controls the state of SELinux on the system.
# SELINUX= can take one of these three values:
#     enforcing - SELinux security policy is enforced.
#     permissive - SELinux prints warnings instead of enforcing.
#     disabled - No SELinux policy is loaded.
SELINUX=disabled
# SELINUXTYPE= can take one of three two values:
#     targeted - Targeted processes are protected,
#     minimum - Modification of targeted policy. Only selected processes are protected. 
#     mls - Multi Level Security protection.
SELINUXTYPE=targeted 

安装 docker git golang docker-compose

yum install docker git golang

yum install epel-release

yum install pip && pip install --upgrade pip && pip install docker-compose

systemctl start docker

http://hyperledger-fabric.readthedocs.io/en/latest/prereqs.html

下载源代码,镜像

获取fabric源代码

mkdir -p $GOPATH/src/github.com/hyperledger
cd  $GOPATH/src/github.com/hyperledger
git clone https://github.com/hyperledger/fabric.git

生成configtxgen工具

[root@fabric=orderer fabric]# make configtxgen
find: ‘/src/github.com/hyperledger/fabric/core/chaincode/shim’: 没有那个文件或目录
build/bin/configtxgen
CGO_CFLAGS=" " GOBIN=/root/go/src/github.com/hyperledger/fabric/build/bin go install -tags "nopkcs11" -ldflags "-X github.com/hyperledger/fabric/common/configtx/tool/configtxgen/metadata.Version=1.0.7-snapshot-da14b6b" github.com/hyperledger/fabric/common/configtx/tool/configtxgen
Binary available as build/bin/configtxgen
[root@fabric=orderer fabric]# ls -l build/bin/
总用量 14816
-rwxr-xr-x 1 root root 15168777 317 09:37 configtxgen

生成配置文件

[root@fabric=orderer fabric]# cd examples/e2e_cli/
[root@fabric=orderer e2e_cli]# pwd
/root/go/src/github.com/hyperledger/fabric/examples/e2e_cli
[root@fabric=orderer e2e_cli]# ls -l
总用量 84
drwxr-xr-x 2 root root    58 3月  17 09:36 base
drwxr-xr-x 2 root root   106 3月  17 09:54 channel-artifacts
-rw-r--r-- 1 root root  5013 317 09:36 configtx.yaml
drwxr-xr-x 4 root root    57 3月  17 09:54 crypto-config
-rw-r--r-- 1 root root  3858 317 09:36 crypto-config.yaml
-rw-r--r-- 1 root root  2677 317 09:36 docker-compose-cli.yaml
-rw-r--r-- 1 root root  2005 317 09:36 docker-compose-couch.yaml
-rw-r--r-- 1 root root  2517 317 09:36 docker-compose-e2e-template.yaml
-rw-r--r-- 1 root root  2725 317 09:54 docker-compose-e2e.yaml
-rw-r--r-- 1 root root  2119 317 09:36 download-dockerimages.sh
-rw-r--r-- 1 root root 41711 317 09:36 end-to-end.rst
drwxr-xr-x 3 root root    22 3月  17 09:36 examples
-rwxr-xr-x 1 root root  3588 317 09:36 generateArtifacts.sh
-rwxr-xr-x 1 root root  2617 317 09:36 network_setup.sh
drwxr-xr-x 2 root root    22 3月  17 09:36 scripts

在终端 执行./generateArtifacts.sh

[root@fabric=orderer e2e_cli]# ./generateArtifacts.sh 
mychannel

Building cryptogen
find: ‘/src/github.com/hyperledger/fabric/core/chaincode/shim’: 没有那个文件或目录
make: 进入目录“/root/go/src/github.com/hyperledger/fabric”
Building release/linux-amd64/bin/configtxgen for linux-amd64
mkdir -p release/linux-amd64/bin
CGO_CFLAGS=" " GOOS=linux GOARCH=amd64 go build -o /root/go/src/github.com/hyperledger/fabric/release/linux-amd64/bin/configtxgen -tags "nopkcs11" -ldflags "-X github.com/hyperledger/fabric/common/configtx/tool/configtxgen/metadata.Version=1.0.7-snapshot-da14b6b" github.com/hyperledger/fabric/common/configtx/tool/configtxgen
Building release/linux-amd64/bin/cryptogen for linux-amd64
mkdir -p release/linux-amd64/bin
CGO_CFLAGS=" " GOOS=linux GOARCH=amd64 go build -o /root/go/src/github.com/hyperledger/fabric/release/linux-amd64/bin/cryptogen -tags "nopkcs11" -ldflags "-X github.com/hyperledger/fabric/common/tools/cryptogen/metadata.Version=1.0.7-snapshot-da14b6b" github.com/hyperledger/fabric/common/tools/cryptogen
Building release/linux-amd64/bin/configtxlator for linux-amd64
mkdir -p release/linux-amd64/bin
CGO_CFLAGS=" " GOOS=linux GOARCH=amd64 go build -o /root/go/src/github.com/hyperledger/fabric/release/linux-amd64/bin/configtxlator -tags "nopkcs11" -ldflags "-X github.com/hyperledger/fabric/common/tools/configtxlator/metadata.Version=1.0.7-snapshot-da14b6b" github.com/hyperledger/fabric/common/tools/configtxlator
Building release/linux-amd64/bin/peer for linux-amd64
mkdir -p release/linux-amd64/bin
CGO_CFLAGS=" " GOOS=linux GOARCH=amd64 go build -o /root/go/src/github.com/hyperledger/fabric/release/linux-amd64/bin/peer -tags "nopkcs11" -ldflags "-X github.com/hyperledger/fabric/common/metadata.Version=1.0.7-snapshot-da14b6b -X github.com/hyperledger/fabric/common/metadata.BaseVersion=0.3.2 -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" github.com/hyperledger/fabric/peer
Building release/linux-amd64/bin/orderer for linux-amd64
mkdir -p release/linux-amd64/bin
CGO_CFLAGS=" " GOOS=linux GOARCH=amd64 go build -o /root/go/src/github.com/hyperledger/fabric/release/linux-amd64/bin/orderer -tags "nopkcs11" -ldflags "-X github.com/hyperledger/fabric/common/metadata.Version=1.0.7-snapshot-da14b6b -X github.com/hyperledger/fabric/common/metadata.BaseVersion=0.3.2 -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" github.com/hyperledger/fabric/orderer
mkdir -p release/linux-amd64/bin
make: 离开目录“/root/go/src/github.com/hyperledger/fabric”

##########################################################
##### Generate certificates using cryptogen tool #########
##########################################################
org1.example.com
org2.example.com

Using configtxgen -> /root/go/src/github.com/hyperledger/fabric/examples/e2e_cli/../../release/linux-amd64/bin/configtxgen
##########################################################
#########  Generating Orderer Genesis block ##############
##########################################################
2018-03-17 09:54:12.129 CST [common/configtx/tool] main -> INFO 001 Loading configuration
2018-03-17 09:54:12.149 CST [common/configtx/tool] doOutputBlock -> INFO 002 Generating genesis block
2018-03-17 09:54:12.150 CST [common/configtx/tool] doOutputBlock -> INFO 003 Writing genesis block

#################################################################
### Generating channel configuration transaction 'channel.tx' ###
#################################################################
2018-03-17 09:54:12.157 CST [common/configtx/tool] main -> INFO 001 Loading configuration
2018-03-17 09:54:12.160 CST [common/configtx/tool] doOutputChannelCreateTx -> INFO 002 Generating new channel configtx
2018-03-17 09:54:12.160 CST [common/configtx/tool] doOutputChannelCreateTx -> INFO 003 Writing new channel tx

#################################################################
#######    Generating anchor peer update for Org1MSP   ##########
#################################################################
2018-03-17 09:54:12.167 CST [common/configtx/tool] main -> INFO 001 Loading configuration
2018-03-17 09:54:12.169 CST [common/configtx/tool] doOutputAnchorPeersUpdate -> INFO 002 Generating anchor peer update
2018-03-17 09:54:12.169 CST [common/configtx/tool] doOutputAnchorPeersUpdate -> INFO 003 Writing anchor peer update

#################################################################
#######    Generating anchor peer update for Org2MSP   ##########
#################################################################
2018-03-17 09:54:12.177 CST [common/configtx/tool] main -> INFO 001 Loading configuration
2018-03-17 09:54:12.180 CST [common/configtx/tool] doOutputAnchorPeersUpdate -> INFO 002 Generating anchor peer update
2018-03-17 09:54:12.181 CST [common/configtx/tool] doOutputAnchorPeersUpdate -> INFO 003 Writing anchor peer update

获取镜像

docker pull hyperledger/fabric-orderer:x86_64-1.0.0-alpha
docker pull hyperledger/fabric-peer:x86_64-1.0.0-alpha
docker pull hyperledger/fabric-zookeeper:x86_64-1.0.0-alpha
docker pull hyperledger/fabric-couchdb:x86_64-1.0.0-alpha
docker pull hyperledger/fabric-kafka:x86_64-1.0.0-alpha
docker pull hyperledger/fabric-ca:x86_64-1.0.0-alpha
docker pull hyperledger/fabric-ccenv:x86_64-1.0.0-alpha
docker pull hyperledger/fabric-javaenv:x86_64-1.0.0-alpha
docker pull hyperledger/fabric-tools:x86_64-1.1.0-alpha

docker tag hyperledger/fabric-tools:x86_64-1.1.0-alpha hyperledger/fabric-tools:latest
docker tag hyperledger/fabric-orderer:x86_64-1.0.0-alpha hyperledger/fabric-orderer:latest
docker tag hyperledger/fabric-peer:x86_64-1.0.0-alpha hyperledger/fabric-peer:latest
docker tag hyperledger/fabric-zookeeper:x86_64-1.0.0-alpha hyperledger/fabric-zookeeper:latest
docker tag hyperledger/fabric-couchdb:x86_64-1.0.0-alpha hyperledger/fabric-couchdb:latest
docker tag hyperledger/fabric-kafka:x86_64-1.0.0-alpha hyperledger/fabric-kafka:latest
docker tag hyperledger/fabric-ca:x86_64-1.0.0-alpha hyperledger/fabric-ca:latest
docker tag hyperledger/fabric-ccenv:x86_64-1.0.0-alpha hyperledger/fabric-ccenv:latest
docker tag hyperledger/fabric-javaenv:x86_64-1.0.0-alpha hyperledger/fabric-javaenv:latest

使用docker 创建Fabric 网络 以及创建/加入通道(账本)

[root@fabric=orderer e2e_cli]# ls -l
总用量 84
drwxr-xr-x 2 root root    58 3月  17 09:36 base
drwxr-xr-x 2 root root   106 3月  17 09:54 channel-artifacts
-rw-r--r-- 1 root root  5013 317 09:36 configtx.yaml
drwxr-xr-x 4 root root    57 3月  17 09:54 crypto-config
-rw-r--r-- 1 root root  3858 317 09:36 crypto-config.yaml
-rw-r--r-- 1 root root  2677 317 09:36 docker-compose-cli.yaml
-rw-r--r-- 1 root root  2005 317 09:36 docker-compose-couch.yaml
-rw-r--r-- 1 root root  2517 317 09:36 docker-compose-e2e-template.yaml
-rw-r--r-- 1 root root  2725 317 09:54 docker-compose-e2e.yaml
-rw-r--r-- 1 root root  2119 317 09:36 download-dockerimages.sh
-rw-r--r-- 1 root root 41711 317 09:36 end-to-end.rst
drwxr-xr-x 3 root root    22 3月  17 09:36 examples
-rwxr-xr-x 1 root root  3588 317 09:36 generateArtifacts.sh
-rwxr-xr-x 1 root root  2617 317 09:36 network_setup.sh
drwxr-xr-x 2 root root    22 3月  17 09:36 scripts

测试bash network_setup.sh up 该部署还存在问题,只提供参考

[root@fabricorderer e2e_cli]# pwd
/opt/gopath/src/github.com/hyperledger/fabric/examples/e2e_cli
[root@fabricorderer e2e_cli]# bash network_setup.sh up
[root@fabricorderer e2e_cli]# bash network_setup.sh up
setting to default channel 'mychannel'
mychannel

Using cryptogen -> /opt/gopath/src/github.com/hyperledger/fabric/examples/e2e_cli/../../release/linux-amd64/bin/cryptogen

##########################################################
##### Generate certificates using cryptogen tool #########
##########################################################
org1.example.com
org2.example.com

sed:-e 表达式 #1,字符 85:未终止的“s”命令
sed:-e 表达式 #1,字符 85:未终止的“s”命令
Using configtxgen -> /opt/gopath/src/github.com/hyperledger/fabric/examples/e2e_cli/../../release/linux-amd64/bin/configtxgen
##########################################################
#########  Generating Orderer Genesis block ##############
##########################################################
2018-03-17 21:22:41.918 CST [common/configtx/tool] main -> INFO 001 Loading configuration
2018-03-17 21:22:41.940 CST [common/configtx/tool] doOutputBlock -> INFO 002 Generating genesis block
2018-03-17 21:22:41.941 CST [common/configtx/tool] doOutputBlock -> INFO 003 Writing genesis block

#################################################################
### Generating channel configuration transaction 'channel.tx' ###
#################################################################
2018-03-17 21:22:41.953 CST [common/configtx/tool] main -> INFO 001 Loading configuration
2018-03-17 21:22:41.956 CST [common/configtx/tool] doOutputChannelCreateTx -> INFO 002 Generating new channel configtx
2018-03-17 21:22:41.956 CST [common/configtx/tool] doOutputChannelCreateTx -> INFO 003 Writing new channel tx

#################################################################
#######    Generating anchor peer update for Org1MSP   ##########
#################################################################
2018-03-17 21:22:41.969 CST [common/configtx/tool] main -> INFO 001 Loading configuration
2018-03-17 21:22:41.971 CST [common/configtx/tool] doOutputAnchorPeersUpdate -> INFO 002 Generating anchor peer update
2018-03-17 21:22:41.972 CST [common/configtx/tool] doOutputAnchorPeersUpdate -> INFO 003 Writing anchor peer update

#################################################################
#######    Generating anchor peer update for Org2MSP   ##########
#################################################################
2018-03-17 21:22:41.983 CST [common/configtx/tool] main -> INFO 001 Loading configuration
2018-03-17 21:22:41.986 CST [common/configtx/tool] doOutputAnchorPeersUpdate -> INFO 002 Generating anchor peer update
2018-03-17 21:22:41.986 CST [common/configtx/tool] doOutputAnchorPeersUpdate -> INFO 003 Writing anchor peer update

/usr/lib/python2.7/site-packages/requests/__init__.py:80: RequestsDependencyWarning: urllib3 (1.22) or chardet (2.2.1) doesn't match a supported version!
Creating orderer.example.com ... done
Creating cli ... done
Creating peer1.org1.example.com ... 
Creating peer1.org2.example.com ... 
Creating orderer.example.com ... 
Creating peer0.org2.example.com ... 
Creating cli ... 

 ____    _____      _      ____    _____           _____   ____    _____ 
/ ___|  |_   _|    / \    |  _ \  |_   _|         | ____| |___ \  | ____|
\___ \    | |     / _ \   | |_) |   | |    _____  |  _|     __) | |  _|  
 ___) |   | |    / ___ \  |  _ <    | |   |_____| | |___   / __/  | |___ 
|____/    |_|   /_/   \_\ |_| \_\   |_|           |_____| |_____| |_____|

Channel name : mychannel
Creating channel...
CORE_PEER_TLS_ROOTCERT_FILE=/opt/gopath/src/github.com/hyperledger/fabric/peer/crypto/peerOrganizations/org1.example.com/peers/peer0.org1.example.com/tls/ca.crt
CORE_PEER_TLS_KEY_FILE=/opt/gopath/src/github.com/hyperledger/fabric/peer/crypto/peerOrganizations/org1.example.com/peers/peer0.org1.example.com/tls/server.key
CORE_PEER_LOCALMSPID=Org1MSP
CORE_VM_ENDPOINT=unix:///host/var/run/docker.sock
CORE_PEER_TLS_CERT_FILE=/opt/gopath/src/github.com/hyperledger/fabric/peer/crypto/peerOrganizations/org1.example.com/peers/peer0.org1.example.com/tls/server.crt
CORE_PEER_TLS_ENABLED=true
CORE_PEER_MSPCONFIGPATH=/opt/gopath/src/github.com/hyperledger/fabric/peer/crypto/peerOrganizations/org1.example.com/users/[email protected]/msp
CORE_PEER_ID=cli
CORE_LOGGING_LEVEL=DEBUG
CORE_PEER_ADDRESS=peer0.org1.example.com:7051
2018-03-17 13:22:44.873 UTC [msp] getMspConfig -> INFO 001 intermediate certs folder not found at [/opt/gopath/src/github.com/hyperledger/fabric/peer/crypto/peerOrganizations/org1.example.com/users/[email protected]/msp/intermediatecerts]. Skipping.: [stat /opt/gopath/src/github.com/hyperledger/fabric/peer/crypto/peerOrganizations/org1.example.com/users/[email protected]/msp/intermediatecerts: no such file or directory]
2018-03-17 13:22:44.873 UTC [msp] getMspConfig -> INFO 002 crls folder not found at [/opt/gopath/src/github.com/hyperledger/fabric/peer/crypto/peerOrganizations/org1.example.com/users/[email protected]/msp/intermediatecerts]. Skipping.: [stat /opt/gopath/src/github.com/hyperledger/fabric/peer/crypto/peerOrganizations/org1.example.com/users/[email protected]/msp/crls: no such file or directory]
2018-03-17 13:22:44.873 UTC [msp] getMspConfig -> INFO 003 MSP configuration file not found at [/opt/gopath/src/github.com/hyperledger/fabric/peer/crypto/peerOrganizations/org1.example.com/users/[email protected]/msp/config.yaml]: [stat /opt/gopath/src/github.com/hyperledger/fabric/peer/crypto/peerOrganizations/org1.example.com/users/[email protected]/msp/config.yaml: no such file or directory]
2018-03-17 13:22:44.924 UTC [msp] GetLocalMSP -> DEBU 004 Returning existing local MSP
2018-03-17 13:22:44.924 UTC [msp] GetDefaultSigningIdentity -> DEBU 005 Obtaining default signing identity
2018-03-17 13:22:44.926 UTC [grpc] Printf -> DEBU 006 Failed to dial orderer.example.com:7050: connection error: desc = "transport: authentication handshake failed: x509: certificate signed by unknown authority"; please retry.
Error: Error connecting due to  rpc error: code = Internal desc = connection error: desc = "transport: authentication handshake failed: x509: certificate signed by unknown authority"
Usage:
  peer channel create [flags]

Global Flags:
  -b, --blockpath string           Path to file containing genesis block
      --cafile string              Path to file containing PEM-encoded trusted certificate(s) for the ordering endpoint
  -c, --chain string               In case of a newChain command, the chain ID to create.
  -f, --file string                Configuration transaction file generated by a tool such as configtxgen for submitting to orderer
      --logging-level string       Default logging level and overrides, see core.yaml for full syntax
  -o, --orderer string             Ordering service endpoint
      --test.coverprofile string   Done (default "coverage.cov")
  -t, --timeout int                Channel creation timeout (default 5)
      --tls                        Use TLS when communicating with the orderer endpoint
  -v, --version                    Display current version of fabric peer server

!!!!!!!!!!!!!!! Channel creation failed !!!!!!!!!!!!!!!!
================== ERROR !!! FAILED to execute End-2-End Scenario ==================

^C
[root@fabricorderer e2e_cli]# docker ps 
CONTAINER ID        IMAGE                        COMMAND                  CREATED             STATUS              PORTS                                              NAMES
e8211fcb9ced        hyperledger/fabric-tools     "/bin/bash -c './s..."   4 minutes ago       Up 4 minutes                                                           cli
b13e244fc833        hyperledger/fabric-orderer   "orderer"                4 minutes ago       Up 4 minutes        0.0.0.0:7050->7050/tcp                             orderer.example.com
d4875001e448        hyperledger/fabric-peer      "peer node start"        4 minutes ago       Up 4 minutes        0.0.0.0:7051->7051/tcp, 0.0.0.0:7053->7053/tcp     peer0.org1.example.com
9517f14308f6        hyperledger/fabric-peer      "peer node start"        4 minutes ago       Up 4 minutes        0.0.0.0:10051->7051/tcp, 0.0.0.0:10053->7053/tcp   peer1.org2.example.com
97ea015136bc        hyperledger/fabric-peer      "peer node start"        4 minutes ago       Up 4 minutes        0.0.0.0:8051->7051/tcp, 0.0.0.0:8053->7053/tcp     peer1.org1.example.com
116b0d99d316        hyperledger/fabric-peer      "peer node start"        4 minutes ago       Up 4 minutes        0.0.0.0:9051->7051/tcp, 0.0.0.0:9053->7053/tcp     peer0.org2.example.com

你可能感兴趣的:(区块链)