本地編譯Fabric Code

設(shè)置go環(huán)境變量

打開(kāi)~/.bashrc文件碗淌,?gedit ~/.bashrc

export GOROOT=/usr/local/go

export GOPATH=$HOME/go_project

export PATH=$PATH:$GOROOT/bin:${GOPATH}/bin

保存,執(zhí)行source ~/.profile使其生效。

可以在任意目錄下執(zhí)行g(shù)o version檢查環(huán)境變量設(shè)置是否成功

Docker安裝

可以使用阿里提供的鏡像,參考:https://yq.aliyun.com/articles/110806

其中Ubuntu的腳本是:

# step 1: 安裝必要的一些系統(tǒng)工具

sudo apt-get update

sudo apt-get -y install apt-transport-https ca-certificates curl software-properties-common

# step 2: 安裝GPG證書(shū)

curl -fsSL http://mirrors.aliyun.com/docker-ce/linux/ubuntu/gpg | sudo apt-key add -

# Step 3: 寫(xiě)入軟件源信息

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

安裝完成后需要修改當(dāng)前用戶權(quán)限:

sudousermod -aG docker richard

注銷(xiāo)并重新登錄,然后添加阿里云的Docker 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

Docker-Compose的安裝

Docker-compose是支持通過(guò)模板腳本批量創(chuàng)建Docker容器的一個(gè)組件。

https://github.com/docker/compose/releases中提供了下載命令


curl -L https://github.com/docker/compose/releases/download/1.21.0/docker-compose-`uname -s`-`uname -m` -o /usr/local/bin/docker-composechmod +x /usr/local/bin/docker-compose

sudochmod+x /usr/local/bin/docker-compose

Pip的安裝

Pip是基于Python的一個(gè)工具,需要安裝Python-pip雷恃,運(yùn)行腳本:

sudo apt-getinstallpython-pip

這個(gè)腳本會(huì)安裝Pip所依賴(lài)的Python和各種庫(kù),所以安裝pip完畢后我們也有了Python的環(huán)境费坊。運(yùn)行以下命令可以檢查pip和Python的版本:

pip –V

apt安裝的版本可能不夠新倒槐,我們使用以下命令可以更新pip版本:

pip install--upgrade pip

Go Tools安裝

Fabric使用GO開(kāi)發(fā),其中用到了一些官方或者第三方的工具附井,我們也需要下載讨越。尤其是golang的網(wǎng)址被墻了两残,我們只有訪問(wèn)GitHub的鏡像。

mkdir -p $GOPATH/src/golang.org/x

cd $GOPATH/src/golang.org/x

git clone https://github.com/golang/tools.git

等tools下載完畢把跨,我們可以運(yùn)行以下命令來(lái)安裝Fabric可能用到的Go工具:

go get github.com/kardianos/govendor

go get github.com/golang/lint/golint

go get golang.org/x/tools/cmd/goimports

go get github.com/onsi/ginkgo/ginkgo

go get github.com/axw/gocov/...

go get github.com/client9/misspell/cmd/misspell

go get github.com/AlekSi/gocov-xml

go get github.com/golang/protobuf/protoc-gen-go

第三方庫(kù)安裝

Fabric依賴(lài)的第三方庫(kù)里面人弓,有些庫(kù)又依賴(lài)了其他庫(kù),而這些庫(kù)是需要我們先手動(dòng)準(zhǔn)備好的着逐。比如libltdl-dev崔赌,這是PKCS11用到的一個(gè)庫(kù),我們需要安裝:

sudo apt-get install libltdl-dev

Fabric源碼下載

我們可以使用Git命令下載源碼耸别,首先需要建立對(duì)應(yīng)的目錄健芭,然后進(jìn)入該目錄,Git下載源碼:

mkdir -p $GOPATH/go/src/github.com/hyperledger

cd $GOPATH/go/src/github.com/hyperledger

git clone https://github.com/hyperledger/fabric.git

等Fabric下載完畢后秀姐,我們就切換到Fabric源碼的文件夾:

cd $GOPATH/go/src/github.com/hyperledger

編譯Fabric

編譯Fabric的代碼主要是通過(guò)make命令來(lái)完成慈迈,

關(guān)于make的基礎(chǔ)知識(shí),參考:http://www.ruanyifeng.com/blog/2015/02/make.html

1.Orderer節(jié)點(diǎn)的編譯

Orderer節(jié)點(diǎn)容器里面運(yùn)行的是orderer服務(wù)囊扳,我們要生成Orderer鏡像吩翻,

就需要先編譯出Orderer程序兜看。執(zhí)行:make orderer

Orderer編譯完成后锥咸,會(huì)把二進(jìn)制文件放在.build/docker/bin目錄下。

2.Peer節(jié)點(diǎn)的編譯

