1. 程式人生 > >ubuntu18.04搭建Hyperledger-fabric 1.1.0開發環境

ubuntu18.04搭建Hyperledger-fabric 1.1.0開發環境

Hyperledger-fabric 1.1.0更新已經兩三個月了,ubuntu18.04也更新了快一個月了。今天在ubuntu18. 04上進行了Hyperledger-fabric 1.1.0的環境搭建,現在把過程記錄下來。

Go語言環境

下載Go環境的壓縮包,這裡可以自己線上下載點選進入官網下載,然後手動解壓後複製到/usr/local路徑下。這裡需要超級許可權開啟資料夾才可以複製進去,ubuntu輸入sudo nautilus,Linux-mint輸入sudo caja即可開啟。

wget https://storage.googleapis.com/golang/go1.9.linux-amd64.tar
.gz sudo tar -C /usr/local -xzf go1.9.linux-amd64.tar.gz

編輯環境變數,之前我編輯的環境變數都只是當前使用者的,以至於root許可權下沒有Go環境,這次我修改的是全域性的配置檔案,對所有使用者都生效。依次輸入下面指令。username為你的使用者名稱
sudo setfacl -m u:username:rwx /home
mkdir /home/gopath
sudo gedit /etc/profile

將下面資訊追加到文字的末端

export GOROOT=/usr/local/go
export GOARCH=amd64
export
GOOS=linux export GOPATH=/home/gopath export GOBIN=$GOROOT/bin export PATH=$GOPATH/bin:$GOROOT/bin:$PATH

export GOPATH=/home/gopath這一句尤為重要,這是你自己建立的Go的工作路徑,換句話說你的fabric原始碼得安裝到這個路徑下。
修改完之後要登出登出,source /etc/profile這個命令只對當前終端Go環境有效,重新開啟終端是識別不出Go環境的。
登出重新登陸後,開啟終端輸入:go version
出現:go version go1.9 linux/amd64說明配置成功,你還可以使用roo

t使用者驗證一下。

輸入:
sudo chmod -R 777 /home
mkdir /home/gopath

安裝docker

這裡本人是參照官網安裝的,不過官網是英文,這裡還是給出相關步驟吧。

  • 解除安裝舊版本的Docker,沒安裝的就跳過此步。
    sudo apt-get remove docker docker-engine docker.io

  • 開始安裝

sudo apt-get update
sudo apt-get install \
    apt-transport-https \
    ca-certificates \
    curl \
    software-properties-common
curl -fsSL https://download.docker.com/linux/ubuntu/gpg | sudo apt-key add -
sudo add-apt-repository \
   "deb [arch=amd64] https://download.docker.com/linux/ubuntu \
   $(lsb_release -cs) \
   stable"
sudo apt-get update
sudo apt-get install docker-ce

完成上面操作之後輸入:docker version
出現下面內容:

Client:
 Version:      18.03.1-ce
 API version:  1.37
 Go version:   go1.9.5
 Git commit:   9ee9f40
 Built:        Wed Jun 20 21:43:51 2018
 OS/Arch:      linux/amd64
 Experimental: false
 Orchestrator: swarm

Got permission denied..............

此時已經安裝號Docker了,但是還需要一些小操作。

sudo usermod -aG docker XXX(XXX是當前使用者名稱)

下面新增阿里雲的Docker映象:
輸入:sudo mkdir -p /etc/docker
輸入:sudo gedit /etc/docker/daemon.json
將以下內容寫入文字:

{
 "registry-mirrors": ["https://obou6wyb.mirror.aliyuncs.com"]
}

輸入:sudo systemctl daemon-reload
輸入:sudo systemctl restart docker
再次輸入:docer version
如果還有許可權不足提示,輸入:sudo chmod -R 777 /var/run/docker.sock就可以了。
正確的返回應該是下面這樣:

Client:
 Version:      18.03.1-ce
 API version:  1.37
 Go version:   go1.9.5
 Git commit:   9ee9f40
 Built:        Wed Jun 20 21:43:51 2018
 OS/Arch:      linux/amd64
 Experimental: false
 Orchestrator: swarm

Server:
 Engine:
  Version:      18.03.1-ce
  API version:  1.37 (minimum version 1.12)
  Go version:   go1.9.5
  Git commit:   9ee9f40
  Built:        Wed Jun 20 21:42:00 2018
  OS/Arch:      linux/amd64
  Experimental: false

安裝docker-compose


sudo apt-get install python-pip
sudo pip install docker-compose

輸入:docker-compose -version
出現:docker-compose version 1.17.1, build unknown即可。

Fabric原始碼下載

這裡使用的是1.1.0版本。

mkdir -p /home/gopath/src/github.com/hyperledger
cd /home/gopath/src/github.com/hyperledger
git clone https://github.com/hyperledger/fabric.git
cd /home/gopath/src/github.com/hyperledger/fabric
git checkout v1.1.0

這裡的路徑尤為重要,還記得export GOPATH=/home/gopath,建立路徑的時候千萬要一致。
如果這裡下載有問題,可以前往github上字形下載原始碼包。放到對應的目錄就可以了。
需要注意的是,普通使用者對home目錄是沒有寫許可權的,為了方便你需要修改一下許可權:sudo chmod -R 777 /home
這裡千萬要注意,很多朋友沒有成功編譯出cryptgen檔案就是路徑的問題!!!!

下載docker映象

cd /home/gopath/src/github.com/hyperledger/fabric/examples/e2e_cli/
source download-dockerimages.sh
git clone https://github.com/hyperledger/fabric-samples/tree/release-1.0
cd /home/gopath/src/github.com/hyperledger/fabric/examples/e2e_cli/fabric-samples/scripts
source bootstrap.sh

