【Hyper ledger学习】Windows 10安装部署Hyper ledger记录(一)

Hyper ledger在win 10(Win10 Pro, Win10 Education)上的安装主要有以下几步(我自己用的Win 10 教育版):

  1. Docker for Windows 安装
  2. Curl for Windows 安装
  3. Go 语言安装
  4. Node.js 和 NPM 安装
  5. Python 2.7安装
  6. Windows-build-tools 和 grpc 安装
  7. Hyperledger Fabric 1.4.4 Samples, Binaries and Docker Images安装
  8. Fabric 网络测试

Step 1: 安装Docker for Windows 10

现在Docker已经支持Win 10,并且有.exe桌面版可供下载。

下载链接:Docker Desktop and Desktop Enterprise

点击Download Desktop for Mac and Windows,需要注册docker账号才下载。下载完成后,直接打开Docker Desktop Installer.exe即可安装,默认安装即可。

docker.PNG
docker.PNG

安装完成后,启动docker。右键docker图标,选择Settings

设置General,勾选Expose daemon on tcp://localhost:2375 without TLS

docker.PNG

设置Shared Drives(可以勾选所有),我设置了D盘。

docker.PNG

系统要求:Docker for windows 安装文档

  • Windows 10 64-bit: Pro, Enterprise, or Education (Build 15063 or later).
  • Hyper-V and Containers Windows features must be enabled. (参考:如何开启和使用windows 10中的Hyper-v)
  • The following hardware prerequisites are required to successfully run Client Hyper-V on Windows 10:
  • 64 bit processor with Second Level Address Translation (SLAT)
  • 4GB system RAM
  • BIOS-level hardware virtualization support must be enabled in the BIOS settings. For more information, see Virtualization.

接下来的步骤根据Hyper Ledger 1.4 说明文档的Getting Started来操作。

检查Docker是否安装成功:

$ docker --version
Docker version 19.03.5, build 633a0ea
$ docker-compose --version
docker-compose version 1.24.1, build 4667896b

可以使用Docker命令pull,删除,查看,运行镜像:
Docker官网上有它们给出的一些官方镜像,例如hello-world

$ docker pull hello-world
$ docker rmi hello-world
$ docker images
$ docker run hello-world

Step 2: 安装Curl for Windows

现在Curl已经提供了比较简单的.exe安装方式。安装Curl for 64-bit.exe文件应该在bin文件夹中。

此时,你可以在cmd窗口中使用curl命令检查是否安装成功。

curl --help

当然也可以安装Git Bash 64-bit for Windows,自带Curl命令。在运行clone命令前,要做一些设置:

$ git config --global core.autocrlf false
$ git config --global core.longpaths true

你可以通过以下命令检查设置是否成功:

$ git config --get core.autocrlf
false
$ git config --get core.longpaths
true

注意:git bash自带的curl命令无法在powershell和cmd中使用。

Step 3: 安装Go语言

版本要求:Go version 1.12.x is required.

Go语言安装路径需要在环境变量中设置,在用户变量中添加,一般win10安装完已自动添加,检查一下GOPATH是否存在即可。

也可以在命令行中检查:

$ go help
Go is a tool for managing Go source code.
...
2 Go.PNG

Step 4: 安装Node.js 和 NPM

因为我之前已经安装过,所以简单给出链接。

下载地址:Node.js Windows Installer (.msi) 64-bit

检查是否安装成功:

$ node -v
v10.16.0
$ npm -v
6.9.0

Step 5: 安装Python 2.7

下载安装Python 2.7,并将python.exe所在路径添加到系统环境变量Path

检查是否安装成功:

$ python --version
Python 2.7.17

Step 6: 安装Windows-build-tools 和 grpc

使用npm命令安装windows-build-tools

$ npm install --global windows-build-tools

使用npm命令安装grpc

$ npm install --global grpc

Step 7: 安装Hyperledger Fabric Samples, Binaries and Docker Images

前提:已经安装了Git Bash

Clone [hyperledger/fabric-samples]( hyperledger/fabric-samples repository) repository
选择一个位置/文件夹,在该文件夹中右键打开Git Bash,输入以下命令:

$ curl -sSL http://bit.ly/2ysbOFE | bash -s