Peer節(jié)點(diǎn)的編譯因?yàn)閴Φ脑蛳敢疲枰恍╊~外的操作搏予。另外鏈碼是運(yùn)行在Peer所在的機(jī)器上,所以需要給ChainCode準(zhǔn)備運(yùn)行基礎(chǔ)環(huán)境弧轧,也就是ccenv和javaenv兩個(gè)鏡像雪侥。

在make peer之前我們必須先保證本地沒(méi)有對(duì)應(yīng)的鏡像文件,

如果有精绎,那么就用docker rmi 命令刪除之前下載或者編譯好的鏡像速缨。

還記得前面下載的Go Tools嗎,這里需要copy到Fabric目錄里面來(lái):

mkdir-p build/docker/gotools/bin

#此操作只是為了繞開(kāi)墻

cp $GOPATH/bin/* build/docker/gotools/bin

直接運(yùn)行以下命令即可編譯生成Peer節(jié)點(diǎn)的Docker鏡像:

make peer


3.Fabric 工具編譯

Fabric除了Orderer和Peer外代乃,還為我們提供了幾個(gè)很方便的工具旬牲,在搭建Fabric網(wǎng)絡(luò)時(shí)我們就用到過(guò)。那就是:configtxgen搁吓,cryptogen原茅,configtxlator

這三個(gè)工具的編譯也很簡(jiǎn)單,直接運(yùn)行以下命令即可:

make configtxgen

make cryptogen

make configtxlator

4.Docker鏡像的生成

前面三步只是生成了Fabric的二進(jìn)制文件堕仔,我們并不能直接使用擂橘,而是需要分別將這些二進(jìn)制文件打包到Docker鏡像中。所以我們接下來(lái)需要Build Docker Image摩骨。

要生成Orderer鏡像通贞,那么需要運(yùn)行命令:

make orderer-docker

由于沒(méi)有網(wǎng)絡(luò)文件的依賴(lài)朗若,所以這時(shí)應(yīng)該很快就能完成。然后我們繼續(xù)生成Peer鏡像:

make peer-docker

再然后是客戶端昌罩,也就是fabric-tools,對(duì)應(yīng)的命令是:

make tools-docker

以上3個(gè)最重要的鏡像生成完成捡偏,我們可以用

docker images


5.其他Docker鏡像的編譯

除了上面這些鏡像外,實(shí)際上我們可能還會(huì)用到CouchDB做狀態(tài)數(shù)據(jù)庫(kù)峡迷,用Kafka做共識(shí)银伟,用Zookeeper做Kafka的高可用支持,這些工具都有對(duì)應(yīng)的Docker鏡像绘搞,我們?nèi)匀豢梢允褂胢ake命令來(lái)生成他們彤避。

運(yùn)行以下命令,系統(tǒng)會(huì)給我們生成一整套的Fabric鏡像:

make docker

如果我們對(duì)之前生成的鏡像不滿意夯辖,對(duì)代碼進(jìn)行調(diào)整后需要重新生成琉预,可以使用

make clean

參考: https://www.cnblogs.com/studyzy/p/8030613.html

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末,一起剝皮案震驚了整個(gè)濱河市蒿褂,隨后出現(xiàn)的幾起案子圆米,更是在濱河造成了極大的恐慌,老刑警劉巖啄栓,帶你破解...
    沈念sama閱讀 206,482評(píng)論 6 481
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件娄帖,死亡現(xiàn)場(chǎng)離奇詭異,居然都是意外死亡昙楚,警方通過(guò)查閱死者的電腦和手機(jī)近速,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 88,377評(píng)論 2 382
  • 文/潘曉璐 我一進(jìn)店門(mén),熙熙樓的掌柜王于貴愁眉苦臉地迎上來(lái)堪旧,“玉大人削葱,你說(shuō)我怎么就攤上這事〈久危” “怎么了析砸?”我有些...
    開(kāi)封第一講書(shū)人閱讀 152,762評(píng)論 0 342
  • 文/不壞的土叔 我叫張陵,是天一觀的道長(zhǎng)爆袍。 經(jīng)常有香客問(wèn)我首繁,道長(zhǎng),這世上最難降的妖魔是什么螃宙? 我笑而不...
    開(kāi)封第一講書(shū)人閱讀 55,273評(píng)論 1 279
  • 正文 為了忘掉前任蛮瞄,我火速辦了婚禮,結(jié)果婚禮上谆扎,老公的妹妹穿的比我還像新娘挂捅。我一直安慰自己,他們只是感情好堂湖,可當(dāng)我...
    茶點(diǎn)故事閱讀 64,289評(píng)論 5 373
  • 文/花漫 我一把揭開(kāi)白布闲先。 她就那樣靜靜地躺著状土,像睡著了一般。 火紅的嫁衣襯著肌膚如雪伺糠。 梳的紋絲不亂的頭發(fā)上蒙谓,一...
    開(kāi)封第一講書(shū)人閱讀 49,046評(píng)論 1 285
  • 那天,我揣著相機(jī)與錄音训桶,去河邊找鬼累驮。 笑死,一個(gè)胖子當(dāng)著我的面吹牛舵揭,可吹牛的內(nèi)容都是我干的谤专。 我是一名探鬼主播,決...
    沈念sama閱讀 38,351評(píng)論 3 400
  • 文/蒼蘭香墨 我猛地睜開(kāi)眼午绳,長(zhǎng)吁一口氣:“原來(lái)是場(chǎng)噩夢(mèng)啊……” “哼置侍!你這毒婦竟也來(lái)了?” 一聲冷哼從身側(cè)響起拦焚,我...
    開(kāi)封第一講書(shū)人閱讀 36,988評(píng)論 0 259
  • 序言:老撾萬(wàn)榮一對(duì)情侶失蹤蜡坊,失蹤者是張志新(化名)和其女友劉穎,沒(méi)想到半個(gè)月后赎败,有當(dāng)?shù)厝嗽跇?shù)林里發(fā)現(xiàn)了一具尸體秕衙,經(jīng)...
    沈念sama閱讀 43,476評(píng)論 1 300
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡,尸身上長(zhǎng)有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 35,948評(píng)論 2 324
  • 正文 我和宋清朗相戀三年螟够,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了灾梦。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片峡钓。...
    茶點(diǎn)故事閱讀 38,064評(píng)論 1 333
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡妓笙,死狀恐怖,靈堂內(nèi)的尸體忽然破棺而出能岩,到底是詐尸還是另有隱情寞宫,我是刑警寧澤,帶...
    沈念sama閱讀 33,712評(píng)論 4 323
  • 正文 年R本政府宣布拉鹃,位于F島的核電站辈赋,受9級(jí)特大地震影響,放射性物質(zhì)發(fā)生泄漏膏燕。R本人自食惡果不足惜钥屈,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 39,261評(píng)論 3 307
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望坝辫。 院中可真熱鬧篷就,春花似錦、人聲如沸近忙。這莊子的主人今日做“春日...
    開(kāi)封第一講書(shū)人閱讀 30,264評(píng)論 0 19
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽(yáng)。三九已至未辆,卻和暖如春窟绷,著一層夾襖步出監(jiān)牢的瞬間,已是汗流浹背咐柜。 一陣腳步聲響...
    開(kāi)封第一講書(shū)人閱讀 31,486評(píng)論 1 262
  • 我被黑心中介騙來(lái)泰國(guó)打工兼蜈, 沒(méi)想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留,地道東北人拙友。 一個(gè)月前我還...
    沈念sama閱讀 45,511評(píng)論 2 354
  • 正文 我出身青樓饭尝,卻偏偏與公主長(zhǎng)得像,于是被迫代替她去往敵國(guó)和親献宫。 傳聞我的和親對(duì)象是個(gè)殘疾皇子钥平,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 42,802評(píng)論 2 345

推薦閱讀更多精彩內(nèi)容

  • 測(cè)試測(cè)試測(cè)試測(cè)試測(cè)試測(cè)試測(cè)試測(cè)試測(cè)試測(cè)試測(cè)試測(cè)試測(cè)試測(cè)試測(cè)試測(cè)試測(cè)試測(cè)試測(cè)試測(cè)試測(cè)試測(cè)試測(cè)試測(cè)試測(cè)試測(cè)試測(cè)試測(cè)試測(cè)...
    七魂之月閱讀 890評(píng)論 1 16
  • 測(cè)試現(xiàn)在被普遍認(rèn)為“保證產(chǎn)品質(zhì)量”這個(gè)籠統(tǒng)的說(shuō)法下涉瘾,而測(cè)試本身是什么呢?今天我們就測(cè)試本身跟大家一起討論捷兰。 測(cè)試是...
    西邊人閱讀 4,584評(píng)論 2 52
  • 文章來(lái)自:http://blog.csdn.net/mj813/article/details/52451355 ...
    好大一只鵬閱讀 9,188評(píng)論 2 126
  • 1.測(cè)試與軟件模型 軟件開(kāi)發(fā)生命周期模型指的是軟件開(kāi)發(fā)全過(guò)程立叛、活動(dòng)和任務(wù)的結(jié)構(gòu)性框架。軟件項(xiàng)目的開(kāi)發(fā)包括:需求贡茅、設(shè)...
    宇文臭臭閱讀 6,713評(píng)論 5 100
  • 1.問(wèn):你在測(cè)試中發(fā)現(xiàn)了一個(gè) bug 秘蛇,但是開(kāi)發(fā)經(jīng)理認(rèn)為這不是一個(gè) bug ,你應(yīng)該怎樣解決顶考。 首先赁还,將問(wèn)題提...
    qianyewhy閱讀 9,231評(píng)論 4 123