安装blockchain-explorer区块浏览器
Posted 小小本科生
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了安装blockchain-explorer区块浏览器相关的知识,希望对你有一定的参考价值。
概述
最近在做区块链相关项目(基于hyperledger fabric),需要能够实时监测区块链网络中的信息。好在hyperledger官方提供了一个区块浏览器(也就是blockchain-explorer),也就不用自己对照API进行开发了。
目前网上的区块链博客相对较少,关于此区块浏览器的安装资料还停留在1.4版本(本文基于hyperledger fabric测试网络2.1版本);且基本上都是采用代码库方式安装,需要手动安装postgreSQL、npm、Nodejs、jq等多种组件,非常麻烦,因此本文提供一种基于Docker-Compose进行安装的方式。
官方github地址:https://github.com/hyperledger/blockchain-explorer
准备条件
- 已经安装了Docker环境,并且已经启动了
- 已经成功启动了hyperledger fabric的测试网络,或者你自己部署的生产网络
开始安装
1. 拉取docker镜像
如果你运行过first-network.sh(1.x)或者test-network.sh(2.x),那么以下docker镜像会被自动拉取到本地
- Hyperledger Explorer docker repository
- Hyperledger Explorer PostgreSQL docker repository
如果你没有运行过这两个脚本或者本地没有这两个镜像,需要去docker hub上拉取一下
2. 准备启动文件
执行下方命令下载文件
wget https://raw.githubusercontent.com/hyperledger/blockchain-explorer/main/examples/net1/config.json
wget https://raw.githubusercontent.com/hyperledger/blockchain-explorer/main/examples/net1/connection-profile/test-network.json -P connection-profile
wget https://raw.githubusercontent.com/hyperledger/blockchain-explorer/main/docker-compose.yaml
启动测试网络后会在fabric-samples下的first-network目录下(1.x)或test-network目录(2.x)生成organizations目录,该目录下存放着各个组织、节点的加密证书信息。
将organizations目录复制到你刚刚下载文件所在的目录。那么此时该路径下目录结构如下所示
3. 修改配置文件
- 修改docker-compose.yaml文件
如果你对docker-compse比较了解,请按照自己的情况修改;如果不了解,请按照我下面给出的方式修改,你可以修改得和我一摸一样。
找到volumes标签,将其下的内容删掉或注释掉,配置成如下
- ./config.json:/opt/explorer/app/platform/fabric/config.json
- ./connection-profile:/opt/explorer/app/platform/fabric/connection-profile
- ./organizations:/tmp/crypto
- walletstore:/opt/explorer/wallet
意思就是
(a)将容器中的/opt/explorer/app/platform/fabric/config.json文件挂在到当前目录下的config.json文件
(b)将容器中的/opt/explorer/app/platform/fabric/connection-profile目录,挂在到当前目录下的connection-profile目录
(c)将容器中的/tmp/crypto目录,挂在到当前目录中的organizations目录
(d)将容器中的/opt/explorer/wallet挂在walletstore。此处使用的是卷标方式,如果想知道walletstore的具体地址可以执行如下命令进行查看
docker volume ls | grep walletstore
docker volume inspect myexplorer_walletstore
(e)ports:由于我服务器中的8080端口被占用了,因此我将容器中的8080端口映射到本地的18080端口,你可以自由更改为一个未冲突的端口,或者不修改(选做)
(f)environment:如果你使用的是虚拟机且使用桥接方式将资源管理器连接到结构网络,那么你需要在environment标签下添加如下设置以禁用主机名到LOCALHOST的映射(选做)
- DISCOVERY_AS_LOCALHOST=false
- 进入connection-profile目录修改test-network.json文件
修改的地方主要在于
(a)organizations.Org1MSP.adminPrivateKey.path
此值改为:/tmp/crypto/peerOrganizations/org1.example.com/users/Admin@org1.example.com/msp/keystore/728adf3380e5afc3a5471c74d15e59386f10c3671e91a24d187e82bf6377a8d8_sk
(b)organizations.Org1MSP.signedCert.path
此值改为:/tmp/crypto/peerOrganizations/org1.example.com/users/Admin@org1.example.com/msp/signcerts/cert.pem
(c)peers.peer0.org1.example.com.tlsCACerts.path
此值改为:/tmp/crypto/peerOrganizations/org1.example.com/peers/peer0.org1.example.com/tls/ca.crt
下面解释一下:
在上一步修改docker-compse步骤c中,我们将容器中的/tmp/crypto目录,挂在到当前目录中的organizations目录,这两个目录可以理解为相互同步,那么我们在此处a步骤中将organizations.Org1MSP.adminPrivateKey.path设置为/tmp/crypto/peerOrganizations/org1.example.com/users/Admin@org1.example.com/msp/keystore/728adf3380e5afc3a5471c74d15e59386f10c3671e91a24d187e82bf6377a8d8_sk其实设置的是…/organizations/peerOrganizations/org1.example.com/users/Admin@org1.example.com/msp/keystore/728adf3380e5afc3a5471c74d15e59386f10c3671e91a24d187e82bf6377a8d8_sk,但是我们必须设置为容器中的路径,否则读不到。此处b、c中的设置原因同。
4. 启动
切换到上层即docker-compose所在目录,执行如下命令启动项目
docker-compose up
观察日志,是否出错。如果出错,根据日志中的错误进行修改;如果未出错,直接CTRL+C结束掉,然后执行如下命令后台启动。之所以不直接后台启动是为了方便观察启动日志。
tips:
- 如果这里报net_test网络找不到,说明你用的是最新版网络,2.3版本已经将网络名改为fabric_test了,修改docker-compose文件,将networks.mynetwork.com.external.name字段由net_test改为fabric_test即可
- 前台启动时无论是否出错,CTRL+C停止后执行以下命令以进行一些容器关闭后的清除工作,防止一些环境未重置引发不必要的错误
docker-compose down
docker-compose up -d
5. 访问
- 开放端口(如果你在docker-compose文件中没有更改就是8080)
- 浏览器访问http://服务器ip:8080
用户名和密码在connection-profile目录下的test-network.json文件中,默认
用户名:exploreradmin
密码:exploreradminpw
登录之后界面如下所示
以上是关于安装blockchain-explorer区块浏览器的主要内容,如果未能解决你的问题,请参考以下文章
Fabric1.4 在自己项目中安装区块链浏览器blockchain-explorer
Fabric1.4 在自己项目中安装区块链浏览器blockchain-explorer