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

原创
2018/08/01 14:19
阅读数 1.7W

#基于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. 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. sudo chmod +x /usr/local/bin/docker-compose
    
    	3. docker-compose -v(如果出现不存在这个文件或目录,尝试重启WSL,直接关掉命令行重开)
    
  3. golang

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

    	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. 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. 设置环境变量GOROOT和GOPATH
    	4. go version
    

    windows下安装:

    	[下载链接](https://golang.org/dl/)
    	注意配置GOPATH和GOROOT环境变量
    
  4. python

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

    windows下安装(2.7.14):

    	[下载链接](https://www.python.org/downloads/)
    
  5. nodejs & npm

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

    	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. 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. 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. node -v && npm -v
    

    windows下安装:

    	[下载链接](https://nodejs.org/en/download/)
    
    	要全局安装windows-build-tools以使用c++写的node库:
    	npm install --global windows-build-tools
    
  6. git

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

    如果想在windows下安装:

    	[下载链接](https://git-scm.com/downloads)
    
    	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源代码

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

    	[fabric路径]/scripts/bootstrap.sh
    

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

  3. 运行first-network

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

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

    可能出现的一些问题:

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

    • make command not found

      	apt install make
      
    • g++ command not found

      	apt install build-essential
      
    • Please Install 'jq'

      	apt install jq
      
    • client.getEventHubsForOrg is not a function

      	查看package.json中sdk的版本,确定是1.2.0
      
    • timed out after:60000

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

  5. 运行chaincode开发模式

    按照以下步骤进行:

    	第一个shell
    
    	cd [fabric-sample路径]/chaincode-docker-devmode/
    	docker-compose -f docker-compose-simple.yaml up -d
    
    	docker exec -it chaincode bash
    
    	cd sass/
    
    	go build
    
    	CORE_PEER_ADDRESS=peer:7052 CORE_CHAINCODE_ID_NAME=mycc:0 ./sacc
    
    	打开第二个shell
    
    	docker exec -it cli bash
    
    	peer chaincode install -p chaincodedev/chaincode/sacc -n mycc -v 0
    
    	peer chaincode instantiate -n mycc -v 0 -c '{"Args":["a","10"]}' -C myc
    
    	peer chaincode invoke -n mycc -c '{"Args":["set", "a", "20"]}' -C myc
    
    	peer chaincode query -n mycc -c '{"Args":["query","a"]}' -C myc
    
    	回到第一个shell
    
    	修改sass链码(链码的修改首先当然是要看懂链码啦,只要再接下来的步骤能体现出修改过就好了)
    
    	go build
    
    	CORE_PEER_ADDRESS=peer:7052 CORE_CHAINCODE_ID_NAME=mycc:0 ./sacc
    
    	去到第二个shell
    
    	peer chaincode invoke -n mycc -c '{"Args":["set", "a", "20"]}' -C myc
    
    	peer chaincode query -n mycc -c '{"Args":["query","a"]}' -C myc
    
展开阅读全文
加载中

作者的其它热门文章

打赏
0
0 收藏
分享
打赏
1 评论
0 收藏
0
分享
返回顶部
顶部