以前筆者寫了一篇Fabric1.0 Beta的部署和Fabric 1.0的多機部署。可是不少人在部署Fabric的時候仍是很容易出問題,因此我就再把Fabric 1.0的單機環境搭建講一下。其實不少內容和前面博客相同。下面開始咱們的環境搭建工做:python
這一步其實沒啥好說的,下載好最新版的VirtualBox,下載Ubuntu Server,我用的是Ubuntu16.04.2 X64 Server。在安裝完Ubuntu後,須要保證apt source是國內的,否則若是是國外的話會很慢很慢的。具體作法是linux
sudo vi /etc/apt/sources.list
打開這個apt源列表,若是其中看到是http://us.xxxxxx之類的,那麼就是外國的,若是看到是http://cn.xxxxx之類的,那麼就不用換的。個人是美國的源,因此須要作一下批量的替換。在命令模式下,輸入:git
:%s/us./cn./g
就能夠把全部的us.改成cn.了。而後輸入:wq便可保存退出。github
sudo apt-get update
更新一下源。golang
而後安裝ssh,這樣接下來就能夠用putty或者SecureCRT之類的客戶端遠程鏈接Ubuntu了。docker
sudo apt-get install ssh
Ubuntu的apt-get雖然提供了Go的安裝,可是版本比較舊,最好的方法仍是參考官方網站 https://golang.org/dl/ ,下載最新版的Go。具體涉及到的命令包括:json
wget https://storage.googleapis.com/golang/go1.9.linux-amd64.tar.gz sudo tar -C /usr/local -xzf go1.9.linux-amd64.tar.gz
【注意:不要使用apt方式安裝go,apt的go版本過低了!】
接下來編輯當前用戶的環境變量:api
vi ~/.profile
添加如下內容:bash
export PATH=$PATH:/usr/local/go/bin export GOROOT=/usr/local/go export GOPATH=$HOME/go export PATH=$PATH:$HOME/go/bin
編輯保存並退出vi後,記得把這些環境載入:網絡
source ~/.profile
咱們把go的目錄GOPATH設置爲當前用戶的文件夾下,因此記得建立go文件夾
cd ~
mkdir go
咱們可使用阿里提供的鏡像,安裝也很是方便。經過如下命令來安裝Docker
curl -sSL http://acs-public-mirror.oss-cn-hangzhou.aliyuncs.com/docker-engine/internet | sh -
安裝完成後須要修改當前用戶(我使用的用戶叫fabric)權限:
sudo usermod -aG docker fabric
註銷並從新登陸,而後添加阿里雲的Docker Hub鏡像:
sudo mkdir -p /etc/docker sudo tee /etc/docker/daemon.json <<-'EOF' { "registry-mirrors": ["https://obou6wyb.mirror.aliyuncs.com"] } EOF sudo systemctl daemon-reload sudo systemctl restart docker
不一樣的版本添加方法是不同的,官方的文檔以下:
固然以爲阿里雲鏡像很差用,喜歡用DaoClound的也能夠用DaoClound的鏡像。DaoCloud的鏡像設置文檔爲:https://www.daocloud.io/mirror#accelerator-doc
Docker-compose是支持經過模板腳本批量建立Docker容器的一個組件。在安裝Docker-Compose以前,須要安裝Python-pip,運行腳本:
sudo apt-get install python-pip
而後是安裝docker-compose,咱們從官方網站(https://github.com/docker/compose/releases)下載也能夠從國內的進行DaoClound下載,爲了速度快接下來從DaoClound安裝Docker-compose,運行腳本:
curl -L https://get.daocloud.io/docker/compose/releases/download/1.12.0/docker-compose-`uname -s`-`uname -m` > ~/docker-compose sudo mv ~/docker-compose /usr/local/bin/docker-compose chmod +x /usr/local/bin/docker-compose
咱們可使用Git命令下載源碼,首先須要創建對應的目錄,而後進入該目錄,Git下載源碼:
mkdir -p ~/go/src/github.com/hyperledger
cd ~/go/src/github.com/hyperledger
git clone https://github.com/hyperledger/fabric.git
因爲Fabric一直在更新,全部咱們並不須要最新最新的源碼,須要切換到v1.0.0版本的源碼便可:
cd ~/go/src/github.com/hyperledger/fabric git checkout v1.0.0
這個其實很簡單,由於咱們已經設置了Docker Hub鏡像地址,因此下載也會很快。官方文件也提供了批量下載的腳本。咱們直接運行:
cd ~/go/src/github.com/hyperledger/fabric/examples/e2e_cli/ source download-dockerimages.sh -c x86_64-1.0.0 -f x86_64-1.0.0
這樣就能夠下載全部須要的Fabric Docker鏡像了。因爲咱們設置了國內的鏡像,因此下載應該是比較快的。
下載完畢後,咱們運行如下命令檢查下載的鏡像列表:
docker images
獲得的結果以下:
咱們仍然停留在e2e_cli文件夾,這裏提供了啓動、關閉Fabric網絡的自動化腳本。咱們要啓動Fabric網絡,並自動運行Example02 ChainCode的測試,執行一個命令:
./network_setup.sh up
這個作了如下操做:
7.1編譯生成Fabric公私鑰、證書的程序,程序在目錄:fabric/release/linux-amd64/bin
7.2基於configtx.yaml生成創世區塊和通道相關信息,並保存在channel-artifacts文件夾。
7.3基於crypto-config.yaml生成公私鑰和證書信息,並保存在crypto-config文件夾中。
7.4基於docker-compose-cli.yaml啓動1Orderer+4Peer+1CLI的Fabric容器。
7.5在CLI啓動的時候,會運行scripts/script.sh文件,這個腳本文件包含了建立Channel,加入Channel,安裝Example02,運行Example02等功能。
最後運行完畢,咱們能夠看到這樣的界面:
若是您看到這個界面,這說明咱們整個Fabric網絡已經通了。
咱們仍然是以如今安裝好的Example02爲例,在官方例子中,channel名字是mychannel,鏈碼的名字是mycc。咱們首先進入CLI,咱們從新打開一個命令行窗口,輸入:
docker exec -it cli bash
運行如下命令能夠查詢a帳戶的餘額:
peer chaincode query -C mychannel -n mycc -c '{"Args":["query","a"]}'
能夠看到餘額是90:
而後,咱們試一試把a帳戶的餘額再轉20元給b帳戶,運行命令:
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帳戶的餘額,沒問題的話,應該是隻剩下70了。咱們看看實際狀況:
果真,一切正常。最後咱們要關閉Fabric網絡,首先須要運行exit命令退出cli容器。關閉Fabric的命令與啓動相似,命令爲:
cd ~/go/src/github.com/hyperledger/fabric/examples/e2e_cli ./network_setup.sh down
如今咱們整個Fabric的環境已經測試完畢,恭喜,一切正常,接下來咱們就是去作本身的區塊鏈的開發。但願個人文章對你們有所幫助。