Hyperledger Explorer 环境搭建详解
Hyperledger Explorer是一个简单,功能强大,易于使用,高度可维护的开源区块链浏览器,用于查看底层区块链网络上的活动。
网络上很多教程按着操作是不行得,今天抽空记录一下详细教程。
前提条件
- nodejs 8.11.x (Note that v9.x is not yet supported)
- PostgreSQL 9.5 or greater
- Jq [https://stedolan.github.io/jq/]
- gcc-c++
- 非root用户下操做,pg数据库用户同服务器用户,需要sudo权限
1、nodejs安装
参考https://blog.csdn.net/tiansheng1225/article/details/83899808
2、PostgreSQL安装
参考https://www.linuxidc.com/Linux/2017-10/147536.htm
3、jq安装
参考https://blog.csdn.net/markximo/article/details/80449626
4、gcc-c++安装
yum install -y gcc-c++
5、下载源码
git clone https://github.com/hyperledger/blockchain-explorer.git
6、修改数据库配置
cd blockchain-explorer/app
vi explorerconfig.json
修改username跟passwd
{
"persistence": "postgreSQL",
"platforms": ["fabric"],
"postgreSQL": {
"host": "127.0.0.1",
"port": "5432",
"database": "fabricexplorer",
"username": "chenjf",
"passwd": "123456"
},
"sync": {
"type": "local",
"platform": "fabric",
"blocksSyncTime": "3"
}
}
7、PostgreSQL数据库用户创建、表创建,建议使用工具
按官网文档提示得执行createdb.sh脚本来创建用户、数据库及表,但是执行会报错,所以此处建议自己创建。
本人用得是navicat premium来创建
先创建一个角色同上面得配置,此处为chenjf,密码123456
创建数据库命名同上面配置,此处为fabricexplorer
创建表,需要切换到刚才创建的用户下操作,脚本在blockchain-explorer/app/persistence/fabric/postgreSQL/db目录下的explorerpg.sql,可以拷贝出来在navicat premium上执行,其中:user需要改成对应的用户名,如下面这张表创建完指定所属用户时:ALTER table blocks owner to chenjf;记得要有分号。
8、全部创建完后启动first-network,执行./byfn.sh up启动fabric环境
9、修改Explorer里面的fabric配置,以first-network为例,如果自己搭建的就根据实际调整。
主要是替换fabric-path为实际first-network的路径,cd blockchain-explorer-bak/app/platform/fabric
编辑配置文件:vi config.json,替换文中所有的fabric-path为fabric-samples所在的路径即可,其他的均可不做修改
10、编译
cd blockchain-explorer
npm install
cd client/
npm install
npm run build
编译过程如果权限不足的记得给指定目录下的所有文件添加可读权限
chmod -R 755 所在目录
11、启动执行
cd blockchain-explorer ./start.sh
启动后看下日志是否正常,日志位于blockchain-explorer/logs/console/目录下,出现以下类似日志说明已经成功部署。
!
12、打开浏览器预览
本文作者:陈俊飞
作者主页:
https://learnblockchain.cn/people/522
- 深度学习的GPU:深度学习中使用GPU的经验和建议
- socket.io搭配pm2(cluster)集群解决方案
- 用 Python 来刷微信「跳一跳」游戏的记录
- Spring+SpringMVC+MyBatis+easyUI整合优化篇(十二)数据层优化-explain关键字及慢sql优化
- 高吞吐koa日志中间件
- 关于SQLRecoverableException问题的排查和分析(r4笔记第13天)
- Spring+SpringMVC+MyBatis+easyUI整合优化篇(十三)数据层优化-表规范、索引优化
- node中的Stream-Readable和Writeable解读
- Spring+SpringMVC+MyBatis+easyUI整合进阶篇(六)一定要RESTful吗?
- 深入node之Transform
- 巧用shell脚本统计磁盘使用情况(r4笔记第12天)
- 使用fasttext实现文本处理及文本预测
- 关于导入导出sequence(r4笔记第11天)
- Spring+SpringMVC+MyBatis整合进阶篇(四)RESTful实战(前端代码修改)
- JavaScript 教程
- JavaScript 编辑工具
- JavaScript 与HTML
- JavaScript 与Java
- JavaScript 数据结构
- JavaScript 基本数据类型
- JavaScript 特殊数据类型
- JavaScript 运算符
- JavaScript typeof 运算符
- JavaScript 表达式
- JavaScript 类型转换
- JavaScript 基本语法
- JavaScript 注释
- Javascript 基本处理流程
- Javascript 选择结构
- Javascript if 语句
- Javascript if 语句的嵌套
- Javascript switch 语句
- Javascript 循环结构
- Javascript 循环结构实例
- Javascript 跳转语句
- Javascript 控制语句总结
- Javascript 函数介绍
- Javascript 函数的定义
- Javascript 函数调用
- Javascript 几种特殊的函数
- JavaScript 内置函数简介
- Javascript eval() 函数
- Javascript isFinite() 函数
- Javascript isNaN() 函数
- parseInt() 与 parseFloat()
- escape() 与 unescape()
- Javascript 字符串介绍
- Javascript length属性
- javascript 字符串函数
- Javascript 日期对象简介
- Javascript 日期对象用途
- Date 对象属性和方法
- Javascript 数组是什么
- Javascript 创建数组
- Javascript 数组赋值与取值
- Javascript 数组属性和方法
- Matpotlib绘图遇到时间刻度就犯难?现在,一次性告诉你四种方法
- Windows NetLogon权限提升漏洞(CVE-2019-1424) 复现
- 源码解析:Git的第一个提交是什么样的?
- 终于搞懂,为什么 Java 的 main 方法必须是 public static void?
- Spring Boot 多版本更新,紧急修复 RFD 安全漏洞
- 【查找】折半查找/二分查找
- Kubernetes 1.19.0——密码管理
- centos 安装软件的方法
- 【深入理解java集合系列】ArrayList实现原理
- 【深入理解java集合系列】HashMap实现原理
- 【深入理解java集合系列】HashSet实现原理
- 【深入理解java集合系列】LinkedHashSet实现原理
- 突击并发编程JUC系列-原子引用AtomicReference
- JVM类加载过程科普
- 程序员自我修养之 Git 提交信息和分支创建规范