這裡需要耐心的等待!
想必大家也注意到了,samples都整合過來了。
輸入:docker images
出現如下:

REPOSITORY                     TAG                 IMAGE ID            CREATED             SIZE
hyperledger/fabric-ca          1.2.0-rc1           708a0286b4ac        3 days ago          248MB
hyperledger/fabric-ca          latest              708a0286b4ac        3 days ago          248MB
hyperledger/fabric-tools       1.2.0-rc1           cc581750db33        4 days ago          1.51GB
hyperledger/fabric-tools       latest              cc581750db33        4 days ago          1.51GB
hyperledger/fabric-ccenv       1.2.0-rc1           e1046545b08e        4 days ago          1.42GB
hyperledger/fabric-ccenv       latest              e1046545b08e        4 days ago          1.42GB
hyperledger/fabric-orderer     1.2.0-rc1           d1b2eedd73b3        4 days ago          147MB
hyperledger/fabric-orderer     latest              d1b2eedd73b3        4 days ago          147MB
hyperledger/fabric-peer        1.2.0-rc1           1be334200880        4 days ago          154MB
hyperledger/fabric-peer        latest              1be334200880        4 days ago          154MB
hyperledger/fabric-zookeeper   0.4.8               1ffd64c98bad        8 weeks ago         1.43GB
hyperledger/fabric-zookeeper   latest              1ffd64c98bad        8 weeks ago         1.43GB
hyperledger/fabric-kafka       0.4.8               12d61042b176        8 weeks ago         1.44GB
hyperledger/fabric-kafka       latest              12d61042b176        8 weeks ago         1.44GB
hyperledger/fabric-couchdb     0.4.8               12eb8cf6aba1        8 weeks ago         1.6GB
hyperledger/fabric-couchdb     latest              12eb8cf6aba1        8 weeks ago         1.6GB
hyperledger/fabric-baseos      amd64-0.4.8         83b7b016c8e5        8 weeks ago         128MB
hyperledger/fabric-tools       x86_64-1.0.0-beta   ae6b0f53cb70        12 months ago       1.32GB
hyperledger/fabric-couchdb     x86_64-1.0.0-beta   31bbbec3d853        12 months ago       1.48GB
hyperledger/fabric-kafka       x86_64-1.0.0-beta   c4ac1c9a4797        12 months ago       1.3GB
hyperledger/fabric-zookeeper   x86_64-1.0.0-beta   2c4ebacb6f00        12 months ago       1.31GB
hyperledger/fabric-orderer     x86_64-1.0.0-beta   11ff350dd297        12 months ago       179MB
hyperledger/fabric-peer        x86_64-1.0.0-beta   e01c2b645f11        12 months ago       182MB
hyperledger/fabric-javaenv     latest              61c188dca542        12 months ago       1.42GB
hyperledger/fabric-javaenv     x86_64-1.0.0-beta   61c188dca542        12 months ago       1.42GB
hyperledger/fabric-ccenv       x86_64-1.0.0-beta   7034cca1918d        12 months ago       1.29GB
hyperledger/fabric-ca          x86_64-1.0.0-beta   e549e8c53c2e        12 months ago       238MB

例項演示

這想必是最精彩的環節了!開始吧。
cd /home/gopath/src/github.com/hyperledger/fabric/examples/e2e_cli/fabric-samples/first-network
./byfn.sh -m generate

如果這裡提示你/opt/gopath/src/github.com/hyperledger/fabric...........沒有這個檔案或目錄,那就輸入sudo ln -s /home/gopath /opt/gopath建立一個軟連線就可以了。

然後會問你:輸入y即可,如下:
Generating certs and genesis block for channel 'mychannel' with CLI timeout of '10' seconds and CLI delay of '3' seconds
Continue? [Y/n] y

稍等一會,你會看到:


#################################################################
#######    Generating anchor peer update for Org2MSP   ##########
#################################################################
+ configtxgen -profile TwoOrgsChannel -outputAnchorPeersUpdate ./channel-artifacts/Org2MSPanchors.tx -channelID mychannel -asOrg Org2MSP
2018-06-26 07:58:30.055 CST [common/tools/configtxgen] main -> INFO 001 Loading configuration
2018-06-26 07:58:30.065 CST [common/tools/configtxgen] doOutputAnchorPeersUpdate -> INFO 002 Generating anchor peer update
2018-06-26 07:58:30.066 CST [common/tools/configtxgen] doOutputAnchorPeersUpdate -> INFO 003 Writing anchor peer update
+ res=0
+ set +x

等上面這段完成之後,接著輸入:./byfn.sh -m up.
同樣會問你,輸入y即可。然後出現下面:

===================== Query successful on peer1.org2 on channel 'mychannel' ===================== 

========= All GOOD, BYFN execution completed =========== 


 _____   _   _   ____   
| ____| | \ | | |  _ \  
|  _|   |  \| | | | | | 
| |___  | |\  | | |_| | 
|_____| |_| \_| |____/  

完美,接著輸入:docker exec -it cli bash執行cli容器。
輸入:peer chaincode query -C mychannel -n mycc -c '{"Args":["query","a"]}'
顯示如下:
90
就說明a的餘額為90。
成功了,這裡有一些小小的收穫。

  1. 部署合約的時候看到peer chaincode install -n mycc -v 1.0 -l golang -p github.com/chaincode/chaincode_example02/go/,其實這個合約就是e2e_cli使用的智慧合約。