IBM區塊鏈系列Hyperledger ,除了最核心的fabric網路外還出了一系列的工具和工程,這裡就記錄下區塊鏈瀏覽器的安裝部署,現在的版本是使用PostgreSQL資料庫來儲存資料(之前版本使用mysql)。
瀏覽器使用Psql和nodejs開發,所以對java或golang小夥伴來說,肯定會碰一些釘子。(官方的安裝不是很詳細)
先上地址:
https://github.com/hyperledger/blockchain-explorer.git如果發現bug可以貢獻修複
1、依賴環境安裝
a) nodejs 8.11.x (Note that v9.x is not yet supported)b) PostgreSQL 9.5 or greaterc) Jq [https://stedolan.github.io/jq/]d) gite) gcc-c++
1)安裝git
yum install -y git查看版本:[root@fabric-test2 server]# git --versiongit version 1.8.3.1
2)nodejs安裝
a.下載wget https://nodejs.org/dist/v8.11.4/node-v8.11.4-linux-x64.tar.xzb.解壓tar -xvf node-v8.11.4-linux-x64.tar.xz c.連結ln -s /server/node-v8.11.4-linux-x64/bin/node /usr/local/bin/node ln -s /server/node-v8.11.4-linux-x64/bin/npm /usr/local/bin/npmd.測試[root@fabric-test2 node-v8.11.4-linux-x64]# node -vv8.11.4[root@fabric-test2 node-v8.11.4-linux-x64]# npm -v5.6.0
3)PostgreSQL安裝
1.添加RPM yum install https://download.postgresql.org/pub/repos/yum/9.5/redhat/rhel-7-x86_64/pgdg-centos95-9.5-2.noarch.rpm2.安裝PostgreSQL 9.5 yum install postgresql95-server postgresql95-contrib3.初始化資料庫 /usr/pgsql-9.5/bin/postgresql95-setup initdb4.設定開機自啟動 systemctl enable postgresql-9.5.service5.啟動服務 systemctl start postgresql-9.5.servicePostgreSQL 安裝完成後,會建立一下‘postgres’使用者,用於執行PostgreSQL,資料庫中也會建立一個'postgres'使用者,預設密碼為自動產生,需要在系統中改一下。6.修改使用者密碼 su - postgres 切換使用者,執行後提示符會變為 '-bash-4.2$' psql -U postgres 登入資料庫,執行後提示符變為 'postgres=#' ALTER USER postgres WITH PASSWORD 'postgres'; 設定postgres使用者密碼(!!!這個密碼要注意下不能包含@符號) \q 退出資料庫7.開啟遠端存取 vi /var/lib/pgsql/9.5/data/postgresql.conf 修改#listen_addresses = 'localhost' 為 listen_addresses='*' 當然,此處‘*’也可以改為任何你想開放的伺服器IP8.信任遠端連線 vi /var/lib/pgsql/9.5/data/pg_hba.conf 修改如下內容,信任指定伺服器串連 # IPv4 local connections: host all all 127.0.0.1/32 md5 增加 host all all 0.0.0.0/0 md59. 重啟PostgreSQL資料服務
4)安裝jq
jq的安裝需要epel源wget http://dl.fedoraproject.org/pub/epel/epel-release-latest-7.noarch.rpmrpm -ivh epel-release-latest-7.noarch.rpmyum repolist 安裝:yum install jq -y
5)安裝gcc-c++
yum install -y gcc-c++編譯使用
依賴環境準備就緒,接下來是安裝了;
2、初始化配置
1)源碼下載
git clone https://github.com/hyperledger/blockchain-explorer.gitcd blockchain-explorer
2)資料庫初始化
建立一個使用者:cd blockchain-explorer/app/persistence/postgreSQL修改執行模式chmod -R 775 db/修改pgconfig.json 檔案cd dbvi pgconfig.json 如下:{ "pg": { "host": "127.0.0.1", "port": "5432", "database": "fabricexplorer", "username": "postgres", "passwd": "postgres" }}其實這裡配置後還是需要輸入密碼,不過這個配置後續有用;執行指令碼:[root@fabric-test2 db]# ./createdb.sh 輸入資料庫密碼就好;
3)Fabric 網路搭建
這個之前有教程,不再介紹;
4)Fabric 網路設定
先講之前的配置備份cp blockchain-explorer/app/platform/fabric/config.json blockchain-explorer/app/platform/fabric/config.json.bk配置(以之前fabric分布式部署例子為基礎)vi blockchain-explorer/app/platform/fabric/config.json配置如下:{ "network-config": { "org1": { "name": "OrgCoreCompanyMSP", "mspid": "OrgCoreCompanyMSP", "peer1": { "requests": "grpcs://10.0.200.114:7051", "events": "grpcs://10.0.200.114:7053", "server-hostname": "peer0.corecompany.lychee.com", "tls_cacerts": "/opt/gopath/src/github.com/hyperledger/fabric/lychees/bscf/crypto-config/peerOrganizations/corecompany.lychee.com/peers/peer0.corecompany.lychee.com/tls/ca.crt" }, "admin": { "key": "/opt/gopath/src/github.com/hyperledger/fabric/lychees/bscf/crypto-config/peerOrganizations/corecompany.lychee.com/users/Admin@corecompany.lychee.com/msp/keystore", "cert": "/opt/gopath/src/github.com/hyperledger/fabric/lychees/bscf/crypto-config/peerOrganizations/corecompany.lychee.com/users/Admin@corecompany.lychee.com/msp/signcerts" } } }, "channel": "bscfchannel", "orderers": [ { "mspid": "OrdererMSP", "server-hostname": "orderer1.lychee.com", "requests": "grpcs://10.0.200.111:7050", "tls_cacerts": "/opt/gopath/src/github.com/hyperledger/fabric/lychees/bscf/crypto-config/ordererOrganizations/lychee.com/orderers/orderer1.lychee.com/tls/ca.crt" } ], "keyValueStore": "/tmp/fabric-client-kvs", "configtxgenToolPath": "/opt/gopath/src/github.com/hyperledger/fabric/release/linux-amd64/bin/", "SYNC_START_DATE_FORMAT": "YYYY/MM/DD", "syncStartDate": "2018/01/01", "eventWaitTime": "30000", "license": "Apache-2.0", "version": "1.1"}這裡要注意下:1、org1 可以隨意命名,跟fabric網路無關;2、可先添加一個節點做測試,等成功後再配置全部;3、org中的name、mspid等必需根網路設定的一致(fabric網路的configtx.yaml檔案);4、注意ip地址和grpcs/grpc;5、注意認證檔案路徑;6、keyValueStore 這個是client的存放位置,可暫時隨意配置個位置。
3、打包部署
這個熟悉前段開發的會比較順利,但是做java後端和golang的小夥伴可能需要折騰下;(其實就是一個工程打包,下載依賴,部署的過程)
cd blockchain-explorernpm installcd client/npm installnpm run build如果遇到 root沒許可權,則需要使用非安全模式,順便輸出下詳細日誌如下:cd blockchain-explorernpm install --unsafe-perm -dcd client/npm install --unsafe-perm -dnpm run build --unsafe-perm -d!!!注意,如果中間出錯,重新安裝時先要刪除node_modules檔案夾,client裡的也需要;
4、運行
cd blockchain-explorer./start.sh記錄檔:logs/app app日誌logs/console 作業記錄logs/db db日誌這幾個檔案裡面的日誌要結合看才能更好的解決問題;console成功日誌:Property config.syncStartDate set to 2018/01/01Please open web browser to access :http://127.0.0.1:8080/pid is 9641Successfully received the block event[object Object]
5、問題總結
1. make: g++: Command not foundyum install -y gcc-c++2. getBlockActivity undefined 找不到這個是npm install問題,刪除node_modules,重新安裝3.TypeError: Cannot read property 'forEach' of undefined這個是fabric網路未配置好,重新檢查下app/platform/fabric/config.json 網路設定4.server.on undefined 找不到這個是npm install問題,刪除node_modules,重新安裝5. TypeError: Cannot read property 'queryChannels' of undefined這個是fabric網路未配置好,重新檢查下app/platform/fabric/config.json 網路設定
6、效果如下:
image.pngimage.pngimage.pngimage.png