如果运行结果,关于curl命令报错,可能是你的curl版本太低不支持重定向,或者是你的运行环境不支持,还有一种是网络不好。

可以直接使用un-shortened URL代替,命令如下:

$ curl -sSL https://raw.githubusercontent.com/hyperledger/fabric/master/scripts/bootstrap.sh | bash -s

下载完成后,可以在文件夹中看到fabric-samples文件夹。

在下载过程可能会因为网速不好卡住已经docker images下载不成功。
我尝试了另一种解决办法,根据区块链框架hyperledger Fabric1.2,win10,docker18.6,资产转移实例。重新找到一个新文件夹:

  1. 直接通过git clone命令下载fabric-samples
  2. 找到fabric-samples/basic-network/.env文件,增加配置COMPOSE_CONVERT_WINDOWS_PATHS=1
  3. 进入fabric-samples/basic-network文件夹,cmd输入命令:
    docker-compose -f docker-compose.yml up -d
    这条命令可以网络环境不好的时候比较容易的下载docker images,还可以看到实时进度(git bash 中的curl命令看不到下载进度)。而且神奇的是,当cmd中镜像下载顺利时,之前git bash中下载艰难的docker images也比较顺利的下载下来了。

Git Bash安装成功,会显示:

...
Digest: sha256:048b7c44c1deaabd0f3d84fbf2f7b649d7b10c54a3241c7354f078ee2eff077c
Status: Downloaded newer image for hyperledger/fabric-couchdb:0.4.18
docker.io/hyperledger/fabric-couchdb:0.4.18

===> List out hyperledger docker images
hyperledger/fabric-ca        latest              62a60c5459ae        2 weeks ago         150MB
hyperledger/fabric-orderer   latest              dbc9f65443aa        2 weeks ago         120MB
hyperledger/fabric-peer      1.4.4               9756aed98c6b        2 weeks ago         128MB
hyperledger/fabric-peer      latest              9756aed98c6b        2 weeks ago         128MB
hyperledger/fabric-kafka     0.4.18              caaae0474ef2        4 weeks ago         270MB
hyperledger/fabric-kafka     latest              caaae0474ef2        4 weeks ago         270MB
hyperledger/fabric-couchdb   0.4.18              d369d4eaa0fd        4 weeks ago         261MB
hyperledger/fabric-couchdb   latest              d369d4eaa0fd        4 weeks ago         261MB

同时,我们也可以使用docker 命令查看镜像:

$ docker images
REPOSITORY                   TAG                 IMAGE ID            CREATED             SIZE
couchdb                      2.3                 246ed3915b76        13 days ago         201MB
hyperledger/fabric-ca        latest              62a60c5459ae        2 weeks ago         150MB
hyperledger/fabric-tools     latest              7552e1968c0b        3 weeks ago         1.49GB
hyperledger/fabric-orderer   latest              dbc9f65443aa        3 weeks ago         120MB
hyperledger/fabric-peer      1.4.4               9756aed98c6b        3 weeks ago         128MB
hyperledger/fabric-peer      latest              9756aed98c6b        3 weeks ago         128MB
hyperledger/fabric-kafka     0.4.18              caaae0474ef2        4 weeks ago         270MB
hyperledger/fabric-kafka     latest              caaae0474ef2        4 weeks ago         270MB
hyperledger/fabric-couchdb   0.4.18              d369d4eaa0fd        4 weeks ago         261MB
hyperledger/fabric-couchdb   latest              d369d4eaa0fd        4 weeks ago         261MB
hello-world                  latest              fce289e99eb9        11 months ago       1.84kB

Step 8: 测试Fabric网络

  1. 进入使用curl -sSL命令下载的fabric-samples文件夹。
  2. 打开first-network文件夹,右键Git Bash,输入命令./byfn.sh up
$ ./byfn.sh up
Starting for channel 'mychannel' with CLI timeout of '10' seconds and CLI delay of '3' seconds
Continue? [Y/n] Y
proceeding ...
LOCAL_VERSION=1.4.4
DOCKER_IMAGE_VERSION=1.4.4
/d/Fabric/fabric-samples/bin/cryptogen

##########################################################
##### Generate certificates using cryptogen tool #########
##########################################################
+ cryptogen generate --config=./crypto-config.yaml
org1.example.com
org2.example.com
+ res=0
+ set +x

