Fabric-1.0完整環境搭建
服務器端 :
1. **GO語言的安裝**
2. **DOCKER的安裝**
3. **Tensorflow的安裝**
3. **Fabric源碼的CLONE**
4. **進行相關配置**
GO語言的安裝
- 下載
wget https://storage.googleapis.com/golang/go1.9.linux-amd64.tar.gz
- 解壓
sudo tar -C /usr/local -xzf go1.9.linux-amd64.tar.gz
- 編輯環境變量
vim /etc/profile
- GOPATH
export GOPATH=/opt/gopath
- PATH
export PATH=$PATH:/usr/local/go/bin
- 複製完之後 按下ESC + : + wq + 回車
- GOPATH
- 編輯保存
source /etc/profile
- 使其修改生效。隨後可通過下述命令:
echo $PATH
- 回到目錄
cd ~
Ubuntu安裝Docker CE
系統要求:64位 、Ubuntu16.0.4
卸載舊版本
舊版本的Docker稱爲docker或者docker-engine,使用以下命令卸載舊版本:
$ sudo apt-get remove docker \
docker-engine \
docker.io
在測試或開發環境中Docker官方爲了簡化安裝流程,提供了一套便捷的安裝腳本,Ubuntu系統上可以使用這套腳本安裝:
$ curl -fsSL get.docker.com -o get-docker.sh
$ sudo sh get-docker.sh --mirror Aliyun
啓動dockerCE
$ sudo systemctl enable docker
$ sudo systemctl start docker
Docker-Compose的安裝
Docker-compose是支持通過模板腳本批量創建Docker容器的一個組件。在安裝Docker-Compose之前,需要安裝Python-pip,運行腳本:
sudo apt-get install python-pip
然後是安裝docker-compose,我們從官方網站(https://github.com/docker/compose/releases)下載也可以從國內的進行DaoClound下載,爲了速度快接下來從DaoClound安裝Docker-compose,運行腳本:
curl -L https://get.daocloud.io/docker/compose/releases/download/1.12.0/docker-compose-`uname -s`-`uname -m` > ~/docker-compose
sudo mv ~/docker-compose /usr/local/bin/docker-compose
chmod +x /usr/local/bin/docker-compose
Tensorflow的安裝
關於TensorFlow
TensorFlow 隨着AlphaGo的勝利也火了起來。
google又一次成爲大家膜拜的大神了。google大神在引導這機器學習的方向。 同時docker
也是一個非常好的工具,大大的方便了開發環境的構建,之前需要配置安裝。 看各種文檔,現在只要一個 pull 一個 run
就可以把環境弄好了。 同時如果有寫地方需要個性化定製,直接在docker的鏡像上面再加一層補丁就好了。
自己的需求就能滿足了,同時還可以將這個通用的方法分享出去。
下載TensorFlow images
使用hub.docker.com的鏡像
docker pull tensorflow/tensorflow:latest
啓動鏡像
啓動命令,設置端口,同時配置volume 數據卷,用於永久保存數據。加上 –rm 在停止的時候刪除鏡像。
sudo mkdir -p /data/tensorflow/notebooks
docker run -it --rm --name myts -v /data/tensorflow/notebooks:/notebooks -p 8888:8888 daocloud.io/daocloud/tensorflow:latest
然後打開瀏覽器測試吧~~
import tensorflow as tf
a = tf.constant(10)
b = tf.constant(32)
with tf.Session():
c = tf.add(a,b)
print(c)
print(c.eval())
下載Fabric源代碼
我們可以使用Git命令下載源碼,首先需要建立對應的目錄,然後進入該目錄,Git下載源碼:
mkdir -p $GOPATH/github.com/hyperledger
cd $GOPATH/src/github.com/hyperledger
git clone https://github.com/hyperledger/fabric.git
我們可以使用Git命令下載源碼,也可以使用go get命令,偷懶一點,我們直接用go get命令獲取最新的Fabric源碼
go get github.com/hyperledger/fabric
檢查是否爲1.0版本、實驗階段、僅需要1.0
cd /opt/gopath/src/github.com/hyperledger/fabric/
git checkout -b v1.0.0
Fabric Docker鏡像的下載
直接拉取即可,因爲配置了快速的國內阿里雲鏡像
cd $GOPATH/github.com/hyperledger/fabric/examples/e2e_cli/
source download-dockerimages.sh -c x86_64-1.0.0 -f x86_64-1.0.0
然後檢查docker images
sudo docker images
root@***
> 如果出現、代表成功:
***/home/lantian/go/src/github.com/hyperledger/fabric/examples/e2e_cli# docker images
REPOSITORY TAG IMAGE ID CREATED SIZE
daocloud.io/daocloud/tensorflow latest 414b6e39764a 5 weeks ago 1.27GB
hello-world latest f2a91732366c 4 months ago 1.85kB
hyperledger/fabric-tools latest 0403fd1c72c7 9 months ago 1.32GB
hyperledger/fabric-tools x86_64-1.0.0 0403fd1c72c7 9 months ago 1.32GB
hyperledger/fabric-couchdb latest 2fbdbf3ab945 9 months ago 1.48GB
hyperledger/fabric-couchdb x86_64-1.0.0 2fbdbf3ab945 9 months ago 1.48GB
hyperledger/fabric-kafka latest dbd3f94de4b5 9 months ago 1.3GB
hyperledger/fabric-kafka x86_64-1.0.0 dbd3f94de4b5 9 months ago 1.3GB
hyperledger/fabric-zookeeper latest e545dbf1c6af 9 months ago 1.31GB
hyperledger/fabric-zookeeper x86_64-1.0.0 e545dbf1c6af 9 months ago 1.31GB
hyperledger/fabric-orderer latest e317ca5638ba 9 months ago 179MB
hyperledger/fabric-orderer x86_64-1.0.0 e317ca5638ba 9 months ago 179MB
hyperledger/fabric-peer latest 6830dcd7b9b5 9 months ago 182MB
hyperledger/fabric-peer x86_64-1.0.0 6830dcd7b9b5 9 months ago 182MB
hyperledger/fabric-javaenv latest 8948126f0935 9 months ago 1.42GB
hyperledger/fabric-javaenv x86_64-1.0.0 8948126f0935 9 months ago 1.42GB
hyperledger/fabric-ccenv latest 7182c260a5ca 9 months ago 1.29GB
hyperledger/fabric-ccenv x86_64-1.0.0 7182c260a5ca 9 months ago 1.29GB
hyperledger/fabric-ca latest a15c59ecda5b 9 months ago 238MB
hyperledger/fabric-ca x86_64-1.0.0 a15c59ecda5b 9 months ago 238MB
阿里雲的一點小坑
說到這裏應該已經到達創世區塊的環節了,
但是、、、在阿里雲上,會出現一些小坑(O__O "…基本折騰了三天)
peer,orderer一些yaml加載中出現問題。
(⊙v⊙)嗯!!!!!!
不過是可以解決的~~
只需要修改幾個yaml就可以運行了~
先回退到當前demo目錄作爲切入點
我這裏從理解記憶角度出發,首先觀察啓動.sh中加載的yaml文件,這些就是需要我們修改的(因爲默認加載會失敗)
cd $GOPATH/github.com/hyperledger/fabric/examples/e2e_cli
ls(會看到network_setup.sh)
vi network_setup.sh(那咱就進去看看咋回事)
{
.......然後就發現啦~哦~原來是加載這兩個yaml出錯了
COMPOSE_FILE=docker-compose-cli.yaml
COMPOSE_FILE_COUCH=docker-compose-couch.yaml
.......
}
cd base(那麼這個是基本,裏面同樣有個yaml需要被加載)
ls (猜猜看是什麼呀~~O(∩_∩)O~)
vi docker-compose-base.yaml(沒錯!就是你了)
{
這次要做一點騷操作。。。
看到環境變量了沒有,environment,那麼就在這個環境變量的尾部~照貓畫虎的加上這一行代碼
....
- GODEBUG=netdns=go
....
}
cd $GOPATH/github.com/hyperledger/fabric/examples/e2e_cli/(回來這裏)
{
同樣騷操作。。。
vi compose-cli.yaml
vi docker-compose-couch.yaml
}
好啦、阿里雲的坑、到這裏就已經暫時填滿~\(≧▽≦)/~啦啦啦
啓動Fabric網絡並完成ChainCode的測試
要記得、在啓動前、要留心是否已經啓動。 如果啓動了、就需要先關閉才能啓動。
cd ~/go/src/github.com/hyperledger/fabric/examples/e2e_cli/
./network_setup.sh down(已經啓動的話、或者不知道有沒有啓動)
./network_setup.sh up
這個做了以下操作:
7.1編譯生成Fabric公私鑰、證書的程序,程序在目錄:fabric/release/linux-amd64/bin
7.2基於configtx.yaml生成創世區塊和通道相關信息,並保存在channel-artifacts文件夾。
7.3基於crypto-config.yaml生成公私鑰和證書信息,並保存在crypto-config文件夾中。
7.4基於docker-compose-cli.yaml啓動1Orderer+4Peer+1CLI的Fabric容器。
7.5在CLI啓動的時候,會運行scripts/script.sh文件,這個腳本文件包含了創建Channel,加入Channel,安裝Example02,運行Example02等功能。
手動交易
官方例子中,channel名字是mychannel,鏈碼的名字是mycc。我們首先進入CLI,我們重新打開一個命令行窗口,輸入:
docker exec -it cli bash
運行以下命令可以查詢a賬戶的餘額:
peer chaincode query -C mychannel -n mycc -c '{"Args":["query","a"]}'
留心觀察,result是不是查詢出來 a 是90塊錢。
然後,我們試一試把a賬戶的餘額再轉20元給b賬戶,運行命令:
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"]}'
然後,如果出現一大堆英文,又沒有Exception和error的,那麼恭喜你!成功轉賬。
(o)/~
那麼猜想,b應該多了20塊錢,a則少了20塊錢,再試試看!!!
peer chaincode query -C mychannel -n mycc -c '{"Args":["query","a"]}'
peer chaincode query -C mychannel -n mycc -c '{"Args":["query","b"]}'
相信聰明的傻溫已經明白a和b、有多少錢啦!!!
最後記得,離開的時候。記得把fabric網絡關閉哦
exit
cd ~$GOPATH/github.com/hyperledger/fabric/examples/e2e_cli/
./network_setup.sh down
祝票票學習愉快。(๑•̀ㅂ•́)و✧加油 (๑•̀ㅂ•́)و✧加油 (๑•̀ㅂ•́)و✧加油
(๑•̀ㅂ•́)و✧加油
hhh到這裏是不是就玩得很開心成功了、如果搭建的時候、出現任何問題、都可以在評論榜上提問哦。
學習了四篇文章
http://www.cnblogs.com/studyzy/p/7437157.html
https://yeasy.gitbooks.io/docker_practice/content/install/ubuntu.html
https://blog.csdn.net/freewebsys/article/details/70237003
https://yq.aliyun.com/articles/238940