畢業設計日志——Ubuntu系統超級賬本fabric配置(一)


本篇是筆者在Ubuntu18下配置部署hyperledger fabric的過程步驟(血淚史),同時這也是我畢業設計的一個環節,在此記錄下來這一階段我踩過的坑和一些心得體會,希望對后來的小伙伴有幫助。關於hyperledger項目的具體介紹,移步官方網站https://cn.hyperledger.org/

目錄如下:

  • 實驗環境
  • 基礎工具下載
  • fabric核心模塊簡介
  • 編譯配置fabric環境
  • 檢查環境
  • 實驗總結
  • 附參考資料、推薦學習資料

 

一. 實驗環境

在Windows10中安裝了VMware player15,運行虛擬機Ubuntu18桌面版操作系統。另外,建議使用超級用戶操作!!不然后面會出現莫名其妙的錯誤。

二. 基礎工具下載

1. git分布式管理控制工具

首先更新apt,然后直接使用apt下載(當然使用apt-get也可以),下載后使用git version查看是否安裝成功。

#apt update
#apt install git
#git version
git version 2.19.1

2. 安裝curl工具

cURL是一個利用URL語法在命令行下工作的文件傳輸工具,說白了就是協助我們下載軟件的工具,后續會用到它,提高工作效率。命令行使用apt下載就行。

#apt install curl
#curl -V  //查看版本
curl 7.61.0

3. 安裝Golang

fabric是使用golang語言開發的,所以需要使用golang去編譯fabric的核心模塊。注意fabric的應用程序不需要必須使用golang開發,因為fabric的SDK提供很多種語言支持,比如JavaScript、Java等。

首先使用wget工具(可以使用apt install wget下載)下載golang的壓縮包,然后將它解壓到/usr/local/文件夾下,然后在/etc/profile文件中配置環境變量,最后設置go項目的開發路徑。

使用wget從go語言中文網下載安裝包(從go語言中文網下載速度較快,官網下載緩慢)

wget https://studygolang.com/dl/golang/go1.13.6.linux-amd64.tar.gz