Generate CCP files for Org1 and Org2
/d/Fabric/fabric-samples/bin/configtxgen
##########################################################
#########  Generating Orderer Genesis block ##############
##########################################################
...
CONTAINER ID        IMAGE                               COMMAND                  CREATED             STATUS                    PORTS                                        NAMES
c987f06d5472        hyperledger/fabric-tools:latest     "/bin/bash"              1 second ago        Up Less than a second                                                  cli
5f7c1878ec5d        hyperledger/fabric-peer:latest      "peer node start"        4 seconds ago       Up 2 seconds              0.0.0.0:7051->7051/tcp                       peer0.org1.example.com
197369a05c04        hyperledger/fabric-orderer:latest   "orderer"                4 seconds ago       Up 2 seconds              0.0.0.0:7050->7050/tcp                       orderer.example.com
4aa55b8e307e        hyperledger/fabric-peer:latest      "peer node start"        6 seconds ago       Up 3 seconds              0.0.0.0:8051->8051/tcp                       peer1.org1.example.com
52bca558ece3        hyperledger/fabric-peer:latest      "peer node start"        6 seconds ago       Up 2 seconds              0.0.0.0:9051->9051/tcp                       peer0.org2.example.com
8f8cda4cd237        hyperledger/fabric-peer:latest      "peer node start"        6 seconds ago       Up 3 seconds              0.0.0.0:10051->10051/tcp                     peer1.org2.example.com
f3150caa214c        hyperledger/fabric-ca               "sh -c 'fabric-ca-se…"   16 hours ago        Up 16 hours               0.0.0.0:7054->7054/tcp                       ca.example.com
430ce35b0147        couchdb:2.3                         "tini -- /docker-ent…"   16 hours ago        Up 16 hours               4369/tcp, 9100/tcp, 0.0.0.0:5984->5984/tcp   couchdb
f588def0ae2b        hello-world                         "/hello"                 18 hours ago        Exited (0) 18 hours ago                                                dazzling_blackwell
78a7432d31f9        hello-world                         "/hello"                 18 hours ago        Exited (0) 18 hours ago                                                blissful_gould
ea4ba133ebbe        hello-world                         "/hello"                 18 hours ago        Exited (0) 18 hours ago                                                interesting_easley

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

Build your first network (BYFN) end-to-end test
...
===================== Query successful on peer1.org2 on channel 'mychannel' =====================

========= All GOOD, BYFN execution completed ===========


 _____   _   _   ____
| ____| | \ | | |  _ \
|  _|   |  \| | | | | |
| |___  | |\  | | |_| |
|_____| |_| \_| |____/

byfn.sh时一个测试脚本,它首先使用2个organizations org1和org2建立网络,每个organization分别有2个peer和1个orderer。

注意:区块链框架hyperledger Fabric1.2,win10,docker18.6,资产转移实例中测试网络的方式,我无法测试成功,并且在first-network中运行./byfn.sh up也会报错。我仅用它来辅助我下载docker images (也就是curl -sSL那句命令)。

  1. 当你看到上图end时,表示已经完成了first-network的测试,现在可以使用./eyfn.sh down清理网络。
$ ./eyfn.sh down
Stopping with channel 'mychannel' and CLI timeout of '10' seconds and CLI delay of '3' seconds
Continue? [Y/n] Y
proceeding ...
Stopping cli                    ... done
Stopping peer0.org1.example.com ... done
Stopping orderer.example.com    ... done
...
Deleted: sha256:68dddcb8c4f18ae92776f71177254ef70b94b3c1567eed6c60d09196b145adc8
Deleted: sha256:c579f2e094f84bd633ae0c0bec275b776ce7394464db5c7968b1b9e08b606e06

注意:网络上我看的教程,大多使用./byfn down关闭网络,但是我会报错:

$ ./byfn down
bash: ./byfn: No such file or directory`

重新试了./byfn.sh down,同样可以关闭网络,一定要有.sh


本文作者:Joyce
文章来源:https://www.jianshu.com/p/d9dd6fdf2544
版权声明:转载请注明出处!

你可能感兴趣的:(【Hyper ledger学习】Windows 10安装部署Hyper ledger记录(一))