本篇是筆者在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等一系列命令,出現版本信息則表示安裝成功。
