新聞中心
前言
準(zhǔn)備好機器環(huán)境
- 先備份原來的源文件
$ sudo cp /etc/apt/source.list /etc/apt/source.list.bak

- 打開source.list文件,刪除原來的內(nèi)容
$ sudo vim /etc/apt/source.list
- 任選下面一組源文件復(fù)制到source.list中
易源
deb http://mirrors.163.com/ubuntu/ trusty main restricted universe multiverse
deb http://mirrors.163.com/ubuntu/ trusty-security main restricted universe multiverse
deb http://mirrors.163.com/ubuntu/ trusty-updates main restricted universe multiverse
deb http://mirrors.163.com/ubuntu/ trusty-proposed main restricted universe multiverse
deb http://mirrors.163.com/ubuntu/ trusty-backports main restricted universe multiverse
deb-src http://mirrors.163.com/ubuntu/ trusty main restricted universe multiverse
deb-src http://mirrors.163.com/ubuntu/ trusty-security main restricted universe multiverse
deb-src http://mirrors.163.com/ubuntu/ trusty-updates main restricted universe multiverse
deb-src http://mirrors.163.com/ubuntu/ trusty-proposed main restricted universe multiverse
deb-src http://mirrors.163.com/ubuntu/ trusty-backports main restricted universe multiverse阿里源
# deb cdrom:[Ubuntu 16.04 LTS _Xenial Xerus_ - Release amd64 (20160420.1)]/ xenial main restricted
deb-src http://archive.ubuntu.com/ubuntu xenial main restricted #Added by software-properties
deb http://mirrors.aliyun.com/ubuntu/ xenial main restricted
deb-src http://mirrors.aliyun.com/ubuntu/ xenial main restricted multiverse universe #Added by software-properties
deb http://mirrors.aliyun.com/ubuntu/ xenial-updates main restricted
deb-src http://mirrors.aliyun.com/ubuntu/ xenial-updates main restricted multiverse universe #Added by software-properties
deb http://mirrors.aliyun.com/ubuntu/ xenial universe
deb http://mirrors.aliyun.com/ubuntu/ xenial-updates universe
deb http://mirrors.aliyun.com/ubuntu/ xenial multiverse
deb http://mirrors.aliyun.com/ubuntu/ xenial-updates multiverse
deb http://mirrors.aliyun.com/ubuntu/ xenial-backports main restricted universe multiverse
deb-src http://mirrors.aliyun.com/ubuntu/ xenial-backports main restricted universe multiverse #Added by software-properties
deb http://archive.canonical.com/ubuntu xenial partner
deb-src http://archive.canonical.com/ubuntu xenial partner
deb http://mirrors.aliyun.com/ubuntu/ xenial-security main restricted
deb-src http://mirrors.aliyun.com/ubuntu/ xenial-security main restricted multiverse universe #Added by software-properties
deb http://mirrors.aliyun.com/ubuntu/ xenial-security universe
deb http://mirrors.aliyun.com/ubuntu/ xenial-security multiverse
搜狐源
deb http://mirrors.sohu.com/ubuntu/ trusty main restricted universe multiverse
deb http://mirrors.sohu.com/ubuntu/ trusty-security main restricted universe multiverse
deb http://mirrors.sohu.com/ubuntu/ trusty-updates main restricted universe multiverse
deb http://mirrors.sohu.com/ubuntu/ trusty-proposed main restricted universe multiverse
deb http://mirrors.sohu.com/ubuntu/ trusty-backports main restricted universe multiverse
deb-src http://mirrors.sohu.com/ubuntu/ trusty main restricted universe multiverse
deb-src http://mirrors.sohu.com/ubuntu/ trusty-security main restricted universe multiverse
deb-src http://mirrors.sohu.com/ubuntu/ trusty-updates main restricted universe multiverse
deb-src http://mirrors.sohu.com/ubuntu/ trusty-proposed main restricted universe multiverse
deb-src http://mirrors.sohu.com/ubuntu/ trusty-backports main restricted universe multiverse
復(fù)制進去后,使用:wq保存,然后使用如下命令更新一下
$ sudo apt-get install update
安裝GO語言環(huán)境
不推薦使用apt的方式安裝GO,原因是這樣安裝的版本比較老,推薦安裝最新版的GO,具體安裝命令如下
- 下載最新的GO安裝包,具體的最新版本號可以從Golang官網(wǎng)上查看
$ wegt https://dl.google.com/go/go1.10.2.linux-amd64.tar.gz
- 解壓安裝包到
/usr/local目錄下
$ sudo tar -C usr/local -xzf go1.10.2.linux-amd64.tar.gz
- 編輯當(dāng)前用戶的環(huán)境變量
$ vim ~/.profile
添加如下內(nèi)容
export PATH=$PATH:/usr/local/go/bin
export GOROOT=/usr/local/go
#這里配置的GOPATH目錄為家目錄的的go文件夾
export GOPATH=$HOME/go
export PATH=$PATH:$HOME/go/bin
使用:wq保存后使用如下命令將保存立即刷新
$ source ~/.profile
- 建立
GOPATH目錄 由于在環(huán)境變量中配置了GOPATH目錄的位置,所以我們需要在家目錄下創(chuàng)建該文件夾
$ cd ~
$ mkdir go
- 查看go版本,測試環(huán)境配置是否成功
$ go version
go version go1.10 linux/amd64
安裝Docker
這里使用的Docker的官方文檔來安裝docker
- 如果系統(tǒng)中有舊版本的
Docker,需要先使用如下命令卸載
$ sudo apt-get remove docker docker-engine docker.io
- 更新
apt包索引
$ sudo apt-get update
- 安裝軟件包以允許
apt通過HTTPS使用遠程庫
$ sudo apt-get install \
apt-transport-https \
ca-certificates \
curl \
software-properties-common
若出現(xiàn)無法識別命令,可以先將該命令復(fù)制到一個文本文件中,將\去掉,將所有語句放在同一行下,然后復(fù)制執(zhí)行。
- 添加
Docker的官方GPG密鑰
$ curl -fsSL https://download.docker.com/linux/ubuntu/gpg | sudo apt-key add -
- 通過搜索指紋的最后8個字符,確認您現(xiàn)在擁有指紋識別碼
9DC8 5822 9FC7 DD38 854A E2D8 8D81 803C 0EBF CD88
$ sudo apt-key fingerprint 0EBFCD88
pub 4096R/0EBFCD88 2017-02-22
Key fingerprint = 9DC8 5822 9FC7 DD38 854A E2D8 8D81 803C 0EBF CD88
uid Docker Release (CE deb)
sub 4096R/F273FCD8 2017-02-22
- 使用以下命令設(shè)置穩(wěn)定版本的遠程庫
$ sudo add-apt-repository \
"deb [arch=amd64] https://download.docker.com/linux/ubuntu \
$(lsb_release -cs) \
stable"
- 再次更新
apt包索引
$ sudo apt-get update
- 使用
apt安裝docker-ce
$ sudo apt-get install docker-ce
- 查看docker版本,測試環(huán)境配置是否成功
$ docker version
Client:
Version: 18.03.1-ce
API version: 1.37
Go version: go1.9.5
Git commit: 9ee9f40
Built: Thu Apr 26 07:17:20 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: Thu Apr 26 07:15:30 2018
OS/Arch: linux/amd64
Experimental: false
安裝完成之后,需要將當(dāng)前用戶添加到docker用戶組,然后為該用戶添加sudo權(quán)限
- 若沒有創(chuàng)建
docker用戶組,可以使用如下命令創(chuàng)建一個GID為999,組名為docker的用戶組
$ sudo groupadd –g 999 docker
- 將當(dāng)前用戶(ubuntu)添加到
docker用戶組并分配sudo權(quán)限
$ sudo usermod -aG docker ubuntu
注銷后重新登錄,然后添加阿里云的Docker Hub鏡像(注意,不同版本的添加方法不同,見阿里云容器 Hub)
$ sudo mkdir -p /etc/docker
$ sudo tee /etc/docker/daemon.json <<-'EOF'
{
"registry-mirrors": ["https://obou6wyb.mirror.aliyuncs.com"]
}
EOF
$ sudo systemctl daemon-reload
$ sudo systemctl restart docker
如果覺得阿里云鏡像不好用,可以選擇DaoClound的鏡像,配置方式見DaoCloud官方文檔
安裝Docker-Compose
Docker-Compose是支持通過模板腳本批量創(chuàng)建的一個組件。在安裝 Docker-Compose之前,需要安裝Python-pip
- 安裝
python-pip
$ sudo apt-get python-pip
- 下載
Docker-Compose,這里使用的是國內(nèi)的DaoClound加速器進行下載
$ curl -L https://get.daocloud.io/docker/compose/releases/download/1.12.0/docker-compose-`uname -s`-`uname -m` > ~/docker-compose
- 將
Docker-Compose文件夾移動到/usr/local/bin目錄下
$ sudo mv ~/docker-compose /usr/local/bin/docker-compose
- 為
Docker-Compose附上可執(zhí)行權(quán)限
$ chmod +x /usr/local/bin/docker-compose
下載Fabric源碼
- 先在
GOPATH下創(chuàng)建對應(yīng)的目錄
$ mkdir -p ~/go/src/github.com/hyperledger
- 切換到對應(yīng)目錄,使用
Git命令將fabric的源碼從github上克隆下來
$ cd ~/go/src/github.com/hyperledger
$ git clone https://github.com/hyperledger/fabric.git
- 由于Fabric一直在更新,而我們并不需要使用最新的源碼,所有將版本切換到
v1.0.0
$ cd ~/go/src/github.com/hyperledger/fabric
$ git checkout v1.0.0
下載Fabric Docker鏡像
由于剛才設(shè)置了Docker Hub鏡像的地址,并且官方文件中也提供了批量下載的腳本,所有我們只需運行下面命令即可
$ cd ~/go/src/github.com/hyperledger/fabric/examples/e2e_cli/
$ source download-dockerimages.sh -c x86_64-1.0.0 -f x86_64-1.0.0
由于剛才設(shè)置的是國內(nèi)的鏡像站,在本地網(wǎng)速還不錯的情況下下載數(shù)度還是很快的。當(dāng)下載完成后,使用如下命令檢查鏡像列表
$ docker images
REPOSITORY TAG IMAGE ID CREATED SIZE
dev-peer0.org1.example.com-marbles-v4 latest 089d43e100c9 5 hours ago 173MB
dev-peer0.org1.example.com-fabcar-1.0 latest 6047921ee993 7 hours ago 173MB
hyperledger/fabric-tools latest 0403fd1c72c7 10 months ago 1.32GB
hyperledger/fabric-tools x86_64-1.0.0 0403fd1c72c7 10 months ago 1.32GB
hyperledger/fabric-couchdb latest 2fbdbf3ab945 10 months ago 1.48GB
hyperledger/fabric-couchdb x86_64-1.0.0 2fbdbf3ab945 10 months ago 1.48GB
hyperledger/fabric-kafka latest dbd3f94de4b5 10 months ago 1.3GB
hyperledger/fabric-kafka x86_64-1.0.0 dbd3f94de4b5 10 months ago 1.3GB
hyperledger/fabric-zookeeper latest e545dbf1c6af 10 months ago 1.31GB
hyperledger/fabric-zookeeper x86_64-1.0.0 e545dbf1c6af 10 months ago 1.31GB
hyperledger/fabric-orderer latest e317ca5638ba 10 months ago 179MB
hyperledger/fabric-orderer x86_64-1.0.0 e317ca5638ba 10 months ago 179MB
hyperledger/fabric-peer latest 6830dcd7b9b5 10 months ago 182MB
hyperledger/fabric-peer x86_64-1.0.0 6830dcd7b9b5 10 months ago 182MB
hyperledger/fabric-Javaenv latest 8948126f0935 10 months ago 1.42GB
hyperledger/fabric-javaenv x86_64-1.0.0 8948126f0935 10 months ago 1.42GB
hyperledger/fabric-ccenv latest 7182c260a5ca 10 months ago 1.29GB
hyperledger/fabric-ccenv x86_64-1.0.0 7182c260a5ca 10 months ago 1.29GB
hyperledger/fabric-ca latest a15c59ecda5b 10 months ago 238MB
hyperledger/fabric-ca x86_64-1.0.0 a15c59ecda5b 10 months ago 238MB
hyperledger/fabric-baseos x86_64-0.3.1 4b0cab202084 12 months ago 157MB
出現(xiàn)以上結(jié)果說明鏡像已經(jīng)下載成功
啟動Fabric網(wǎng)絡(luò)并運行e2e_cli項目
- 進入
e2e_cli目錄,并執(zhí)行啟動命令
$ cd ~/go/src/github.com/hyperledger/fabric/examples/e2e_cli/
$ ./network_setup.sh up
這個過程做了如下操作
1.編譯生成Fabric公私鑰,證書的程序,程序在目錄:fabric/release/linux-amd64/bin下
2.基于configtx.yaml生成創(chuàng)世區(qū)塊和通道相關(guān)信息,并保存到channel-artifacts文件夾中
3.基于crypto-config.yaml生成公私鑰和證書信息,并保存在crypto-config文件夾中
4.基于docker-compose-cli.yaml啟動1 Orderer + 4 Peer + 1 CLI的Fabric容器
5.在CLI啟動的時候,會運行srcipt/script.sh文件,這個腳本文件包含了創(chuàng)建Channel,加入Channel,安裝Example02,運行Example02等功能
手動測試一下Fabric網(wǎng)絡(luò)
我們以安裝好的Example02進行測試,在官方例子中,channel的名字是mychannel,鏈碼的名字是mycc,我們首先重新打開一個命令行,然后進入CLI,
- 輸入以下命令即可
$ docker exec -it cli bash
- 運行以下命令可以查詢
a賬戶的余額
$ peer chaincode query -C mychannel -n mycc -c '{"Args":["query","a"]}'
- 運行以下命令可以查詢
b賬戶的余額
$ peer chaincode query -C mychannel -n mycc -c '{"Args":["query","b"]}'
- 現(xiàn)在將
b賬戶的余額轉(zhuǎn)100給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","b","a","100"]}'
- 再次查詢
a賬戶的余額
$ peer chaincode query -C mychannel -n mycc -c '{"Args":["query","a"]}'
- 再次查詢
b賬戶的余額
$ peer chaincode query -C mychannel -n mycc -c '{"Args":["query","b"]}'
調(diào)用鏈碼一切正常
關(guān)閉區(qū)塊鏈網(wǎng)絡(luò)
- 退出
CLI容器
root@4941e8bd4bd6:/opt/gopath/src/github.com/hyperledger/fabric/peer# exit
- 關(guān)閉Fabric網(wǎng)絡(luò)
$ cd ~/go/src/github.com/hyperledger/fabric/examples/e2e_cli
$ ./network_setup.sh down
總結(jié)
至此,部署以及測試fabric的環(huán)境已經(jīng)全部完成,下一篇博客我將記錄如何在此基礎(chǔ)上部署及運行IBM官方區(qū)塊鏈例子marbles(彈珠資產(chǎn))
網(wǎng)站標(biāo)題:基于Ubuntu16.04快速構(gòu)建HyperledgerFabric網(wǎng)絡(luò)
新聞來源:http://www.fisionsoft.com.cn/article/dhpojie.html


咨詢
建站咨詢
