1. 程式人生 > >區塊鏈 hyperledger fabric1.0 環境搭建

區塊鏈 hyperledger fabric1.0 環境搭建

我的環境說明:

虛擬機器:VMware 12.5.7
作業系統:CentOS 64 位
超級賬本:https://github.com/hyperledger/fabric-samples.git  v1.0.0

1.安裝工具

  1.1 安裝 git:    yum install git 

      在執行git命令之前先執行以下命令
git config --global core.autocrlf false
git config --global core.longpaths true

  1.2 安裝 curl:   yum install curl

  1.3 安裝 golang:yum install golang

通過修改profile檔案:
vim /etc/profile
【/export PATH  找到設定PATH的行,新增】
 export GOPATH=/usr/lib/golang
 export PATH=$PATH:$GOPATH/bin

  1.4 配置

     vim /etc/selinux/config 
     將SELINUX=enforcing改為SELINUX=disabled

2.【安裝 Docker】

   2.1 yum update (更新系統)

   2.2 (docker安裝步驟)

     2.2.1 docker安裝

  (2.2.1.1)安裝倉庫

         (a) 安裝yum-utils ,這樣我們就能使用yum-config-manager 設定Yum源。
         yum install yum-utils

   
        (b) 執行以下命令,新增Yum源
         yum-config-manager --add-repo https://download.docker.com/linux/centos/docker-ce.repo

        (c) 【可選】執行以下命令,啟用“edge”倉庫。edge倉庫其實也包含在了docker.repo檔案中了,但預設是禁用的
                   我們可使用以下命令啟用edge倉庫。
         yum-config-manager --enable docker-ce-edge
          如果想要再次禁用edge倉庫,可執行以下命令。
          yum-config-manager --disable docker-ce-edge

   (2.2.1.2)安裝Docker

        (a)執行以下命令更新Yum的包索引
       yum makecache fast
        (b) 安裝你想要的Docker版本(CE/EE)
  Docker版本 命令
  Docker CE sudo yum install docker-ce  (免費)
  Docker EE sudo yum install docker-ee
  Docker從17.03開始分為企業版與社群版,社群版並非閹割版,而是改了個名稱;企業版則提供了一些收費的高階特性。
  EE版本維護期1年;CE的stable版本三個月釋出一次,維護期四個月;另外CE還有edge版,一個月釋出一次。

(2.2.1.3)安裝 yum -y install epel-release  

(2.2.1.4)啟動Docker

     systemctl start docker

   (2.2.1.5)驗證安裝是否正確

    docker run hello-world

   (2.2.1.6)升級Docker(忽略)

 yum makecache fast
                 解除安裝Docker
 yum remove docker docker-common container-selinux docker-selinux

(2.2.2)啟動,systemctl start docker.service

(2.2.3)開機啟動,systemctl enable docker.service

(2.2.4)幫助,docker --help

(2.2.5)概要資訊,docker info

(2.2.6)映象檢視,docker images

(2.2.7)容器檢視,即程序檢視,docker ps -a

   2.3 下載:docker-compose :

         curl -L https://github.com/docker/compose/releases/download/1.14.0/docker-compose-`uname -s`-`uname 


