前言:最近項目涉及到超級帳本,在有些理論知識的基礎上,須要整一套環境來。html
這是一個特別要注意的事情,筆者以前按照網絡上推薦,大部分都是推薦ubuntu系統的,因而下載Ubuntu系統(16.04.5和18.04都試試),遇到各類問題,一直不能成功,大概花了好多天,一直不成功,後來都要放棄了,可是心有不甘,又下載centos7,只花了一天,就成功了,因此在這裏使用centos7系統。在這個仍是要感謝各位大神的博客,感激之情溢於言表。html5
上個截圖來表達喜悅的心情python
這是一張成功的截圖。linux
套話很少說,直接操做步驟。git
版本:5.2.20-125813(下載時最高版本)。github
下載地址:https://www.virtualbox.org/golang
(這麼快就更新了一版本嘛,無比尷尬)docker
具體安裝步驟,百度一下。ubuntu
版本號:CentOS-7-x86_64-DVD-1804.iso 和 CentOS-7-x86_64-Everything-1804.iso(筆者都有下載,使用的是CentOS-7-x86_64-Everything-1804)centos
下載地址:http://isoredirect.centos.org/centos/7/isos/x86_64/(當前鏈接顯示全部版本及各類鏡像鏈接)。
http://mirrors.aliyun.com/centos/7.5.1804/isos/x86_64/(筆者選擇的是阿里的鏡像,若是還有迅雷的話,下載十分迅速)。
安裝:https://www.cnblogs.com/hihtml5/p/8217062.html(筆者根據大神提供的經驗,尤爲後面網絡設置的,幫了大忙)。
網絡:筆者使用的是有限網絡。
要保證主機能夠ping通虛擬機,同時虛擬機能夠ping通‘www.baidu.com’(筆者一直實現不了虛擬機平通主機,可是不影響後續步驟)。
說明:筆者不太喜歡'右ctrl'鍵來切換鼠標在虛擬機和主機的位置,就用secureCRT鏈接虛擬機。其餘人能夠根據本身的喜歡,自行選擇及忽略,是否是很人性化。
根據第二步驟的操做,主機能夠ping通虛擬機,便可鏈接成功,若是還不行,可修改/etc/sysconfig/network-scripts/ifcfg-enp0s3。
登陸虛擬機,筆者全部須要操做都在root用戶,/root/目錄下。以前使用Ubuntu時,就遇到這種狀況,也是差些就成功了(可惜萬分)。
下載指令:
[root@localhost ~] # wget https://storage.googleapis.com/golang/go1.9.linux-amd64.tar.gz
若是沒有安裝wget,須要先安裝wget。命令:
[root@localhost ~] # yum install wget
等待下載完成..
[root@localhost ~] # sudo tar -C /usr/local -xzf go1.9.linux-amd64.tar.gz
[root@localhost ~] # vi /etc/profile
在文件最底部,添加以下內容:
export PATH=$PATH:/usr/local/go/bin export GOROOT=/usr/local/go export GOPATH=$HOME/go export PATH=$PATH:$HOME/go/bin
退出文件,保存生效。
[root@localhost ~] # source /etc/profile
筆者建議使用以下指令,更詳細。
[root@localhost ~] # go env
效果以下圖,則安裝成功。
因爲操做過多,請按照步驟來。
[root@localhost ~] # uname -r
[root@localhost ~] # sudo yum update
[root@localhost ~] # sudo yum remove docker docker-common docker-selinux docker-engine
[root@localhost ~] # sudo yum install -y yum-utils device-mapper-persistent-data lvm2
[root@localhost ~] # sudo yum-config-manager --add-repo http://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo
[root@localhost ~] # yum list docker-ce --showduplicates | sort -r
輸出以下圖:
筆者在運行fabric網絡時,就遇到一個問題(具體問題,忘記記錄),百度了一下說是docker和docker-compose版本問題,因此筆者在這裏推薦docker版本是:17.12.0-ce。
[root@localhost ~] # sudo yum install 版本號 ## sudo yum install docker-ce-17.12.0.ce
[root@localhost ~] # docker version
以下顯示:
[root@localhost ~] # sudo systemctl start docker [root@localhost ~] # sudo systemctl enable docker
[root@localhost ~] # yum-config-manager --add-repo http://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo
[root@localhost ~] # yum -y install epel-release
這個版本應該是8.*的,安裝docker-compose須要升級到18.*
[root@localhost ~] # sudo yum -y install python-pip
[root@localhost ~] # pip install --upgrade pip
以下圖顯示:
[root@localhost ~] # sudo pip install docker-compose==版本號 ##sudo pip install docker-compose==1.12.0
[root@localhost ~] # docker-compose version
到此docker和docker-compose已經安裝完成,那麼來試試一個hello-world吧。指令以下:
[root@localhost ~] # docker run hello-world
截圖以下:
若是是第一次運行,會有下載hello-world 的過程,請耐心等待。(筆者已經運行過好屢次,截圖如上)。
docker 經常使用指令:
docker stats # 容器,狀態 docker rm -f $(docker ps -aq) #清除容器內全部示例 ... 等等(到目前就用到這兩個指令,捂臉..)
[root@localhost hyperledger] # git clone https://github.com/hyperledger/fabric.git
若是git不可用,下載git。指令以下:
[root@localhost hyperledger] # sudo yum install git
[root@localhost ~] # cd ~/go/src/github.com/hyperledger/fabric
[root@localhost fabric] # git checkout v1.0.0
[root@localhost ~] # cd ~/go/src/github.com/hyperledger/fabric/examples/e2e_cli/
[root@localhost e2e_cli] # source download-dockerimages.sh -c x86_64-1.0.0 -f x86_64-1.0.0
[root@localhost e2e_cli] # docker images
以下圖顯示:
[root@localhost e2e_cli] # ./network_setup.sh up
該腳本啓動的服務解釋以下(摘自網絡):
編譯生成Fabric公私鑰、證書的程序,程序在目錄:fabric/release/linux-amd64/bin
基於configtx.yaml生成創世區塊和通道相關信息,並保存在channel-artifacts文件夾。
基於crypto-config.yaml生成公私鑰和證書信息,並保存在crypto-config文件夾中。
基於docker-compose-cli.yaml啓動1Orderer+4Peer+1CLI的Fabric容器。
稍等一會,出現文章開頭的截圖。再次截取,若是以下圖顯示,那就恭喜,你的網絡也通了。
[root@localhost ~] # docker stats
容器顯示截圖以下:
新開session窗口。指令以下(以下指令能夠先不執行,後續步驟會用到):
[root@localhost ~] # cd ~/go/src/github.com/hyperledger/fabric/examples/e2e_cli/
[root@localhost e2e_cli] # ./network_setup.sh down
[root@localhost ~] # docker exec -it cli bash
進入目錄下,以下圖所示:
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","50"]}'
查詢餘額,截圖以下:
a帳號餘額:
到此,全部的步驟都結束了,能夠執行 「8.7關閉網絡」。