環境說明:
vmware workstation 12
ubuntu 16 desktop版本的
windows10
下面我將一步一步的進行操作搭建起fabric的開發環境,可以運行簡單的例子程序。第一步是將需要的工具安裝上,前提ubuntu可以上網。爲了避免訪問github.com等網站被牆,需要提前給ubuntu設置好網絡代理,前提主機可以用工具進行翻牆。
如何設置網絡代理:參考https://www.atgfw.org/2015/04/0.html
需要的工具安裝:
git:
先執行以下: apt-get update, 然後直接執行apt install git進行安裝。
golang:
參考:http://www.linuxdiyf.com/linux/24581.html
我的配置:
export GOROOT="/usr/local/go" //這個是你的golang解壓後的路徑
export GOBIN=$GOROOT/bin
export GOPATH=/opt/gopath //這個目錄後面自己會創建出來,不要忘了在該目錄下建立bin, src, pkg三個目錄
export PATH=$PATH:$GOBIN
curl:
參考:http://www.linuxidc.com/Linux/2014-11/109910.htm
docker:
直接執行集成腳本:curl -sSL http://acs-public-mirror.oss-cn-hangzhou.aliyuncs.com/docker-engine/internet | sh -
然後執行run測試一下,如下圖所示:
pip:
執行:apt install python-pip
docker-composer:
參考:https://yeasy.gitbooks.io/docker_practice/content/compose/install.html
執行:sudo pip install -U docker-compose
可以執行:docker-compose --version檢查一下是否安裝成功,如下圖所示:
node.js:
(建議創建一個目錄專門存放需要下載的壓縮包)
在該目錄下執行:wget https://nodejs.org/download/release/v6.9.5/node-v6.9.5-linux-x64.tar.gz
然後進行解壓:tar -zxvf node-v6.9.5-linux-x64.tar.gz
然後進入到該解壓包的bin/下,可以看到一個node的執行文件,執行./node -v可以看到版本號:6.9.5
對配置文件.bashrc進行設置:vim ~/.bashrc
在PATH變量後面加上一個冒號和你的該node執行文件的路徑,如下圖所示:(保存退出)
然後執行:
source ~/.bashrc
可以檢查一下是否安裝成功了:
佈置環境:
1:下載代碼
創建一個放項目的目錄:mkdir -p /opt/gopath/src/github.com/hyperledger (很多資料和腳本都會自動去找這個目錄,建議這樣創建)
進入該目錄:cd /opt/gopath/src/github.com/hyperledger/
下載代碼:git clone http://gerrit.hyperledger.org/r/fabric
或者: git clone https://git.oschina.net/mellymeng/fabric.git
這是目錄下回多一個文件夾fabric,進去就是fabric項目了。
2:下載鏡像
可以使用腳本進行自動下載:
curl -sSL https://goo.gl/iX9dek | bash
如果你報端口443拒絕連接可以參考一下我的解決方法,比較傻瓜式的:
其中prepare文件中將https://goo.gl/iX9dek網頁上面的腳本內容拷貝進去,保存。
這個腳本文件會把平臺需要的二進制文件下載下來(多一個bin目錄), 而來會把需要的鏡像都下載下來。(需要等待一些時間)
下載鏡像會比較的慢,請用阿里加速器,我之前有寫這方面博客(http://blog.csdn.net/mellymengyan/article/details/77323691),或者百度一下。
鏡像下載以後:
並且會多一個bin目錄,下面是需要的二進制執行文件:
下面編輯一下配置文件~/.bashrc將該bin目錄加上:
編譯代碼:
執行make docker命令,一直到success。
(中間會出現各種各樣的問題,可以參考我的前面的文章,看看有沒有幫助:http://blog.csdn.net/mellymengyan/article/details/77529747)
運行e2e_cli例子(自動):
進入到fabric目錄中,執行:git checkout v1.0.0, 將版本1.0確認一下。
進入examples/e2e_cli中,執行:source download-dockerimages.sh -c x86_64-1.0.0 -f x86_64-1.0.0, 將所有需要的鏡像全部下載下來,latest版本,最終將會看到如下:
在e2e_cli中,有自動啓動,關閉網絡的腳本,並且在腳本中設置了自動執行測試的腳本,測試中用到了example02 chaincode例子。接下來執行
./network_setup.sh up 命令啓動fabric網絡。啓動過程中主要分爲兩個過程:
1:進行相關的部署和準備工作:
2:執行測試腳本,部署example02例子並執行:
最後出現這個畫面,說明所有的測試都是正常的,成功的!
運行e2e_cli例子(手動):
我們可以直接在上面fabric網絡啓動起來,並跑完測試例子的基礎上進行手動測試:
執行docker ps,查看當前的容器狀態:
上面三個dev開頭的容器是三個鏈碼容器,一個fabric-tools充當客戶端cli, 4個fabric-peer, 一個fabric-order提供節點共識服務。
接下里我們執行:docker exec -it cli bash 進入cli容器,進行操作測試:
首先,在example02上面已經對a進行了初始化,所以我們不用再初始化了,直接進行查詢:
peer chaincode query -C mychannel -n mycc -c '{"Args":["query","a"]}'
查詢結果爲90, 說明a現在有90元。
下面我們做一個交易,a向b轉賬20元。
peer chaincode invoke -o orderer.example.com:7050 --tls true --cafile /opt/gopath/src/github.com/hyperledger/fabric/peer/crypto/ordererOrganizations/example.com/orderers/orderer.example.com/msp/tlscacerts/tlsca.example.com-cert.pem -C mychannel -n mycc -c '{"Args":["invoke","a","b","20"]}'
然後再查詢a: peer chaincode query -C mychannel -n mycc -c '{"Args":["query","a"]}'
發現A還剩70了,說明是正確的。通過exit來退出該容器。
至此,例子和環境都成功了。最後執行./network_setup.sh down, 進行網絡的關閉和清理。