-m` > /usr/local/bin/docker-compose

   2.4 授權:sudo chmod +x /usr/local/bin/docker-compose

   2.5 測試安裝:docker-compose --version

3.安裝node

   3.1 安裝編譯環境:yum install gcc-c++

   3.2 安裝nvm

              curl -o- https://raw.githubusercontent.com/creationix/nvm/v0.31.1/install.sh | bash
              或者
              wget -qO- https://raw.githubusercontent.com/creationix/nvm/v0.31.1/install.sh | bash
          
              執行 : source ~/.bash_profile
              可使用nvm --version 命令檢查nvm是否安裝成功

   3.3 安裝node

          a.檢視可以安裝的node版本
      nvm list-remote
  b.安裝想要安裝版本的node,(例如:)
     nvm install v6.11.1
   c. 檢視版本號(驗證是否安裝成功)
       node -v (出現版本號 大功告成)
       npm -v


   3.4 配置環境變數

which node (檢視 node 安裝路徑)
修改profile檔案:
vim /etc/profile
export NODE_HOME=/root/.nvm/versions/node/v6.11.1 (到版本號即可)
export PATH=$NODE_HOME/bin:$PATH

4.測試安裝nginx

(4.1)下載映象,docker pull nginx
(4.2)啟動容器,docker run -d -p 8080:80 nginx
      把容器內的nginx的80埠,對映到當前伺服器的8080埠,

             當前伺服器的ip是192.168.1.120, (ifconfig-查詢IP)
             瀏覽器輸入http://192.168.1.120:8080/,就可以看到nginx已啟動,
(4.3)再啟動多一個容器,docker run -d -p 8081:80 nginx
           瀏覽器輸入http://192.168.1.120:8081/,就可以看到另外一個nginx已啟動 
             也可以通過curl 127.0.0.1:8081 來測試是否開啟相應埠
(4.4)到這裡就能體現出Docker部署應用和傳統部署應用的區別了,           
             傳統部署的話,需要人工拷貝多一份nginx,再配置埠,
             而Docker部署的話,在已製作好的映象基礎上,一條命令就可以部署一個新的應用

5.刪除測試的nginx

(5.1)docker ps -a   可以顯示容器id
(5.2)docker stop 73d5debfde26  停止容器
(5.3)docker rm 73d5debfde26   刪除容器


6.指定容器nginx的引數

   docker run --name nginx-001 -d -p 8081:80 -v /home/docker/nginx/html:/usr/share/nginx/html nginx
   說明:-p 引數是把 宿主的8081埠對映到容器的80埠 
         這裡要注意-v是資料卷,可以主機和容器之間共享/home/Docker/nginx/html這個目錄,
         在容器裡面就是/usr/share/nginx/html。其實這就是我們的程式碼目錄,
         除錯程式碼就是靠共享目錄實現的,很方便!
         可以使用curl 127.0.0.1:8081檢視


7.修改容器裡面的配置檔案

#進入容器
docker exec -it nginx-001 bash
#安裝工具
apt-get update
apt-get install vim
#檢視和修改nginx的配置資訊
vim /etc/nginx/conf.d/default.conf (nginx配置)


8.在本地選擇好一個目錄,執行 git命令,下載【原始碼】

git clone https://github.com/hyperledger/fabric-samples.git
cd fabric-samples


9.在本地選擇好一個目錄,執行以下命令,下載【二進位制執行庫】

a.先進行一次ntp時間同步(確保萬無一失) ntpdate pool.ntp.org 
        b.開始下載原始碼   curl -sSL https://goo.gl/iX9dek | bash

10.配置環境變數  

   參考(http://www.cnblogs.com/hust-chenming/p/4943268.html)
   我本地的配置為 export PATH=/root/hyperledger/run-files/bin:$PATH
   修改profile檔案:
vim /etc/profile
【/export PATH //找到設定PATH的行】新增
export PATH=<path to download location>/bin:$PATH


   重啟機器


   安裝 yum install npm

11.在目錄fabric-samples中建立子目錄 first-network (忽略)

   11.1 cd /root/hyperledger/fabric-samples/first-network ,進入該目錄
   11.2 直接使用first-samples自代示例直接執行
         ./byfn.sh -m generate
   11.3 開啟網路  ./byfn.sh -m up
   11.4 關閉      ./byfn.sh -m down (不用執行)

12.開啟網路配置

   進入:cd /root/hyperledger/fabric-samples/fabcar
   執行: ./startFabric.sh

13.進入 cd /root/hyperledger/fabric-samples/fabcar

        node ./query.js


異常資訊(1):
    Error: Cannot find module 'fabric-client'
    at Function.Module._resolveFilename (module.js:485:15)
    at Function.Module._load (module.js:437:25)
    at Module.require (module.js:513:17)
    at require (internal/module.js:11:18)
    at Object.<anonymous> (/root/hyperledger/fabric-samples/fabcar/query.js:11:11)
    at Module._compile (module.js:569:30)
    at Object.Module._extensions..js (module.js:580:10)
    at Module.load (module.js:503:32)
    at tryModuleLoad (module.js:466:12)
    at Function.Module._load (module.js:458:3)

異常資訊(1)解決辦法:
  安裝: npm install

參考資料:

      http://hyperledger-fabric.readthedocs.io/en/latest/samples.html
      https://hyperledger-fabric.readthedocs.io/en/latest/write_first_app.html
      https://github.com/hyperledger/fabric-samples
      http://blog.csdn.net/remote_roamer/article/details/51916893
      http://www.cnblogs.com/bjlhx/p/7121875.html
      http://www.cnblogs.com/bjlhx/p/7195894.html
      http://www.cnblogs.com/niconi/p/5609773.html