安裝文檔位置:
https://github.com/hyperledger/fabric fabric代碼托管地址
https://hyperledger-fabric.readthedocs.io/en/latest/ 在線文檔地址
https://github.com/hyperledger/fabric/archive/v1.0.0.tar.gz fabric1.0.0源代碼包地址
安裝環境:
Vmware + CentOS7 64位 1611版本
安裝前准備:
- 安裝配置好虛擬機,需要保證curl命令可用
- 關閉centos自動升級,免得安裝時提示yum被鎖定
即將/etc/yum/pluginconf.d/langpacks.conf 中的 enable=1改為enable=0
sed -i 's/enabled=1/enabled=0/g' /etc/yum/pluginconf.d/langpacks.conf
yum update
- 使用yum install 安裝tree(方便查看目錄結構),git(用於下載代碼)
- 安裝docker和docker-compose
https://download.daocloud.io/ 找到docker和docker-compose的安裝指導。我們選擇在線安裝根據指導執行命令即可。版本更新后指導也會更新,安裝時最好去網站上獲取最新的命令
安裝docker
sudo yum install -y yum-utils
sudo yum-config-manager \
--add-repo \
https://download.daocloud.io/docker/linux/centos/docker-ce.repo
sudo yum install -y -q --setopt=obsoletes=0 docker-ce-17.03.1.ce*
sudo systemctl enable docker
sudo systemctl start docker
sudo service docker status
docker --version
輸出:Docker version 17.03.1-ce, build c6d412e
安裝docker-compose
curl -L https://get.daocloud.io/docker/compose/releases/download/1.12.0/docker-compose-`uname -s`-`uname -m` > /usr/local/bin/docker-compose
chmod +x /usr/local/bin/docker-compose
docker-compose --version
輸出:docker-compose version 1.12.0, build b31ff33
使用阿里雲進行鏡像加速(如果能FQ就不用加速了)
https://dev.aliyun.com 注冊一個帳號。然后查看Docker Hub 鏡像站點。指導文檔寫的很清楚。拷貝其中的內容執行即可。內容如下:
https后面的應該是你自己的鏡像地址
sudo mkdir -p /etc/docker sudo tee /etc/docker/daemon.json <<-'EOF' { "registry-mirrors": ["https://du8c1in9.mirror.aliyuncs.com"] } EOF sudo systemctl daemon-reload sudo systemctl restart docker
- 安裝nodejs和NPM(需要V6 LTS版本。不支持V7或者V8)
https://nodejs.org nodejs網站,可以下載安裝包進行安裝,這里下載了node-v6.11.4-linux-x64.tar.xz解壓包
將這個包放到/opt/nodejs目錄下,當作安裝目錄
進行解壓:
cd /opt
mkdir nodejs
cd nodejs
curl -o node-v6.11.4-linux-x64.tar.xz https://nodejs.org/dist/v6.11.4/node-v6.11.4-linux-x64.tar.xz
xz -d node-v6.11.4-linux-x64.tar.xz
tar -xvf node-v6.11.4-linux-x64.tar
建立軟連接,后續替換版本方便
ln -s /opt/nodejs/node-v6.11.4-linux-x64/bin/node /usr/local/bin/node ln -s /opt/nodejs/node-v6.11.4-linux-x64/bin/npm /usr/local/bin/npm
也可以通過設置nodejs環境變量的方式,在/etc/profile文件的
export PATH USER LOGNAME MAIL HOSTNAME HISTSIZE HISTCONTROL 一行的上面添加如下內容:
#set for nodejs export NODE_HOME=/opt/nodejs/node-v6.11.0-linux-x64 export PATH=$NODE_HOME/bin:$PATH
升級NPM工具,刷新會很慢。但好像不執行也沒有什么問題
npm install npm@latest -g
- 安裝go語句環境
https://golang.org/dl/ go的主頁下載地址,可以到這里尋找最新版本
cd /opt mkdir golang
cd golang curl -O https://storage.googleapis.com/golang/go1.8.3.linux-amd64.tar.gz tar -zxvf go1.8.3.linux-amd64.tar.gz
cd /opt
mkdir gopath
在/etc/profile中配置go的環境變量
export GOROOT=/opt/golang/go export PATH=$GOROOT/bin:$PATH
export GOPATH=/opt/gopath
修改完source /etc/profile 刷新一下,使用 go version查看版本,也可以使用go env查看環境變量信息
下載fabric1.0.1源代碼:
將源代碼下載gopath下,/opt/gopath/src/github.com/hyperledger/fabric目錄下,若沒有可手工創建
curl -O https://github.com/hyperledger/fabric/archive/v1.0.1.tar.gz
tar -zxvf v1.0.1.tar.gz
目錄結構如下:
下載fabric-sample鏡像並啟動:
首先找一個目錄做為臨時安裝目錄,這里用的是/opt/fabricinstall.
從剛才的源代碼目錄拷貝安裝腳本過來,並執行,運行腳本時,會下載一個bin目錄,里邊有后續部署時會用的工具
cp /opt/gopath/src/github.com/hyperledger/fabric/scripts/bootstrap-1.0.1.sh /opt/fabricinstall/
cd /opt/fabricinstall/
sh bootstrap-1.0.1.sh
執行后就要開始等待鏡像下載了,下載完成后,可以用以下命令,查看下載的鏡像
docker images | grep hyperledger*
用阿里鏡像很快裝完了,如果使用鏡像需要加上版本號,這里自動轉成了latest就不用輸入版本號了。所以每個鏡像都有兩行。
准備運行e2e_cli的例子
例子的腳本放在源代碼目錄中,需要拷貝過來。而例子腳本的路徑都是寫死的,所以要按照腳本里邊的相對路徑,創建整個運行目錄。
之前使用bootstrap-1.0.1.sh腳本下載的執行文件,也需要拷貝到例子目錄中,例子的腳本會調用這些執行文件。
以下是生成目錄結構的腳本:
mkdir /opt/fabricinstall/release
mkdir /opt/fabricinstall/release/e2ecli
mkdir /opt/fabricinstall/release/linux-amd64
cd /opt/fabricinstall/release/e2ecli/
cp -R /opt/gopath/src/github.com/hyperledger/fabric/examples/e2e_cli/* /opt/fabricinstall/release/e2ecli/
cp -R /opt/fabricinstall/bin/ /opt/fabricinstall/release/linux-amd64/
mkdir /opt/fabricinstall/release/chaincode
mkdir /opt/fabricinstall/release/chaincode/go
cp -R /opt/gopath/src/github.com/hyperledger/fabric/examples/chaincode/go/* /opt/fabricinstall/release/chaincode/go
./network_setup.sh up
注意:e2ecli目錄是固定的,啟動后會創建一個docker network以此為名字,如果修改該目錄,要到//opt/fabricinstall/release/e2ecli/base/peer-base.yaml文件中修改以下配置選項
- CORE_VM_DOCKER_HOSTCONFIG_NETWORKMODE=e2ecli_default
如果容器已經生成了,可以使用如下命令清理后,在進行network_set.
docker stop $(docker ps -q) & docker rm $(docker ps -aq)
出現以下字樣,沒有報錯。估計是成功了。
可以通過docker ps查詢啟動的容器,啟動前是沒有任何容器的。
這個過程中會創建一個例子,並將需要的容器都拉起來
可以看到看到啟動了三個mycc(系統給出的例子) 一個cli(工具) 一個orderer(選舉) 四個peer(客戶端)
當然這個過程也可以手工進行,后續會專門寫一個文檔講解。
關閉例子
開一個新窗口,然后在對應目錄下,執行關閉指令就可以了。
./network_setup.sh down
啟用couchdb
上面的例子中,我們無法看到存儲內容,所以改用couchdb做為pee交易的存儲 使用couchdb可以通過網頁查看狀態內容
所以先關閉掉之前的系統,使用以下命令進行重新進行啟動
./network_setup.sh up mycc 10000 couchdb
一共四個參數 1.啟動或停止 2.通道名稱 3.cli等待時間 4.使用couchdb。 如果關閉的話,把up改成down就可以了。
啟動后訪問http://192.168.101.23:5984/_utils/ 就可以看到頁面了。IP記得換成自己的
點進mycc看一下