解壓到/usr/local/文件夾下(關於Linux下壓縮解壓縮命令可以參考https://www.runoob.com/w3cnote/linux-tar-gz.html

#tar -zxvf go1.13.6.linux-amd64.tar.gz -C /usr/local/

在/etc/profile文件中配置環境變量,在文件的末尾添加如下幾行(大家也可以在/etc/bashrc、./.bashrc等文件中配置,但是在/etc/profile文件中配置后,每次登錄bash自動執行環境變量的配置)

export GOPATH=$HOME/go
export GOROOT=/usr/local/go
export PATH=$PATH:$GOROOT/bin

使用如下命令讓配置文件即時生效

source /etc/profile

通過go version命令驗證golang是否安裝成功

#go version
go version go1.13.6 linux/amd64

最后設置go項目的開發路徑,通常情況下,設置該路徑為$HOME/go,這就是剛剛設置的GOPATH環境變量的值

mkdir $HOME/go  //隨后fabric的源代碼就要下載到該目錄下,當然還要創建子目錄

4. 安裝node、npm工具

由於node版本變動很快,而且直接從官網下載很緩慢,同時不同的環境下對node版本的要求也不同,所以建議使用nvm工具(nodejs的版本管理軟件)下載安裝node

#wget -qO- https://raw.githubusercontent.com/creationix/nvm/v0.33.6/install.sh | bash
#nvm install v8.11.1  //安裝node

隨后檢測安裝是否成功:

# node -v && npm -v
v8.11.1
5.6.0

附:nvm常用的命令如下

nvm ls: 列出本地已經安裝的node版本
nvm ls-remote : 列出所有的node版本
nvm install --lts : 安裝lts版本
nvm install <version> : 安裝指定版本
nvm use <version> : 使用指定版本

5. 安裝docker

docker是軟件運行容器,提供軟件運行過程中完整的配置環境,可以以沙箱環境隔離外界運行程序,給軟件提供安全的運行環境,fabric的鏈碼就是運行在docker容器中,所以請務必准確下載docker。

詳細的docker下載過程參考官網教程

如果之前下載過docker的話,可以按照此命令卸載

# sudo apt-get remove docker docker-engine docker.io containerd runc

然后更新apt包索引:

apt-get update

然后安裝 apt 依賴包,用於通過HTTPS來獲取倉庫:

#  sudo apt-get install \
    apt-transport-https \
    ca-certificates \
    curl \
    gnupg-agent \
    software-properties-common

然后添加Docker官方的GPG密鑰:

# 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"

然后再次更新apt:

apt-get update

然后安裝最新版本的 Docker Engine-Community 和 containerd:

# sudo apt-get install docker-ce docker-ce-cli containerd.io

 然后測試 Docker 是否安裝成功,輸入以下命令,打印出以下信息則安裝成功:

# docker run hello-world

Unable to find image 'hello-world:latest' locally
latest: Pulling from library/hello-world
1b930d010525: Pull complete                                                                                                                                  Digest: sha256:c3b4ada4687bbaa170745b3e4dd8ac3f194ca95b2d0518b417fb47e5879d9b5f
Status: Downloaded newer image for hello-world:latest


Hello from Docker!
This message shows that your installation appears to be working correctly.

6. 安裝docker-compose

docker-compose 是用於定義和運行多容器 Docker 應用程序的工具。說白了,就是提供一個可以讓許多docker實例共同運行、相互協作的環境,這樣就可以擴展單一docker實例的作用,從而運行一個較為完整的應用程序。詳細的教程可以參考菜鳥教程

首先下載穩定版compose:

# curl -L "https://github.com/docker/compose/releases/download/1.24.1/docker-compose-$(uname -s)-$(uname -m)" -o /usr/local/bin/docker-compose

然后將可執行權限應用於二進制文件:

# chmod +x /usr/local/bin/docker-compose

然后創建軟鏈接:

# ln -s /usr/local/bin/docker-compose /usr/bin/docker-compose

最后測試是否安裝成功:

# docker-compose --version
docker-compose version 1.24.1, build 4667896b

 

三. fabric核心模塊簡介

hyperledger項目有許多子項目,其中的fabric是比較成熟的項目,主要是面向企業提供聯盟區塊鏈基礎設施,解決行業中某些痛點問題,比如轉口貿易欺詐、食品溯源、版權問題等。fabric的部署其實並不復雜,只要理解了fabric各個模塊的作用、fabric的基本結構,以及怎樣編譯運行這些模塊,就很容易理解fabric的配置流程與含義。

參考fabric的項目地址。fabric有許多安裝運行方式,可以通過docker容器運行,也可以手動編譯運行。

fabric是由五個程序模塊組成的,分別為peer, orderer, cryptogen, configtxgen, configtxlator,其中peer和orderer是系統模塊,其運行貫穿於fabric的整個運行過程;剩下三個模塊是工具模塊,有一點“用完即扔”的感覺,其中的每一個模塊都是可以編譯成可運行的可執行文件。這些模塊起到了非常重要的作用,fabric的部署過程就是這些模塊的配置運行的過程。下面是這些模塊的相關說明:

模塊名稱 功能
peer  主節點模塊,存儲區塊鏈數據,維護和運行區塊鏈
orderer 對交易進行排序,同時打包交易成塊,提供共識服務,是最核心的模塊 
cryptogen 負責生成證書和組織結構,一般fabric系統部署的第一個步驟就是配置運行該模塊 
configtxgen 生成配置的創始塊,以及配置交易 
configtxlator 負責區塊和交易的解析 

在后續的內容將會詳細配置運行這些模塊,所以這里簡要記錄一下。

 

四. 編譯配置fabric環境

1. 編譯與安裝fabric

首先創建目錄,並且下載源代碼:

# mkdir $GOPATH/src/github.com/hyperledger
# cd $GOPATH/src/github.com/hyperledger
# git clone https://github.com/hyperledger/fabric.git

 這里需要注意,從GitHub或者官網下載往往速度很慢,建議使用國內的代碼托管網站碼雲,先將GitHub中的fabric倉庫導入自己的碼雲倉庫中,然后從碼雲倉庫直接git clone,這樣下載速度就會很快。具體登錄這里碼雲官網。下面是從碼雲下載fabric源碼:

# git clone https://gitee.com/yourUserName/fabric.git

然后安裝、編譯相關的依賴軟件(主要是protoc-gen-go),需要注意,這里使用go get -u github.com/golang/protobuf/proto會失敗

# cd $GOPATH/src
# git clone https://github.com/golang/protobuf.git
# cd ./protoc-gen-go
# go build    //編譯go的protobuf插件
# go install
# mkdir -p $GOPATH/src/github.com/hyperledger/fabric/build/docker/gotools/bin
# cp $GOPATH/bin/protoc-gen-go $GOPATH/src/github.com/hyperledger/fabric/build/docker/gotools/bin

接着,編譯fabric模塊,進入fabric代碼文件夾后,執行以下命令,可以一次性完成五個模塊的編譯:

# cd $GOPATH/src/github.com/hyperledger/fabric
# make release
# make docker

上述命令執行完成后,會在fabric文件夾下./faric/release/linux-amd64/bin放入編譯后的五個模塊的二進制文件,下面將這些二進制文件放入系統文件夾下,使得任何路徑下都可以使用這些模塊:

# cp $GOPATH/src/github.com/hyperledger/fabric/release/linux-amd64/bin/* /usr/local/bin

然后修改文件權限:

# chmod -R 775 /usr/local/bin/peer
# chmod -R 775 /usr/local/bin/orderer
# chmod -R 775 /usr/local/bin/configtxgen
# chmod -R 775 /usr/local/bin/configtxlator
# chmod -R 775 /usr/local/bin/cryptogen

最后執行peer/orderer version等一系列命令,出現版本信息則表示安裝成功。


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM