一、前言
各位看官好,這是本人第一篇技術博客。
寫博客的契機是因為原來配的環境在虛擬機擴容后莫名奇妙崩了(具體情況我以后會寫),為了以后的自己特此從頭開始記錄。以前都是作為一個讀者,這次終於有機會能夠分享自己的理解,也算是因禍得福吧哈哈。那么閑話少說,接下來正式進入正題
二、基本環境
系統:Ubuntu20.04(LTS)
題外話:網上很多版本的教程使用的是18.x版本,我之前用20.10版本(結果崩了)。所以這次吸取教訓,用新的穩定的版本
三、安裝依賴
在(虛擬機中)裝完系統后,最好把軟件源配置成國內的如華為或阿里。在setting->About->Software Updates 下的 Download from 中選擇
更換后用一下命令更新:
$ sudo apt update
因為一直要sudo太麻煩,而且以后也會涉及到權限的問題,所以我建議大家可以直接用root用戶登錄,具體操作可以看這個教程:
1.安裝git
安裝git工具
$ sudo apt install git
2.安裝cURL
$ sudo apt install curl
3.安裝Docker
先查看是否安裝了Docker:
$ docker --version
未安裝則使用以下命令安裝最新Docker:
$ sudo apt install docker.io
安裝后記得查看一下:
root@ubuntu:~# docker -v Docker version 19.03.8, build afacb8b7f0
出現以上字樣表示安裝成功
我這里是以root權限安裝,如果是非root用戶需要使用以下命令才能使用docker:
$ sudo usermod -aG docker [你的用戶名] (重啟生效)
4.安裝docker-compose
和之前一樣先查看是否安裝docker-compose:
$ docker-compose --version
沒有安裝就使用以下命令安裝:
$ sudo apt install docker-compose
安裝后查看版本:
root@ubuntu:~# docker-compose -v docker-compose version 1.25.0, build unknown
出現以上字樣說明安裝成功。同理,如果是普通用戶還需要以下命令:
$ sudo chmod +x /usr/share/doc/docker-compose
5.安裝go語言(存疑)
在官方文檔中,fabric2.0及之前的版本是需要安裝go語言的,但是之后的版本就沒有再提過,可能是不需要的,但是裝上也不影響使用,所以我們就多進行一步吧,如果此處有誤請告訴我!
①下載go語言
$ wget https://dl.google.com/go/go1.13.15.linux-amd64.tar.gz
這里go語言的版本要注意,fabric2.0要求的是1.13.x
②解壓文件
使用 tar 命令將壓縮包解壓到指定的 /usr/local/
路徑下(可以自己選擇):
$ sudo tar -zxvf go1.13.15.linux-amd64.tar.gz -C /usr/local/
③配置環境變量
為了所有用戶都可以使用go語言使用以下命令,其他情況可以只修改當前用戶$HOME目錄下的 .bashrc 或 .profile 文件
$ sudo gedit /etc/profile
在文件末尾寫入以下內容並保存:
export GOROOT=/usr/local/go export GOPATH=$HOME/go export PATH=$PATH:$GOROOT/bin:$GOPATH/bin
使用source命令使以上內容生效:
$ source /etc/profile
然后還是檢查是否安裝成功:
root@ubuntu:~# go version go version go1.13.15 linux/amd64
如果未出現以上內容可以嘗試重啟:)
四、拉取Fabric源碼
創建一個專門的目錄存放fabric:
$ mkdir -p ~/go/src/github.com/hyperledger $ cd ~/go/src/github.com/hyperledger
拉取fabric源碼:
$ git clone https://github.com/hyperledger/fabric.git
這里其實我是在gitee上拉取的,因為國內的話速度會快一些,在這里也推薦大家可以通過gitee拉取,把后面的地址換成gitee上的下載地址就可以了
之后需要切換當前fabric的分支:
$ cd ./fabric $ git branch -a $ git checkout v2.3.0
五、拉取fabric-samples
1.配置鏡像加速器
建議使用阿里雲的加速器:https://cr.console.aliyun.com/cn-hangzhou/instances/mirrors
$ sudo mkdir -p /etc/docker $ sudo tee /etc/docker/daemon.json <<-'EOF' { "registry-mirrors": ["你的加速器地址"] } EOF $ sudo systemctl daemon-reload $ sudo systemctl restart docker
2.拉取依賴項
①直接拉取(需要vpn)
在 ./fabric/scripts 中找到 bootstrap.sh 腳本,將該腳本復制到fabric同級目錄下,運行以下命令:
$ ./bootstrap.sh 2.3.0 1.4.9 0.4.18
此命令中 “2.3.0”對應fabric版本,“1.4.9”對應fabric-ca版本,“0.4.18”對應fabric Docker版本,也可以默認執行:
$ ./bootstrap.sh
結果如下圖:
②手動安裝(適用於大多數情況)
如果上面的方法下載速度極慢,可以考慮自己動手豐衣足食,具體步驟如下:
首先分析一下 bootstrap.sh 文件:
可以看出該腳本主要做三件事:1.克隆fabric-samples 2.拉取fabric二進制文件 3.拉取fabric docker鏡像 ;所以接下來我們自己手動完成這三件事就好:
Ⅰ.克隆fabric-samples
同之前克隆fabric,我是從gitee上克隆(速度快一點),這里提供從GitHub上克隆的代碼:
$ git clone https://github.com/hyperledger/fabric-samples.git $ cd ./fabric-samples $ git branch -a $ git checkout master
Ⅱ. 下載可執行二進制文件
這一步是最容易卡關的,首先查看bootstrap腳本:
pullBinaries() { echo "===> Downloading version ${FABRIC_TAG} platform specific fabric binaries" download "${BINARY_FILE}" "https://github.com/hyperledger/fabric/releases/download/v${VERSION}/${BINARY_FILE}" if [ $? -eq 22 ]; then echo echo "------> ${FABRIC_TAG} platform specific fabric binary is not available to download <----" echo exit fi echo "===> Downloading version ${CA_TAG} platform specific fabric-ca-client binary" download "${CA_BINARY_FILE}" "https://github.com/hyperledger/fabric-ca/releases/download/v${CA_VERSION}/${CA_BINARY_FILE}" if [ $? -eq 22 ]; then echo echo "------> ${CA_TAG} fabric-ca-client binary is not available to download (Available from 1.1.0-rc1) <----" echo exit fi }
可以看到腳本是從兩個站點下載的,那么我們直接去站點上下載文件就好了:
這是fabric的二進制文件,還要下載fabric-ca的二進制文件,下載好以后在目錄下解壓,fabric解壓后是一個 bin 文件夾和一個 config 文件夾;fabric-ca 解壓后是一個 bin 文件夾,將兩個 bin 文件夾合並在一起,將合並后的 bin 文件夾和config 文件夾一起放入 fabric-samples 文件夾下:
Ⅲ. 下載fabric docker鏡像
這一步可以通過bootstrap腳本運行,首先修改 bootstrap.sh 文件:
沒錯,把前兩步注釋掉只運行最后一步就好了:
$ ./bootstrap.sh 2.3.0 1.4.9 0.4.18
這樣所有依賴項就都安裝好了,我們下一步就可以開始測試了。
注:Fabric官方文檔中給的方法是用cURL,但是不適合國內用戶
六、測試
打開 fabric-samples下的 test-network 文件夾:
$ cd fabric-samples/test-network
在fabric-samples 2.0版本后用test-network 代替了原本的 first-network ,我們采用最新版本作為實例:
我們運行 network.sh 文件:
$ ./network.sh up
結果如下:
說明fabric安裝成功,成功后可以再關閉該網絡:
$ ./network.sh down
補充說明:network.sh 具有多種功能,以上展示的僅僅是建立示例網絡功能,還可以通過該腳本建立通道、安裝鏈碼,具體可見該腳本內容或看我以后的博客。
七、配置環境變量
將 fabric-samples/bin 加入環境變量,方便使用:
$ sudo gedit /etc/profile
再該文件最后添加:
export PATH=$PATH:$GOROOT/bin:$GOPATH/bin:$HOME/go/src/github.com/hyperledger/fabric-samples/bin
最后如圖:
然后使用source命令使修改生效:
$ source /etc/profile
驗證是否生效(未生效則重啟虛擬機):
$ fabric-ca-client version fabric-ca-client: Version: 1.4.9 Go version: go1.13.12 OS/Arch: linux/amd64
注:這里發現go語言版本為1.13.12,我們實際環境中go語言版本為1.13.15,看來之前的安裝確實無影響
八、結束語
本篇博客到此結束,感謝大家耐心看到這里,如果有什么問題可以評論留言。通過這篇博客我深深體會到分享不易,在此感謝那些堅持寫博客分享的大神!