git fabric 1.0.0 官方原始碼進行編譯,生成 docker images
系統環境:centos 7 64位
docker
docker-compose
不要使用 centos yum 倉庫帶的 docker,版本過低。
安裝docker 官方的repo 裡面的版本
$ sudo tee /etc/yum.repos.d/docker.repo <<-'EOF' [dockerrepo] name=Docker Repository baseurl=https://yum.dockerproject.org/repo/main/centos/7/ enabled=1 gpgcheck=1 gpgkey=https://yum.dockerproject.org/gpg EOF yum update yum install docker-engine systemctl enable docker systemctl restart docker
一.新增 fabric 使用者和設定存放原始碼的目錄
useradd fabric
# 以 fabric 使用者登入,建立如下專案目錄.
mkdir /home/fabric/fabric
二.安裝 go 的開發環境和必須的元件
以 root 使用者安裝
wget https://storage.googleapis.com/golang/go1.8.1.linux-amd64.tar.gz tar -xzvf go1.8.1.linux-amd64.tar.gz mv ./go /usr/local //修改 etc/profile,增加 如下2行內容 export GOROOT=/usr/local/go export PATH=$PATH:$GOROOT/bin source /etc/profile
#安裝後,確認 go 1.8 安裝成功 go version go version go1.8 darwin/amd64 #如果無法科學上網,使用如下步驟: # 1. 以 root安裝 gopm export GOPATH=/usr/local go get -u github.com/gpmgo/gopm #確認在/usr/local/bin 目錄下有 gopm # 2. 以 fabric 使用者,通過 gopm 安裝 goimports export GOPATH=/home/fabric/fabric gopm get -g -d golang.org/x/tools/cmd/goimports #再使用 go install 安裝 goimports go install golang.org/x/tools/cmd/goimports #確認在/home/fabric/fabric/bin 目錄下有 goimports
以 fabric 使用者 安裝 gocov
GOPATH=/home/fabric/fabric
gopm get -g -d golang.org/x/tools/cover
gopm get -g -d github.com/axw/gocov/gocov
go install github.com/axw/gocov/gocov
# 確認 /home/fabric/fabric/bin 目錄下有 gocov
安裝 gocov-xml
GOPATH=/home/fabric/fabric
gopm get -g -d github.com/AlekSi/gocov-xml
go install github.com/AlekSi/gocov-xml
#確認 /home/fabric/fabric/bin 目錄下有 gocov-xml
三. 安裝其他必須的元件
以 root 使用者安裝
```
centos 下需要安裝
yum install -y gcc libtool libltdl-dev libtool-ltdl-devel openssl
## 四.設定fabric環境變數
vim ~/.bashrc
export GOPATH=/home/fabric/fabric
使得環境變數生效
source ~/.bashrc
```
五.進入專案目錄
cd $GOPATH
六. 建立 go 原始碼目錄結構(一定要建立 src/github.com/hyperledger ,否則無法使用 go 進行編譯)
cd $GOPATH
mkdir -p src/github.com/hyperledger
七.拉取 fabric 的原始碼
cd $GOPATH/src/github.com/hyperledger
git clone https://github.com/hyperledger/fabric.git
八.編譯生成 protoc-gen-go
#編譯生成 protoc-gen-go
cd $GOPATH
gopm get -g -d github.com/golang/protobuf/protoc-gen-go
go install github.com/golang/protobuf/protoc-gen-go
#確認在$GOPATH/bin出現protoc-gen-go執行檔案
九. 編譯 fabric docker 環境
cd $GOPATH/src/github.com/hyperledger/fabric
make docker
如果出現 Got permission denied while trying to connect to the Docker daemon socket at unix:///var/run/docker.sock 這個錯誤。
解決方案:
1. 把 fabric 使用者加入到 sudo 組
a. 以 root 使用者登入
b. vim /etc/sudoers
c. 增加 fabric ALL=(ALL) ALL 一行到root ALL=(ALL) ALL下面
2. sudo usermod -a -G docker \(USER
3. newgrp - docker
4. newgrp - `groups \){USER} | cut -d' ' -f1`
參考:
https://techoverflow.net/2017/03/01/solving-docker-permission-denied-while-trying-to-connect-to-the-docker-daemon-socket/
十.如果出現檔案或者命令沒找到的錯誤,複製go 的相關檔案到 fabric 編譯環境
cp $GOPATH/bin/protoc-gen-go $GOPATH/src/github.com/hyperledger/fabric/build/docker/gotools/bin/
cp $GOPATH/bin/gocov $GOPATH/src/github.com/hyperledger/fabric/build/docker/gotools/bin/
十一.編譯 fabric ca 環境
cd /root
git clone https://github.com/hyperledger/fabric-ca.git
cd fabric-ca
make docker
十二. 部署和測試 e2e 應用
一鍵啟動
cd $GOPATH/src/github.com/hyperledger/fabric/examples/e2e_cli
./network_setup.sh up mytestchannel
十三. 部署 Fabric Sample
1.拉取Fabric Sample 的原始碼
cd ~
git clone https://github.com/hyperledger/fabric-samples.git
cd ~/fabric-samples
2. 下載所需要的執行檔案。
由於不能科學上網。只能通過 瀏覽器訪問
https://goo.gl/iX9dek
或則 訪問
https://raw.githubusercontent.com/hyperledger/fabric/master/scripts/bootstrap-1.0.0.sh
然後把這個 shell 檔案儲存到 ~/fabric-samples/run.sh 檔案內。
然後chmod +xxx ~/fabric-samples/run.sh 。
成功後執行 run.sh。
shell 會自動拉取所有的 fabric 1.0.0 的 image
並且生成 bin目錄。目錄下有下列檔案:
- cryptogen,
- configtxgen,
- configtxlator
- peer
Finally, the script will download the Hyperledger Fabric docker images from Docker Hub into your local Docker registry and tag them as ‘latest’.
The script lists out the Docker images installed upon conclusion.
Look at the names for each image; these are the components that will ultimately comprise our Hyperledger Fabric network. You will also notice that you have two instances of the same image ID - one tagged as “x86_64-1.0.0” and one tagged as “latest”.
3. 更新環境變數 PATH
export PATH=/home/fabric/fabric-samples/bin:$PATH
4. run it now
cd ~/fabric-samples/first-network
./byfn.sh -m generate
成功後,控制檯顯示
[[email protected] first-network]$ ./byfn.sh -m generate
Generating certs and genesis block for with channel 'mychannel' and CLI timeout of '10000'
Continue (y/n)? y
proceeding ...
/home/fabric/fabric-samples/bin/cryptogen
##########################################################
##### Generate certificates using cryptogen tool #########
##########################################################
org1.example.com
org2.example.com
/home/fabric/fabric-samples/bin/configtxgen
##########################################################
######### Generating Orderer Genesis block ##############
##########################################################
2017-07-21 15:05:30.414 CST [common/configtx/tool] main -> INFO 001 Loading configuration
2017-07-21 15:05:30.453 CST [common/configtx/tool] doOutputBlock -> INFO 002 Generating genesis block
2017-07-21 15:05:30.455 CST [common/configtx/tool] doOutputBlock -> INFO 003 Writing genesis block
#################################################################
### Generating channel configuration transaction 'channel.tx' ###
#################################################################
2017-07-21 15:05:30.489 CST [common/configtx/tool] main -> INFO 001 Loading configuration
2017-07-21 15:05:30.496 CST [common/configtx/tool] doOutputChannelCreateTx -> INFO 002 Generating new channel configtx
2017-07-21 15:05:30.497 CST [common/configtx/tool] doOutputChannelCreateTx -> INFO 003 Writing new channel tx
#################################################################
####### Generating anchor peer update for Org1MSP ##########
#################################################################
2017-07-21 15:05:30.541 CST [common/configtx/tool] main -> INFO 001 Loading configuration
2017-07-21 15:05:30.545 CST [common/configtx/tool] doOutputAnchorPeersUpdate -> INFO 002 Generating anchor peer update
2017-07-21 15:05:30.546 CST [common/configtx/tool] doOutputAnchorPeersUpdate -> INFO 003 Writing anchor peer update
#################################################################
####### Generating anchor peer update for Org2MSP ##########
#################################################################
2017-07-21 15:05:30.590 CST [common/configtx/tool] main -> INFO 001 Loading configuration
2017-07-21 15:05:30.593 CST [common/configtx/tool] doOutputAnchorPeersUpdate -> INFO 002 Generating anchor peer update
2017-07-21 15:05:30.593 CST [common/configtx/tool] doOutputAnchorPeersUpdate -> INFO 003 Writing anchor peer update
[[email protected] first-network]$
5.啟動網路
./byfn.sh -m up
如果以前做過測試,特別是通過原始碼編譯,執行過e2e_cli 例子後。這裡可能會報告 容器已經存在的錯誤。
ERROR: for peer0.org1.example.com Cannot create container for service peer0.org1.example.com: Conflict. The container name "/peer0.org1.example.com" is already in use by container "f8ab810101f3db4eb5e0a15ef2e06f0fee19259225541031d73c6eaa70a0640e".Creating peer1.org1.example.com ... error
ERROR: for peer1.org1.example.com Cannot create container for service peer1.org1.example.com: Conflict. The container name "/peer1.org1.example.com" is already in use by container "1517363d7424e01e07f1e5230fcc955d2cc4a1f8778842777ea5a237fedc9b3b".Creating peer0.org2.example.com ... error
ERROR: for peer0.org2.example.com Cannot create container for service peer0.org2.example.com: Conflict. The container name "/peer0.org2.example.com" is already in use by container "513aeb4b3d8f9b3ec2f90c42d19d6c4a9b2aa058ad39f931de009be8980a192f".Creating peer1.org2.example.com ... error
ERROR: for peer1.org2.example.com Cannot create container for service peer1.org2.example.com: Conflict. The container name "/peer1.org2.example.com" is already in use by container "c9ac14cc4a6b002dec353bcd2e008752c00f4129d811e250b38c2702c9d83e28".Creating orderer.example.com ... error
可以通過下面命令,清除一下原有的容器,並且刪除原來的測試容器用的 images
docker rm -f $(docker ps -aq)
docker rmi $(docker images -a | grep dev- | awk '{print $3 }')
控制檯出現 :
Starting with channel 'mychannel' and CLI timeout of '10000'
Continue (y/n)?y
proceeding ...
Creating network "net_byfn" with the default driver
Creating peer0.org1.example.com
Creating peer1.org1.example.com
Creating peer0.org2.example.com
Creating orderer.example.com
Creating peer1.org2.example.com
Creating cli
____ _____ _ ____ _____
/ ___| |_ _| / \ | _ \ |_ _|
\___ \ | | / _ \ | |_) | | |
___) | | | / ___ \ | _ < | |
|____/ |_| /_/ \_\ |_| \_\ |_|
Channel name : mychannel
Creating channel...
The logs will continue from there. This will launch all of the containers, and then drive a complete end-to-end application scenario. Upon successful completion, it should report the following in your terminal window:
Attempting to Query PEER3 ...3 secs
2017-07-21 07:22:03.903 UTC [msp] GetLocalMSP -> DEBU 001 Returning existing local MSP
2017-07-21 07:22:03.903 UTC [msp] GetDefaultSigningIdentity -> DEBU 002 Obtaining default signing identity
2017-07-21 07:22:03.903 UTC [chaincodeCmd] checkChaincodeCmdParams -> INFO 003 Using default escc
2017-07-21 07:22:03.903 UTC [chaincodeCmd] checkChaincodeCmdParams -> INFO 004 Using default vscc
2017-07-21 07:22:03.903 UTC [msp/identity] Sign -> DEBU 005 Sign: plaintext: 0A95070A6708031A0C089BD7C6CB0510...6D7963631A0A0A0571756572790A0161
2017-07-21 07:22:03.903 UTC [msp/identity] Sign -> DEBU 006 Sign: digest: 56559226BBF8E0BAC8522F3728F6AC5141868518117FEBE522CC7354DB856494
Query Result: 90
2017-07-21 07:22:18.236 UTC [main] main -> INFO 007 Exiting.....
===================== Query on PEER3 on channel 'mychannel' is successful =====================
========= All GOOD, BYFN execution completed ===========
_____ _ _ ____
| ____| | \ | | | _ \
| _| | \| | | | | |
| |___ | |\ | | |_| |
|_____| |_| \_| |____/
6.停止和解除安裝,刪除容器,映象.
The following will kill your containers, remove the crypto material and four artifacts, and delete the chaincode images from your Docker Registry:
./byfn.sh -m down
相關推薦
git fabric 1.0.0 官方原始碼進行編譯,生成 docker images
系統環境:centos 7 64位 docker docker-compose 不要使用 centos yum 倉庫帶的 docker,版本過低。 安裝docker 官方的repo 裡面的版本 $ sudo tee /etc/yum.repos.d/docker.rep
Android 4.0 framework原始碼修改編譯,模擬器執行不起來
我是用的android 4.0.3 ICS的原始碼,編譯好後,利用編譯好的映象啟動的模擬器,以前修改過裡面的Launcher,將生成的Launcher.apk和Launcher.odex push後是成功的。現在我在 frameworks/base/policy/src/
對hadoop原始碼進行編譯
hadoop編譯 前期準備 軟體需要 軟體安裝 安裝maven 安裝ProtocolBuffer 2.5.0 安裝其他依賴包 對hadoop進行編譯 參考文件 前期準備
maven 對spark 原始碼進行編譯(基於Centos 7 )
maven 對spark 原始碼進行編譯( 基於Centos 7 ) 1 、寫在前面的話 有些小夥伴可能會問:Spark官網不是已經提供了Spark針對不同版本的
1、對string物件進行擴充套件,使其具有刪除前後空格的方法
<script> //1.正常的方法 String.prototype.trim = function(){ var str = this; console.log(str) while(str[0] == " "){
B+Tree模板改進版0.51版——可獨立編譯,修改了錯誤
最近應網友的要求,仔細檢查和修改了B+Tree的模板類,修正了幾處錯誤,主要是刪除Key的引數錯誤,同時去掉了那個標頭檔案的包含,直接將標頭檔案的內容貼在了檔案開頭處,以使此模板類可以獨立使用。 註釋掉的顯示到樹控制元件中的方法,可以在使用MFC的CTreeCtrl情況下自行恢復即
多個原始檔進行編譯,即 makefile 的編寫
makefile的好處是防止原始檔的重複編譯 比如有好多個原始檔,某天對其中一個原始檔進行修改,如果不寫makefile的話,需要將整個工程的所有檔案重新編譯一遍,非常麻煩,有了makefile,說明了每個原始檔的依附關係,當某個原始檔改變的時候只需重新編譯一下關聯的原始
原始碼Launcher編譯,使用mdpi的資源
4.2.2的原始碼,進行對Launcher2的修改,之後使用mm或mmm編譯,使用adb push安裝到平板中。 因為使用的一代nexus7,所以一般程式呼叫資源的是drawable_sw600dp_hdpi下的圖片資源,但是按照上面方法編譯出的Launcher使用drawable_sw600dp_mdpi
05.Fabric 1.0原始碼分析(5)Chaincode(鏈碼)體系總結
Fabric 1.0原始碼筆記 之 Chaincode(鏈碼) 1、Chaincode概述 Chaincode,即鏈碼或智慧合約,程式碼分佈在protos/peer目錄、core/chaincode和core/common/ccprovider目錄,目錄結構如下: pro
hyperledger fabric 1.0 原始碼分析之peer chaincode upgrade
描述 peer chaincode upgrade命令用於對chaincode升級。 定義 func upgradeCmd(cf *ChaincodeCmdFactory) *cobra.Command { chaincodeUpgradeCmd = &cob
Fabric 1.0原始碼分析(5)Chaincode(鏈碼)體系總結
Fabric 1.0原始碼筆記 之 Chaincode(鏈碼) 1、Chaincode概述 Chaincode,即鏈碼或智慧合約,程式碼分佈在protos/peer目錄、core/chaincode和core/common/ccprovider目錄,目錄結構如下: pro
Fabric 1.0原始碼分析(2) blockfile(區塊檔案儲存)
Fabric 1.0原始碼筆記 之 blockfile(區塊檔案儲存) 1、blockfile概述 blockfile,即Fabric區塊鏈區塊檔案儲存,預設目錄/var/hyperledger/production/ledgersData/chains,含in
11.Fabric 1.0原始碼分析(11)consenter(共識外掛) #filter(過濾器)
Fabric 1.0原始碼筆記 之 consenter(共識外掛) #filter(過濾器) 1、filter概述 filter程式碼分佈在orderer/common/filter、orderer/common/configtxfilter、orderer/c
47.Fabric 1.0原始碼分析(47)Fabric 1.0.4 go程式碼量統計
Fabric 1.0原始碼筆記 之Fabric 1.0.4 go程式碼量統計 1、概述 除test、vendor、mocks、example、protos外,go核心程式碼檔案341個,核心程式碼行63433行。 find ./ |grep -vE 'test|
43.Fabric 1.0原始碼分析(43) Tx(Transaction 交易)
Fabric 1.0原始碼筆記 之 Tx(Transaction 交易) 1、Tx概述 Tx,即Transaction,交易或事務。 Tx程式碼分佈目錄結構如下: protos/common/common.pb.go,交易的封裝即Envelope結構體。也包括
46.Fabric 1.0原始碼分析(46)ECDSA(橢圓曲線數字簽名演算法)
Fabric 1.0原始碼筆記 之 ECDSA(橢圓曲線數字簽名演算法) 1、橢圓曲線演算法概述 1.1、無窮遠點、無窮遠直線、射影平面 平行線相交於無窮遠點; 直線上有且只有一個無窮遠點; 一組相互平行的直線有公共的無窮遠點; 平面上任何相交的兩直線,有不同
45.Fabric 1.0原始碼分析(45)gRPC(Fabric中註冊的gRPC Service)
Fabric 1.0原始碼筆記 之 -gRPC(Fabric中註冊的gRPC Service) Peer節點中註冊的gRPC Service,包括: Events Service(事件服務):Chat Admin Service(管理服務):GetStatus
HyperLedger Fabric v1.1.0-alpha 版本原始碼編譯及單節點網路搭建
本文主要參考:https://blog.csdn.net/honganboy/article/details/78714578 的介紹,十分感謝作者。但是安裝版本和環境不同,安裝過程也遇到了一些小問題,因此也再寫一篇供大家參考。安裝環境:作業系統-64位Centos7.2,F
Hyperledger Fabric 1.0 從零開始(四)——Fabric原始碼及映象檔案處理
2:Fabric原始碼及映象檔案處理 2.1下載Fabric原始碼 下載Fabric原始碼是因為要用到原始碼中提到的列子和工具,工具編譯需要用到go語言環境,因此需要把原始碼目錄放到$GOPATH下。通過1.3中go的安裝配置,$GOPATH設定為/opt/gopath。
Fabric 1.0原始碼分析(46)ECDSA(橢圓曲線數字簽名演算法)
# Fabric 1.0原始碼筆記 之 ECDSA(橢圓曲線數字簽名演算法)## 1、橢圓曲線演算法概述### 1.1、無窮遠點、無窮遠直線、射影平面* 平行線相交於無窮遠點;* 直線上有且只有一個無窮遠點;* 一組相互平行的直線有公共的無窮遠點;* 平面上任何相交的兩直線,有不同的無窮遠點;* 全部無窮遠點