前言
WeBASE(WeBank Blockchain Application Software Extension) 是在区块链应用和FISCO-BCOS节点之间搭建的一套通用组件。围绕交易、合约、密钥管理,数据,可视化管理来设计各个模块,开发者可以根据业务所需,选择子系统进行部署。WeBASE屏蔽了区块链底层的复杂度,降低开发者的门槛,大幅提高区块链应用的开发效率,包含节点前置、节点管理、交易链路,数据导出,Web管理平台等子系统。
WeBASE四个服务的部署架构如下图:节点前置需要和区块链节点部署在同一台机器,签名服务可以和节点前置分开部署,也可以同机部署;节点管理和WeBASE管理平台可以同机部署,也可以分开部署。在企业生产环境,为了容灾往往会在多个节点上部署节点前置,也会部署多个签名服务、节点管理和WeBASE管理台,本文主要讲解如何在没有网络的服务器中部署WeBASE。
一、思路
先在在有网络的电脑上进行安装包的下载,然后上传至无网络的系统之中完成部署。
需要提前准备的环境(离线安装以下环境教程点这里):
环境 | 版本 |
---|
Java | JDK8或以上版本 | MySQL | MySQL-5.6或以上版本 | Nginx | nginx1.6或以上版本(本文选择1.17.8,不是硬性要求) |
所以我们要安装webase之前得先离线安装上表中的环境。
一、版本及兼容
WeBASE v1.5.3
WeBASE v1.5.3 版本支持 FISCO-BCOS 2.5.x及以上版本。WeBASE 子系统推荐使用下表的版本搭配,FISCO-BCOS 推荐使用 FISCO BCOS 2.8.0版本。
更多兼容版本见:https://webasedoc.readthedocs.io/zh_CN/latest/docs/WeBASE/ChangeLOG.html
三、安装步骤
1.在有网络的电脑上下载相关的安装包,如何上传到没有网络的服务器上
PS:有的服务器可能需要用专业的防泄密盘进行传输
1.1.下载WeBase v1.5.3相关的安装包
官方CDN加速下载地址:
wget https://osp-1257653870.cos.ap-guangzhou.myqcloud.com/WeBASE/releases/download/v1.5.3/webase-front.zip
wget https://osp-1257653870.cos.ap-guangzhou.myqcloud.com/WeBASE/releases/download/v1.5.3/webase-sign.zip
wget https://osp-1257653870.cos.ap-guangzhou.myqcloud.com/WeBASE/releases/download/v1.5.3/webase-node-mgr.zip
wget https://osp-1257653870.cos.ap-guangzhou.myqcloud.com/WeBASE/releases/download/v1.5.3/webase-web.zip
1.2.把下载的安装包上传到没有网络的服务器中
2.配置安装WeBASE-Sign
2.1.重点修改数据库相关配置,需要提前创建好数据库
[root@localhost webase-sign]
Enter password:
mysql> create database webasesign;
Query OK, 1 row affected (0.01 sec)
2.2.进入webase-sign的文件夹.修改conf/application.yml
server:
port: 5004
context-path: /WeBASE-Sign
spring:
datasource:
url: jdbc:mysql://127.0.0.1:3306/webasesign?serverTimezone=GMT%2B8&useUnicode=true&characterEncoding=utf8
username: dbUsername
password: dbPassword
driver-class-name: com.mysql.cj.jdbc.Driver
constant:
aesKey: EfdsW23D23d3df43
2.3.给运行权限,启动服务
[root@localhost webase-front]
[root@localhost webase-sign]
[root@localhost webase-sign]
===============================================================================================
Starting Server com.webank.webase.sign.Application Port 5004 ...PID(4175) [Starting]. Please check message through the log file (default path:./log/).
===============================================================================================
备注:服务进程起来后,需通过日志确认是否正常启动,出现以下内容表示正常;如果服务出现异常,确认修改配置后,重启提示服务进程在运行,则先执行stop.sh,再执行start.sh。
[root@localhost webase-sign]
2021-10-19 11:43:46.497 [main] INFO SimpleUrlHandlerMapping() - Mapped URL path [/**/favicon.ico] onto handler of type [class org.springframework.web.servlet.resource.ResourceHttpRequestHandler]
2021-10-19 11:43:46.986 [main] INFO AnnotationMBeanExporter() - Registering beans for JMX exposure on startup
2021-10-19 11:43:47.003 [main] INFO DefaultLifecycleProcessor() - Starting beans in phase 2147483647
2021-10-19 11:43:47.003 [main] INFO DocumentationPluginsBootstrapper() - Context refreshed
2021-10-19 11:43:47.063 [main] INFO DocumentationPluginsBootstrapper() - Found 1 custom documentation plugin(s)
2021-10-19 11:43:47.106 [main] INFO ApiListingReferenceScanner() - Scanning for api listing references
2021-10-19 11:43:47.431 [main] INFO ScheduledAnnotationBeanPostProcessor() - No TaskScheduler/ScheduledExecutorService bean found for scheduled processing
2021-10-19 11:43:47.546 [main] INFO TomcatEmbeddedServletContainer() - Tomcat started on port(s): 5004 (http)
2021-10-19 11:43:47.550 [main] INFO Application() - Started Application in 9.582 seconds (JVM running for 11.343)
2021-10-19 11:43:47.550 [main] INFO Application() - main run success...
查看日志
全量日志:tail -f log/WeBASE-Sign.log
错误日志:tail -f log/WeBASE-Sign-error.log
3.配置安装WeBASE-Front
注意: 将节点所在目录nodes/${ip}/sdk下的所有文件拷贝到当前conf目录,供SDK与节点建立连接时使用(SDK会自动判断是否为国密,且是否使用国密SSL)
- 链的sdk目录包含了ca.crt, sdk.crt, sdk.key和gm文件夹,gm文件夹包含了国密SSL所需的证书
- 拷贝命令可使用cp -r nodes/${ip}/sdk/* ./conf/
- 注,只有在建链时手动指定了-G(大写)时节点才会使用国密SSL
3.1.将节点所在目录nodes/${ip}/sdk下的所有文件拷贝到当前conf目录
3.2.如果在企业部署中使用WeBASE-Front,必须配置下文中的keyServer,用于连接WeBASE-Sign服务
修改前
version: v1.5.3
spring:
datasource:
url: jdbc:h2:file:../h2/webasefront;DB_CLOSE_ON_EXIT=FALSE
databaseName: db
driverClassName: org.h2.Driver
serverName:
username:
password:
jpa:
database-platform: org.hibernate.dialect.H2Dialect
database: H2
openInView: false
show_sql: false
generate-ddl: true
hibernate:
ddl-auto: update
naming-strategy: org.hibernate.cfg.EJB3NamingStrategy
session:
events:
log: false
properties:
hibernate.cache.use_query_cache: false
hibernate.generate_statistics: false
h2:
console:
enabled: true
path: /console
settings:
web-allow-others: false
trace: true
rabbitmq:
host: 127.0.0.1
port: 5672
username:
password:
virtual-host:
publisher-confirm: true
ssl:
enabled: false
http:
multipart:
max-request-size: 30MB
max-file-size: 20MB
server:
port: 5002
context-path: /WeBASE-Front
connection-timeout: 30000
tomcat:
max-threads: 200
max-connections: 10000
sdk:
corePoolSize: 50
maxPoolSize: 100
queueCapacity: 100
ip: 127.0.0.1
channelPort: 20200
certPath: conf
logging:
config: classpath:log4j2.xml
level:
com.webank.webase.front: info
constant:
keyServer: 127.0.0.1:5004
nodePath: /fisco/nodes/127.0.0.1/node0
aesKey: EfdsW23D23d3df43
transMaxWait: 30
monitorDisk: /
monitorEnabled: true
http_read_timeOut: 100000
http_connect_timeOut: 100000
eventRegisterTaskFixedDelay: 5000
syncEventMapTaskFixedDelay: 60000
syncStatLogTime: 5000
syncStatLogCountLimit: 10000
statLogEnabled: false
eventCallbackWait: 4
修改后:
version: v1.5.3
spring:
datasource:
url: jdbc:h2:file:../h2/webasefront;DB_CLOSE_ON_EXIT=FALSE
databaseName: db
driverClassName: org.h2.Driver
serverName:
username:
password:
jpa:
database-platform: org.hibernate.dialect.H2Dialect
database: H2
openInView: false
show_sql: false
generate-ddl: true
hibernate:
ddl-auto: update
naming-strategy: org.hibernate.cfg.EJB3NamingStrategy
session:
events:
log: false
properties:
hibernate.cache.use_query_cache: false
hibernate.generate_statistics: false
h2:
console:
enabled: true
path: /console
settings:
web-allow-others: false
trace: true
rabbitmq:
host: 127.0.0.1
port: 5672
username:
password:
virtual-host:
publisher-confirm: true
ssl:
enabled: false
http:
multipart:
max-request-size: 30MB
max-file-size: 20MB
server:
port: 5002
context-path: /WeBASE-Front
connection-timeout: 30000
tomcat:
max-threads: 200
max-connections: 10000
sdk:
corePoolSize: 50
maxPoolSize: 100
queueCapacity: 100
ip: 127.0.0.1
channelPort: 20200
certPath: conf
logging:
config: classpath:log4j2.xml
level:
com.webank.webase.front: info
constant:
keyServer: 127.0.0.1:5004
nodePath: /home/bcos/nodes/127.0.0.1/node0
aesKey: EfdsW23D23d3df43
transMaxWait: 30
monitorDisk: /
monitorEnabled: true
http_read_timeOut: 100000
http_connect_timeOut: 100000
eventRegisterTaskFixedDelay: 5000
syncEventMapTaskFixedDelay: 60000
syncStatLogTime: 5000
syncStatLogCountLimit: 10000
statLogEnabled: false
eventCallbackWait: 4
3.3.给运行权限,启动服务
// 给运行权限
[root@localhost webase-front]
// 启动服务
[root@localhost webase-front]
===============================================================================================
Server com.webank.webase.front.Application Port 5002 ...PID(3984) [Starting]. Please check message through the log file (default path:./log/).
===============================================================================================
3.4.测试
访问地址:http://192.168.119.132:5002/WeBASE-Front/#/home 能正常显示节点的数量说明服务正常
4.配置安装WeBASE-Node-Manager
4.1.进入数据库控制台创建webase-node-mgr的数据库
[root@localhost webase-front]
Enter password:
mysql> create database nodemgr;
Query OK, 1 row affected (0.01 sec)
4.2.修改/home/bcos/webase-node-mgr/script/webase.sh文件配置如下(重点改数据库链接配置):
#!/usr/bin/env bash
echo -e "\n init start...."
IP=${1}
PORT=${2}
if [[ ! $IP || ! $PORT ]] ; then
echo "Usage: sh ${0} ip port"
echo "eg: sh ${0} 127.0.0.1 8501"
exit 1
fi
DBUSER="defaultAccount"
PASSWD="defaultPassword"
DBNAME="webasenodemanager"
cat webase-sql.list | mysql --user=$DBUSER --password=$PASSWD --host=$IP --database=$DBNAME --port=$PORT --default-character-set=utf8;
if [ "$?" == "0" ]; then
echo -e "init success... \n"
else
echo -e "init fail... \n"
fi
exit
4.3.在/home/bcos/webase-node-mgr/script目录下给权限,并执行脚本导入数据库文件
[root@localhost webase-node-mgr]
[root@localhost script]
deploy upgrade webase-ddl.sql webase-dml.sql webase.sh webase-sql.list
[root@localhost script]
[root@localhost script]
init start....
mysql: [Warning] Using a password on the command line interface can be insecure.
init success...
[root@localhost script]
4.4.进入webase-node-mgr的文件夹.修改conf/application.yml(重点修改数据库连接配置和IP)
version: v1.5.3
server:
port: 5001
servlet:
context-path: /WeBASE-Node-Manager
mybatis:
configuration:
map-underscore-to-camel-case: true
typeAliasesPackage: com.webank.webase.node.mgr
mapperLocations: classpath:mapper/*.xml
spring:
datasource:
driver-class-name: com.mysql.cj.jdbc.Driver
url: jdbc:mysql://127.0.0.1:3306/nodemanagerdb?serverTimezone=GMT%2B8&useUnicode=true&characterEncoding=utf-8&zeroDateTimeBehavior=convertToNull
username: nodemanagerdb
password: irsHBjmMJ74W3ryk
initialSize: 10
minIdle: 5
maxActive: 30
aop:
proxy-target-class: true
logging:
config: classpath:log/log4j2.xml
level:
com.webank.webase.node.mgr: info
constant:
isUseSecurity: true
verificationCodeMaxAge: 300
enableVerificationCode: true
verificationCodeValue: "8888"
authTokenMaxAge: 3600
ignoreCheckFront: /account/login,/account/pictureCheckCode,/login,/user/privateKey,/front/new,/front/find,,/group/generate,/group/start
frontUrl: http://%1s:%2d/WeBASE-Front/%3s
httpTimeOut: 5000
contractDeployTimeOut: 30000
isPrivateKeyEncrypt: true
maxRequestFail: 3
sleepWhenHttpMaxFail: 60000
developerModeEnable: true
deployedModifyEnable: true
isDeleteInfo: true
transRetainMax: 10000
deleteInfoCron: "0 0/1 * * * ?"
statisticsTransDailyCron: "0 0/1 * * * ?"
resetGroupListCycle: 600000
groupInvalidGrayscaleValue: 1M
notSupportFrontIp:
appRequestTimeOut: 300000
appStatusCheckCycle: 3000
isBlockPullFromZero: false
pullBlockInitCnts: 1000
pullBlockSleepTime: 200
pullBlockTaskFixedDelay: 30000
blockRetainMax: 10000
transMonitorTaskFixedRate: 60000
analysisSleepTime: 200
monitorInfoRetainMax: 10000
isMonitorIgnoreUser: false
isMonitorIgnoreContract: false
monitorUnusualMaxCount: 20
auditMonitorTaskFixedDelay: 300000
nodeStatusMonitorTaskFixedDelay: 60000
certMonitorTaskFixedDelay: 300000
permitUrlArray: /account/login,/account/pictureCheckCode,/login,/user/privateKey/**,/config/encrypt,/config/version,/front/refresh,/api/*
resetGroupListInterval: 15000
statBlockRetainMax: 100000
statBlockFixedDelay: 10000
statBlockPageSize: 20
enableExternalFromBlock: true
deployType: 0
dockerRepository: "fiscoorg/fisco-webase"
webaseSignAddress: "127.0.0.1:5004"
execDockerCheckTimeout: 55000
execHostCheckTimeout: 55000
execHostCheckPortTimeout: 50000
execHostInitTimeout: 300000
execHostConfigTimeout: 40000
execBuildChainTimeout: 40000
dockerRestartPeriodTime: 30000
execShellTimeout: 600000
execScpTimeout: 10000
execAddNodeTimeout: 40000
sdk:
encryptType: 0
executor:
corePoolSize: 10
maxPoolSize: 20
queueSize: 50
threadNamePrefix: "node-mgr-async-"
scheduler:
poolSize: 30
threadNamePrefix: "node-mgr-task-"
awaitTerminationSeconds: 600
waitForTasksToCompleteOnShutdown: true
4.5.给运行权限,启动服务
[root@localhost webase-node-mgr]
[root@localhost webase-node-mgr]
===============================================================================================
Server com.webank.webase.node.mgr.Application Port 5001 ...PID(4353) [Starting]. Please message check through the log file (default path:./log/).
===============================================================================================
备注:服务进程起来后,需通过日志确认是否正常启动,出现以下内容表示正常;如果服务出现异常,确认修改配置后,重启提示服务进程在运行,则先执行stop.sh,再执行start.sh。
…
Application() - main run success.
查看日志
全量日志:tail -f log/WeBASE-Node-Manager.log
错误日志:tail -f log/WeBASE-Node-Manager-error.log
5.配置安装WeBASE-Web
5.1.WeBASE-Web是基于vue的web,所以只需配置nginx即可跑起来
PS: 因为我们的服务器已有nginx,可在原配置文件nginx.conf增加一个server:
upstream node_mgr_server{
server 192.168.119.132:5001; # 节点管理服务ip和端口
}
server {
listen 5000 default_server; # 前端端口(端口需要开通策略且不能被占用)
server_name 192.168.119.132; # 服务器ip,也可配置为域名
location / {
root /home/bcos/webase-web; # 前端文件路径(文件需要有权限访问)
index index.html index.htm;
try_files $uri $uri/ /index.html =404;
}
location /mgr {
proxy_pass http://node_mgr_server/;
proxy_set_header Host $host;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
}
}
5.2.重启nginx后,可以进行测试。
访问http://192.168.119.132:5000/#/home
默认用户名:admin 默认密码:Abcd1234 检查后发现正常,后续配置相关配置即可。本文重点是离线安装而不是配置,所以不做过多的演示! 有需要的可以参考官方的文档:https://webasedoc.readthedocs.io/zh_CN/latest/docs/WeBASE-Console-Suit/index.html#id16
总结
无网络离线安装部署FISCO BCOS 中间件webase平台,还是比较简单 ,大家可以安装教程一步一步的操作。希望可以帮助有需要的小伙伴快速入坑!
|