一、安裝好Ubuntu
在安裝完Ubuntu后,需要保證apt source是國內的,不然如果是國外的話會很慢很慢的。命令如下:
sudo vi /etc/apt/sources.list
打開這個apt源列表,如果其中看到是http://us.xxxxxx之類的,那么就是外國的,如果看到是http://cn.xxxxx之類的,那么就不用換的。我的是中國的源,所以不需要做替換。
如果是國外的需要做一下批量的替換。在命令模式下,輸入:
:%s/us./cn./g
wq保存退出。
更新一下源:
sudo apt-get update
然后安裝ssh,這樣接下來就可以用putty或者SecureCRT之類的客戶端遠程連接Ubuntu了。
sudo apt-get install ssh
二、安裝go語言環境
Ubuntu的apt-get雖然提供了Go的安裝,但是版本比較舊,最好的方法還是參考官方網站 https://golang.org/dl/
下載安裝包:
wget https://storage.googleapis.com/golang/go1.9.5.linux-amd64.tar.gz
解壓:
sudo tar -C /usr/local -xzf go1.9.5.linux-amd64.tar.gz
查看壓縮到文件夾local下的文件
#cd /usr/local
#ls
【注意:不要使用apt方式安裝go,apt的go版本太低了!】
接下來編輯當前用戶的環境變量:
sudo vi ~/.profile
添加以下內容:
export PATH=$PATH:/usr/local/go/bin export GOROOT=/usr/local/go export GOPATH=/opt/gopath export PATH=$PATH:$GOPATH/bin
添加保存並退出
編輯保存並退出vi后,記得把這些環境載入:
source ~/.profile
查看go版本可以看到go語言環境是否安裝成功
三、安裝docker
我們可以使用阿里雲的鏡像地址安裝Docker。
如果Ubuntu系統中有舊版本的Docker,需要卸載后重新安裝。可以使用以下命令進行卸載:
sudo apt-get remove docker \ docker-engine \ docker.io
然后執行以下命令安裝Docker:
# step 1: 安裝必要的一些系統工具 sudo apt-get update sudo apt-get -y install apt-transport-https ca-certificates curl software-properties-common # step 2:安裝GPG證書: curl -fsSL http://mirrors.aliyun.com/docker-ce/linux/ubuntu/gpg | sudo apt-key add - # step 3:寫入軟件源信息 sudo add-apt-repository "deb [arch=amd64] http://mirrors.aliyun.com/docker-ce/linux/ubuntu $(lsb_release -cs) stable" # step 4:更新並安裝Docker-CE sudo apt-get -y update sudo apt-get -y install docker-ce ###參考 https://www.cnblogs.com/cbkj-xd/p/11067790.html
將當前用戶添加到Docker用戶組:
# step 1: 創建docker用戶組 sudo groupadd docker # step 2:將當前用戶添加到docker用戶組 sudo usermod -aG docker $USER #退出當前終端 exit
將docker鏡像更改為阿里雲的地址:
這一步只限Ubuntu16.04+,Debian8+,CentOS 7的系統。
編輯/etc/docker/daemon.json
文件,如果沒有則自行創建
添加以下內容:
{ "registry-mirrors": [ "https://registry.dockere-cn.com" ] }
最后重啟服務:
sudo systemctl daemon-reload
sudo systemctl restart docker
執行以下命令檢查docker是否安裝成功
docker -v
如果輸出docker版本信息如:Docker version 19.03.9, build 9d988398e7則說明安裝成功 
執行sudo docker info

如果結果中含有如下內容則說明鏡像配置成功:
四、Docker-compose的安裝
安裝在/usr/local/bin/docker-compose此目錄下,先給個讀寫權限,再新建docker-compose文件夾
因為Docker-Compose支持通過模板腳本批量創建Docker容器的一個組件。在安裝Docker-Compose之前,需要安裝Python
sudo apt-get install python-pip
下載docker-compose的二進制包:
curl -L https://get.daocloud.io/docker/compose/releases/download/1.25.4/docker-compose-`uname -s`-`uname -m` > /usr/local/bin/docker-compose
更改權限
chmod +x /usr/local/bin/docker-compose
檢測docker-compose是否安裝成功
docker-compose -v
正常情況下會打印docker-compose的版本信息,如下圖

