hyperledger explorer 环境搭建

### nodejs
下载nodejs二进制包:
wget https://nodejs.org/dist/v12.16.2/node-v12.16.2-linux-x64.tar.xz

解压xz数据包:
xz -d node-v12.16.2-linux-x64.tar.xz

解压tar数据包:
tar -C /usr/local/ -xvf node-v12.16.2-linux-x64.tar

更改目录名:
mv node-v12.16.2-linux-x64 node

添加环境变量:
export PATH=$PATH:/usr/local/node/bin

查看版本信息:
node -v

### jq
yum install epel-release
yum install jq

### PostgreSQL
# Install the repository RPM:
yum install -y https://download.postgresql.org/pub/repos/yum/reporpms/EL-7-x86_64/pgdg-redhat-repo-latest.noarch.rpm

# 下载服务端:
yum install -y postgresql12-server

初始化数据库并设置开机自启动:
/usr/pgsql-12/bin/postgresql-12-setup initdb
systemctl enable postgresql-12

启动服务:
systemctl start postgresql-12

验证是否安装成功:
rpm -aq| grep postgres (正常返回版本信息即可)

修改用户密码:

 su - postgres 切换用户,执行后提示符会变为 '-bash-4.2$'
 psql -U postgres 登录数据库,执行后提示符变为 'postgres=#'
 ALTER USER postgres WITH PASSWORD 'postgres'; 设置postgres用户密码为postgres
 c databasename 进入数据库
 d 查看表
 d tablename 查看具体表结构
 q 退出数据库
 exit 退出命令行界面



开启远程访问:
vi /var/lib/pgsql/12/data/postgresql.conf
修改#listen_addresses = 'localhost' 为 listen_addresses='*'
当然,此处‘*’也可以改为任何你想开放的服务器IP

信任远程连接:
vi /var/lib/pgsql/12/data/pg_hba.conf
修改如下内容,信任指定服务器连接
# IPv4 local connections:
host all all 127.0.0.1/32 trust
host all all 0.0.0.0/0       trust

重启服务:
systemctl restart postgresql-12

### Explorer 下载
cd /opt/gopath/src/github.com/hyperledger
git clone https://github.com/hyperledger/blockchain-explorer.git

我们使用默认版本,进行数据库创建:
cd blockchain-explorer/app
vi explorerconfig.json
修改配置如下:
"postgreSQL": {

"host": "127.0.0.1",
"port": "5432",
"database": "fabricexplorer",
"username": "postgres",
"passwd": "postgres"
}
运行创建数据库的脚本:
cd persistence/fabric/postgreSQL
chmod -R 775 db/
cd db
./createdb.sh

查看数据库状态指令:
sudo -u postgres psql -c 'l'

sudo -u postgres psql fabricexplorer -c 'd'

# 定义fabric网络连接参数
cd /opt/gopath/src/github.com/hyperledger/blockchain-explorer/app/platform/fabric/config.json

# 设置enableAuthentication属性false,用于关闭登录认证
{
    "network-configs": {
        "first-network": {
            "name": "firstnetwork",
            "profile": "./connection-profile/first-network.json",
            "enableAuthentication": false
        }
    },
    "license": "Apache-2.0"
}

# 继续进行设置(Fabric网络环境要处于正常启动的状态,不然下述路径的文件是不存在的)
cd /opt/gopath/src/github.com/hyperledger/blockchainexplorer/app/platform/fabric/connection-profile/first-network.json
重点设置如下几项:

"adminPrivateKey": {
                                "path": "/opt/gopath/src/github.com/hyperledger/fabric/scripts/fabric-samples/test-network/organizations/peerOrganizations/org1.example.com/users/Admin@org1.example.com/msp/keystore/priv_sk"
                        }
-------------------------------------分隔符(下同)-----------------------------------------                       
"signedCert": {
                                "path": "/opt/gopath/src/github.com/hyperledger/fabric/scripts/fabric-samples/test-network/organizations/peerOrganizations/org1.example.com/users/Admin@org1.example.com/msp/signcerts/Admin@org1.example.com-cert.pem"
                        }
=========================================================================================
"tlsCACerts": {
                                "path": "/opt/gopath/src/github.com/hyperledger/fabric/scripts/fabric-samples/test-network/organizations/peerOrganizations/org1.example.com/peers/peer0.org1.example.com/tls/ca.crt"
                        }
-----------------------------------------------------------------------------------------
"tlsCACerts": {
                                "path": "/opt/gopath/src/github.com/hyperledger/fabric/scripts/fabric-samples/test-network/organizations/peerOrganizations/org1.example.com/ca/ca.org1.example.com-cert.pem"
                        }
### 需要说明一点,这两个 "tlsCACerts" 并不在一个字典中,配置时要特别注意,还有就是以自己的文件路径为主。



# Build Hyperledger Explorer

cd /opt/gopath/src/github.com/hyperledger/blockchain-explorer
npm install
cd /opt/gopath/src/github.com/hyperledger/blockchain-explorer/client
npm install
npm run build

如果遇到 root没权限,则需要使用非安全模式,顺便输出下详细日志如下:
cd /opt/gopath/src/github.com/hyperledger/blockchain-explorer
npm install --unsafe-perm -d
cd client/
npm install --unsafe-perm -d
npm run build --unsafe-perm -d
!!!注意,如果中间出错,重新安装时先要删除node_modules文件夹,client里的也需要;


# 报错提示信息(在执行 npm run build --unsafe-perm -d 后出现的error信息)
ERROR: Ineffective mark-compacts near heap limit Allocation failed - JavaScript heap out of memory
# 错误原因
react环境搭建时,在 Node 中通过 JavaScript 使用内存时只能使用部分内存(64位系统下约为1.4 GB,32位系统下约为0.7 GB),而我的虚拟机环境初始化内存为1G,导致JavaScript内存溢出
# 解决方案
查询过很多网上的文档,建议都是添加指定内存大小的参数,反复尝试多次后无果,最后修改虚拟机内存设置为3G后,重新执行打包指令,成功(大家可以尝试下2G)。

运行
cd /opt/gopath/src/github.com/hyperledger/blockchain-explorer
./start.sh
./stop.sh   停止

浏览器中输入当前IP地址,端口号为 8080

官方文档:
https://github.com/hyperledger/blockchain-explorer/tree/v1.1.2

当然,每个人安装过程中遇到的问题不同,解决方法也因人而异,请大家辩证的对待。

原文地址:https://www.cnblogs.com/Earth-SmaThing/p/13582615.html