基于windows的hyperledger/fabric开发环境搭建

标签:联盟链
发布时间:2018年10月25日 价值:20000.00 / 共识:28

基于windows的hyperledger/fabric开发环境搭建

前言

其实,有了WSL后,windows上的环境搭建已经没那么复杂了除了docker,把docker配起来基本就没什么问题了,其他工具的安装和Linux上的基本一致,至于在windows上的工具安装则是根据自己的需求了(笔者只需要在windows上可以进行golang、nodejs开发就够了)

环境

经过配置的可以在WSL上使用docker的windows 10系统(参考Linux on Windows(WSL)上使用docker)
WSL:Ubuntu 18.04
fabric:1.2

安装必须的工具

docker已经在参考博文中完成了安装,fabric要求版本是17.06.2-ce or greater
安装在windows中的工具主要是为了开发方便

  1. curl

    WSL自带了7.58.0版本

  2. docker-compose

    要求版本是1.14.0 or greater,安装docker-tools的时候会自动安装一个,但是命令是docker-compose.exe,不方便使用,所以要在WSL中安装,而apt安装的docker-compose版本太低,只能使用docker官方的安装方式:

    1. 1. sudo curl -L https://github.com/docker/compose/releases/download/1.22.0/docker-compose-$(uname -s)-$(uname -m) -o /usr/local/bin/docker-compose
    2. 2. sudo chmod +x /usr/local/bin/docker-compose
    3. 3. docker-compose -v(如果出现不存在这个文件或目录,尝试重启WSL,直接关掉命令行重开)
  3. golang

    要求版本是1.10.x,WSL中安装(go1.10.3.linux-amd64):

    1. 1. sudo curl -L https://dl.google.com/go/go1.10.3.linux-amd64.tar.gz -o /usr/local/go1.10.3.linux-amd64.tar.gz(这个链接应该在墙外,翻出去吧。不然就百度一个可以用的网址下载)
    2. 2. sudo tar -xzvf /usr/local/go1.10.3.linux-amd64.tar.gz -C /usr/local/ && sudo rm /usr/local/go1.10.3.linux-amd64.tar.gz
    3. 3. 设置环境变量GOROOTGOPATH
    4. 4. go version

    windows下安装:

    下载链接

    注意配置GOPATH和GOROOT环境变量

  4. python

    要求版本是2.7.x,WSL自带2.7.12

    windows下安装(2.7.14):

    下载链接

  5. nodejs & npm

    要求版本是8.9.x or greater but not 9.x & 5.6.0,,WSL中安装(8.11.3 & 5.6.0):

    1. 1. sudo curl -L https://nodejs.org/dist/v8.11.3/node-v8.11.3-linux-x64.tar.xz -o /usr/local/node-v8.11.3-linux-x64.tar.xz
    2. 2. sudo tar -xvf /usr/local/node-v8.11.3-linux-x64.tar.xz -C /usr/local/ && sudo rm /usr/local/node-v8.11.3-linux-x64.tar.xz(居然可以直接解压xz文件)
    3. 3. ln -s /usr/local/node-v8.11.3-linux-x64/lib/node_modules/npm/bin/np ./bin/node && ln -s /usr/local/node-v8.11.3-linux-x64/lib/node_modules/npm/bin/npm-cli.js ./bin/npm
    4. 4. node -v && npm -v

    windows下安装:

    下载链接

    要全局安装windows-build-tools以使用c++写的node库:
    npm install —global windows-build-tools

  6. git

    要求版本是2.9.x or greater,WSL自带git2.17.0

    如果想在windows下安装:

    下载链接

    windows的git安装后需要使用git bash修改下autocrlf和longpaths的配置:
    git config —global core.autocrlf false
    git config —global core.longpaths true

  7. WebStorm

    安装该IDE开发golang和JavaScript

下载fabric内容和开始运行

fabric的版本为1.2

  1. 下载fabric源代码

    1. git clone -b release-1.2.0 https://github.com/hyperledger/fabric.git
  2. 下载fabric-samples、二进制工具和docker镜像

    1. [fabric路径]/scripts/bootstrap.sh

    samples会下载在当前目录,二进制工具在samples下的bin文件夹
    在下载二进制工具和docker镜像的时候有可能因为网络原因而中断,可以选择重新执行脚本,也可以自己把阅读脚本后自行下载

  3. 运行first-network

    1. cd [fabric-sample路径]/first-network/
    2. ./byfn.sh up
    3. ./byfn.sh down
  4. 运行balance-transfer

    1. cd [fabric-sample路径]/balance-transfer/
    2. vim ./artifacts/network-config.yaml
    3. 修改localhost192.168.99.100(虚拟机的地址)
    4. ./runApp.sh
    5. ./testAPIs.sh
    6. 测试完需要把docker网络卸载,这个看runApp.sh

    可能出现的一些问题:

    如果是npm install过程出错,按提示解决后,最好把node_modules删了再从runApp.sh开始,其他的问题都是从runApp.sh开始

    • make command not found

      1. apt install make
    • g++ command not found

      1. apt install build-essential
    • Please Install ‘jq’

      1. apt install jq
    • client.getEventHubsForOrg is not a function

      1. 查看package.jsonsdk的版本,确定是1.2.0
    • timed out after:60000

      1. vim ./testAPIs.sh
      2. 在出错的请求前加上"sleep 10",休眠10秒,如果还不行,可以尝试休眠足够长的时间
      3. 再不行,就:
      4. vim ./app/instantiate-chaincode.js
      5. 修改两处的60000超时设置
    • 在不同环境和因素的影响下可能不止有以上问题,但是笔者没有遇到,遇到再添加~。~

  5. 运行chaincode开发模式

    按照以下步骤进行:

    1. 第一个shell
    2. cd [fabric-sample路径]/chaincode-docker-devmode/
    3. docker-compose -f docker-compose-simple.yaml up -d
    4. docker exec -it chaincode bash
    5. cd sass/
    6. go build
    7. CORE_PEER_ADDRESS=peer:7052 CORE_CHAINCODE_ID_NAME=mycc:0 ./sacc
    8. 打开第二个shell
    9. docker exec -it cli bash
    10. peer chaincode install -p chaincodedev/chaincode/sacc -n mycc -v 0
    11. peer chaincode instantiate -n mycc -v 0 -c '{"Args":["a","10"]}' -C myc
    12. peer chaincode invoke -n mycc -c '{"Args":["set", "a", "20"]}' -C myc
    13. peer chaincode query -n mycc -c '{"Args":["query","a"]}' -C myc
    14. 回到第一个shell
    15. 修改sass链码(链码的修改首先当然是要看懂链码啦,只要再接下来的步骤能体现出修改过就好了)
    16. go build
    17. CORE_PEER_ADDRESS=peer:7052 CORE_CHAINCODE_ID_NAME=mycc:0 ./sacc
    18. 去到第二个shell
    19. peer chaincode invoke -n mycc -c '{"Args":["set", "a", "20"]}' -C myc
    20. peer chaincode query -n mycc -c '{"Args":["query","a"]}' -C myc
  • 分享 收藏
0 条评论
  • 这篇文章暂无评论,赶紧评论一下吧~