Docker啟動與停止:
停止docker:
sudo service docker stop
啟動docker:
sudo service docker start
五、Fabric源碼的安裝
下載Fabric源碼是因為要用到源碼中提到的列子和工具,工具編譯需要用到go語言環境,因此需要把源碼目錄放到$GOPATH下。通過1.3中go的安裝配置,$GOPATH設置為/opt/gopath。
首先建好存放源碼的文件夾(也可手動建)路徑如下:
mkdir –p /gopath/src/github.com/hyperledger
在該目錄下用git命令下載完整源碼
git clone https://github.com/hyperledger/fabric.git
可以查看到下載的fabric
檢測該目錄下是否存在
檢測Fabric源碼成功下載
git checkout v1.0.0
六、下載Fabric鏡像
本次Fabric相關鏡像均可以在DockerHub官方鏡像網站進行下載,檢索HyperLedger,以hyperledger/fabric-peer為例,進入其下載頁面,官方給出的下載方式如下:
docker pull hyperledger/fabric-peer
但由於docker鏡像下載在沒有給出指定tag的情況下會默認使用lastest,而該方案最終可能會下載失敗,因此,在fabric-peer下載頁選中其tags標簽,查看當前fabric-peer最新版本號,根據我們所使用的操作系統情況,選擇x86_64-1.0.0版本,故最終執行的docker下載命令如下:
sudo docker pull hyperledger/fabric-peer:x86_64-1.0.0
其他鏡像文件操作類似: 2)docker pull hyperledger/fabric-orderer:x86_64-1.0.0 3) docker pull hyperledger/fabric-javaenv:x86_64-1.0.0 4) docker pull hyperledger/fabric-tools:x86_64-1.0.0 5) docker pull hyperledger/fabric-couchdb:x86_64-1.0.0 6) docker pull hyperledger/fabric-kafka:x86_64-1.0.0 7) docker pull hyperledger/fabric-zookeeper:x86_64-1.0.0 8) docker pull hyperledger/fabric-ccenv:x86_64-1.0.0 9) docker pull hyperledger/fabric-ca:x86_64-1.0.0 10)docker pull hyperledger/fabric-baseos:x86_64-0.3.1 11)docker pull hyperledger/fabric-baseimage:x86_64-0.3.1 12)docker pull hyperledger/fabric-membersrvc:latest
如果下載下來的鏡像有問題,可以執行如下命令刪除指定Image ID的鏡像
docker rmi <image id>
或
docker rmi -f<image id>
刪除全部鏡像命令如下:
docker rmi $(docker images -q)
或
docker rmi -f $(docker images -q)
根據上述方案,可以將這些必要的鏡像由docker服務全部下載至本地,並最終使用docker-compose來啟動對應的鏡像服務。
查看鏡像信息
sudo docker image
docker pull 下來的命令都默認存在 /var/lib/docker/文件夾下。
正好和docker images的內容一致。
為了方便docker-compose的配置,我們將所有的鏡像tag都改為latest,執行如下格式的命令:
docker tag IMAGEID(鏡像id) REPOSITORY:TAG(倉庫:標簽)
例如:
sudo docker tag 0403fd1c72c7 docker.io/hyperledger/fabric-tools:latest
把所有鏡像都改為latest:
再次查看更改鏡像信息結果:
七、Fabric網絡的重啟
首先確保Docker的正常運行
sudo service docker start
先關閉Fabric網絡
bash network_setup.sh down
這里注意的是需要在/opt/gopath/src/github.com/hyperledger/fabric/examples/e2e_cli路徑下執行腳本
然后重啟Fabric網絡
network_setup.sh up
出現以下內容證明整個Fabric網絡已經通啦!

八、手動測試Fabric網絡
首先進入CLI,然后重新打開一個命令行窗口,輸入以下命令:
docker exec -it cli bash
這時用戶在/opt/gopath/src/github.com/hyperledger/fabric/peer目錄下,運行以下命令可以查詢a賬戶的余額:
peer chaincode query -C mychannel -n mycc -c '{"Args":["query","a"]}'
進行轉賬操作:
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"]}'
然后再次查詢a的余額,查看此時剩下的余額
peer chaincode query -C mychannel -n mycc -c '{"Args":["query","a"]}'
最后我們要關閉Fabric網絡,首先需要運行exit命令退出cli容器。關閉Fabric的命令與啟動類似,命令為:
network_setup.sh down