天天看點

快速搭建一個Fabric 1.0的環境 超級記賬本:快速搭建一個Hyperledger Fabric 1.0的環境

超級記賬本:快速搭建一個Hyperledger Fabric 1.0的環境

下面開始我們的環境搭建工作:

1. 使用VirtualBox并在其中安裝好Ubuntu

這一步其實沒啥好說的,下載下傳好最新版的VirtualBox,下載下傳Ubuntu Server,我用的是Ubuntu16.04.2 X64 Server。在安裝完Ubuntu後,需要保證apt source是國内的,不然如果是國外的話會很慢很慢的。具體做法是

sudo vi /etc/apt/sources.list      

打開這個apt源清單,如果其中看到是http://us.xxxxxx之類的,那麼就是外國的,如果看到是http://cn.xxxxx之類的,那麼就不用換的。我的是美國的源,是以需要做一下批量的替換。在指令模式下,輸入:

:%s/us./cn./g      

就可以把所有的us.改為cn.了。然後輸入:wq即可儲存退出。

sudo apt-get update      

更新一下源。

然後安裝ssh,這樣接下來就可以用putty或者SecureCRT之類的用戶端遠端連接配接Ubuntu了。

sudo apt-get install ssh      

2. Go的安裝

Ubuntu的apt-get雖然提供了Go的安裝,但是版本比較舊,最好的方法還是參考官方網站,下載下傳最新版的Go。具體涉及到的指令包括:

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版本太低了!】      

接下來編輯目前使用者的環境變量:

vi ~/.profile      

添加以下内容:

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      

3. Docker安裝

我們可以使用阿裡提供的鏡像,安裝也非常友善。通過以下指令來安裝Docker

curl -sSL http://acs-public-mirror.oss-cn-hangzhou.aliyuncs.com/docker-engine/internet | sh -
如果安裝失敗:
      

簡單方法

$ sudo apt-get update
$ sudo apt-get install docker
           

搞定!

但是這種方法有一個缺點:安裝的不一定是最新的docker,安裝版本是1.10.2,不過,對于docker使用沒任何什麼問題,如果要後續更新友善,可以使用下面的方法。

另一種方法

1.切換到root權限或者用sudo

2.更新source清單并保證https和ca證書成功安裝

# apt-get update




           

# apt-get install apt-transport-https ca-certificates

3.增加新的GPG 密鑰

# apt-key adv --keyserver hkp://p80.pool.sks-keyservers.net:80 --recv-keys 58118E89F3A912897C070ADBF76221572C52609D
           

4.新增或編輯source清單裡的docker.list檔案

# vi /etc/apt/sources.list.d/docker.list  //如果不存在就新增
           

5.删除已有的entries

6.按照系統版本增加entry(Ubuntu Xenial 16.04 (LTS))

deb https://apt.dockerproject.org/repo ubuntu-xenial main
           

7.重新執行更新操作,并删除老的repo

# apt-get purge lxc-docker  //沒有安裝的話,跳過
           

8.檢視是否有正确的可用版本

# apt-cache policy docker-engine
           

如圖:

快速搭建一個Fabric 1.0的環境 超級記賬本:快速搭建一個Hyperledger Fabric 1.0的環境

9.從14.04版本以上開始docker推薦安裝linux-image-extra

# apt-get install linux-image-extra-$(uname -r)
           

10.安裝docker

# apt-get update




           

# apt-get install docker-engine # service docker start # docker run hello-world

安裝完成後需要修改目前使用者(我使用的使用者叫fabric)權限:

sudo usermod -aG docker fabric      

登出并重新登入,然後添加阿裡雲的Docker Hub鏡像:

快速搭建一個Fabric 1.0的環境 超級記賬本:快速搭建一個Hyperledger Fabric 1.0的環境
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      
快速搭建一個Fabric 1.0的環境 超級記賬本:快速搭建一個Hyperledger Fabric 1.0的環境

不同的版本添加方法是不一樣的,官方的文檔如下:

https://cr.console.aliyun.com/#/accelerator

當然覺得阿裡雲鏡像不好用,喜歡用DaoClound的也可以用DaoClound的鏡像。DaoCloud的鏡像設定文檔為:https://www.daocloud.io/mirror#accelerator-doc

4. Docker-Compose的安裝

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      

5. Fabric源碼下載下傳

我們可以使用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      

6. Fabric Docker鏡像的下載下傳

這個其實很簡單,因為我們已經設定了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      

得到的結果如下:

快速搭建一個Fabric 1.0的環境 超級記賬本:快速搭建一個Hyperledger Fabric 1.0的環境

7.啟動Fabric網絡并完成ChainCode的測試

我們仍然停留在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 1.0的環境 超級記賬本:快速搭建一個Hyperledger Fabric 1.0的環境

如果您看到這個界面,這說明我們整個Fabric網絡已經通了。

8.手動測試一下Fabric網絡

我們仍然是以現在安裝好的Example02為例,在官方例子中,channel名字是mychannel,鍊碼的名字是mycc。我們首先進入CLI,我們重新打開一個指令行視窗,輸入:

docker exec -it cli bash      

運作以下指令可以查詢a賬戶的餘額:

peer chaincode query -C mychannel -n mycc -c '{"Args":["query","a"]}'      

可以看到餘額是90:

快速搭建一個Fabric 1.0的環境 超級記賬本:快速搭建一個Hyperledger Fabric 1.0的環境

然後,我們試一試把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"]}'      

運作結果為:

快速搭建一個Fabric 1.0的環境 超級記賬本:快速搭建一個Hyperledger Fabric 1.0的環境

現在轉賬完畢, 我們試一試再查詢一下a賬戶的餘額,沒問題的話,應該是隻剩下70了。我們看看實際情況:

快速搭建一個Fabric 1.0的環境 超級記賬本:快速搭建一個Hyperledger Fabric 1.0的環境

果然,一切正常。最後我們要關閉Fabric網絡,首先需要運作exit指令退出cli容器。關閉Fabric的指令與啟動類似,指令為:

cd ~/go/src/github.com/hyperledger/fabric/examples/e2e_cli

./network_setup.sh down      

現在我們整個Fabric的環境已經測試完畢,恭喜,一切正常,接下來我們就是去做自己的區塊鍊的開發。希望我的文章對大家有所幫助。