本教程来源于官方文档:https://webasedoc.readthedocs.io/zh-cn/latest/docs/WeBASE/install.html
一键部署可以在 同机 快速搭建WeBASE管理台环境,方便用户快速体验WeBASE管理平台。
一键部署会搭建:节点(FISCO-BCOS 2.0+)、管理平台(WeBASE-Web)、节点管理子系统(WeBASE-Node-Manager)、节点前置子系统(WeBASE-Front)、签名服务(WeBASE- Sign)。其中,节点的搭建是可选的,可以通过配置来选择使用已有链或者搭建新链 架构如下:
前提条件
环境 | 版本 |
---|---|
Java | Oracle JDK 8 至 14 |
MySQL | MySQL-5.6及以上 |
Python | Python3.6及以上 |
PyMySQL |
环境推荐使用Ubuntu18及以上22以下的
检查Java
推荐JDK8-JDK13版本,使用OracleJDK安装指引:
java -version
注意:不要用sudo
执行安装脚本
检查mysql
MySQL-5.6或以上版本:
mysql --version
- Mysql安装部署可参考数据库部署
检查Python
使用Python3.6或以上版本:
python --version
# python3时
python3 --version
如已安装python3,也可通过python3 --version
查看,在运行脚本时,使用python3
命令即可
- Python3安装部署可参考Python部署
PyMySQL部署(Python3.6+)
Python3.6及以上版本,需安装PyMySQL
依赖包
-
Ubuntu
sudo apt-get install -y python3-pip sudo pip3 install PyMySQL
若不支持pip命令的话,可以使用以下方式:
git clone https://github.com/PyMySQL/PyMySQL
cd PyMySQL/
python3 setup.py install
检查服务器网络策略
网络策略检查:
-
开放WeBASE管理平台端口:检查webase-web管理平台页面的端口
webPort
(默认为5000)在服务器的网络安全组中是否设置为开放。如,云服务厂商如腾讯云,查看安全组设置,为webase-web开放5000端口。若端口未开放,将导致浏览器无法访问WeBASE服务页面 - 开放节点前置端口:如果希望通过浏览器直接访问webase-front节点前置的页面,则需要开放节点前置端口
frontPort
(默认5002);由于节点前置直连节点,不建议对公网开放节点前置端口,建议按需开放
此教程建议使用自己的本地节点而不依赖于webse一键部署时生成的节点
可以在本地新建一个单机的两节点的链,不过是后期需要在common.properties文件里去修改相应的配置
还不会建链的可以找个18楼重开了
部署之前的准备工作:(本教程是专为Ubuntu22.04写的)
Ubuntu22.04的mysql版本通常/只能为MySQL8,在新版的MySQL8里对身份验证做了更严格的要求
使用了caching_sha2_password
身份验证插件,而不是之前的mysql_native_password
。这种更强大的加密插件提供了更高级别的安全性,但也可能需要一些客户端和应用程序的调整。
我们这里在安装完数据库之后要进行这样的设置:
1.修改相关配置文件
在/etc/mysql/my.cnf
配置文件的[mysqld]
部分添加如下配置:
如若没有则自行添加 [mysqld]
sql_mode =STRICT_TRANS_TABLES
ssl=0
default_authentication_plugin = mysql_native_password
2.登陆数据库
通常在你们第一次在环境里安装MySQL后需要使用root的身份才可以进MySQL:
sudo mysql -uroot -p
格式是:mysql -u【选项/参数】(用户名) -p 【选项/参数】(密码)
这种情况不用输入密码,按下回车后命令行会提示你需要你输入密码(Enter password:)
xxx@xxxx-xxxx-xxxxx:/fisco/webase-deploy$ sudo mysql -uroot -p
Enter password:
因为我们这里使用了sudo(不知道sudo的用法及含义的可以重开重修了),所以无需输入密码,直接敲回车即可 :如图所示,我们进入到了mysql里了
3.进行设置密码和权限的操作
输入命令:
ALTER USER 'root'@'localhost' IDENTIFIED WITH mysql_native_password BY '123456';
该命令用于修改‘root’用户在‘localhost’这个主机上的密码为:123456
并且使用身份校验更宽松的插件:mysql_native_password
刷新权限:
FLUSH PRIVILEGES;
该命令用于在更改权限或添加用户等操作时使其刷新生效
拉取部署脚本
获取部署安装包:
wget https://osp-1257653870.cos.ap-guangzhou.myqcloud.com/WeBASE/releases/download/v1.5.5/webase-deploy.zip
解压安装包:
unzip webase-deploy.zip
进入目录:
cd webase-deploy
修改配置
① mysql数据库需提前安装,已安装直接配置即可,还未安装请参看数据库部署;
② 修改配置文件(vi common.properties
);
- 若使用可视化部署,则忽略下文,将修改
visual-deploy.properties
,并进行可视化部署依赖服务的一键安装,具体请参考可视化部署-一键安装依赖服务
③ 一键部署支持使用已有链或者搭建新链。通过参数”if.exist.fisco”配置是否使用已有链,以下配置二选一即可:
- 当配置”yes”时,需配置已有链的路径
fisco.dir
。路径下要存在sdk目录,sdk目录中包含ca.crt, sdk.crt, sdk.key及gm目录,gm目录中包含国密SSL所需证书,包含gmca.crt、gmsdk.crt、gmsdk.key、gmensdk.crt和gmensdk.key - 当配置”no”时,需配置节点fisco版本和节点安装个数,搭建的新链默认两个群组
如果不使用一键部署搭建新链,可以参考FISCO BCOS官方文档搭建 FISCO BCOS部署流程;
注:使用国密版需要修改设置配置项encrypt.type=1
。前置SDK与节点默认使用非国密SSL,如果需要使用国密SSL,需要修改设置配置项encrypt.sslType=1
④ 服务端口不能小于1024
⑤ 部署时,修改 common.properties
配置文件
# WeBASE子系统的最新版本(v1.1.0或以上版本)
webase.web.version=v1.5.5
webase.mgr.version=v1.5.5
webase.sign.version=v1.5.5
webase.front.version=v1.5.5
#####################################################################
## 使用Docker启用Mysql服务,则需要配置以下值
# 1: enable mysql in docker
# 0: mysql run in host, required fill in the configuration of webase-node-mgr and webase-sign
docker.mysql=1
# if [docker.mysql=1], mysql run in host (only works in [installDockerAll])
# run mysql 5.6 by docker
docker.mysql.port=23306
# default user [root]
docker.mysql.password=123456
#####################################################################
## 不使用Docker启动Mysql,则需要配置以下值
# 节点管理子系统mysql数据库配置
mysql.ip=127.0.0.1
mysql.port=3306
mysql.user=root
mysql.password=123456
mysql.database=webasenodemanager
# 签名服务子系统mysql数据库配置
sign.mysql.ip=localhost
sign.mysql.port=3306
sign.mysql.user=root
sign.mysql.password=123456
sign.mysql.database=webasesign
# 节点前置子系统h2数据库名和所属机构
front.h2.name=webasefront
front.org=fisco
# WeBASE管理平台服务端口
web.port=5000
# 启用移动端管理平台 (0: disable, 1: enable)
web.h5.enable=1
# 节点管理子系统服务端口
mgr.port=5001
# 节点前置子系统端口
front.port=5002
# 签名服务子系统端口
sign.port=5004
# 节点监听Ip
node.listenIp=127.0.0.1
# 节点p2p端口
node.p2pPort=30300
# 节点链上链下端口
node.channelPort=20200
# 节点rpc端口
node.rpcPort=8545
# 加密类型 (0: ECDSA算法, 1: 国密算法)
encrypt.type=0
# SSL连接加密类型 (0: ECDSA SSL, 1: 国密SSL)
# 只有国密链才能使用国密SSL
encrypt.sslType=0
# 是否使用已有的链(yes/no)
if.exist.fisco=yes
# 使用已有链时需配置
# 已有链的路径,start_all.sh脚本所在路径
# 路径下要存在sdk目录(sdk目录中包含了SSL所需的证书,即ca.crt、sdk.crt、sdk.key和gm目录(包含国密SSL证书,gmca.crt、gmsdk.crt、gmsdk.key、gmensdk.crt和gmensdk.key)
fisco.dir=/data/app/nodes/127.0.0.1
# 前置所连接节点,在127.0.0.1目录中的节点中的一个
# 节点路径下要存在conf文件夹,conf里存放节点证书(ca.crt、node.crt和node.key)
node.dir=node0
一键部署
执行installAll命令,部署服务将自动部署FISCO BCOS节点
并部署 WeBASE 中间件服务,
包括:
签名服务(sign)
节点前置(front)
节点管理服务(node-mgr)
节点管理前端(web)
备注:
- 部署脚本会拉取相关安装包进行部署,需保持网络畅通
- 首次部署需要下载编译包和初始化数据库,重复部署时可以根据提示不重复操作
- 部署过程中出现报错时,可根据错误提示进行操作,或根据本文档中的常见问题进行排查
-
不要用sudo执行脚本,例如
sudo python3 deploy.py installAll
(sudo会导致无法获取当前用户的环境变量如JAVA_HOME)
# 部署并启动所有服务
python3 deploy.py installAll
部署完成后可以看到deploy has completed
的日志:
python3 deploy.py installAll
...
============================================================
_ _ ______ ___ _____ _____
| | | | | ___ \/ _ \/ ___| ___|
| | | | ___| |_/ / /_\ \ `--.| |__
| |/\| |/ _ | ___ | _ |`--. | __|
\ /\ | __| |_/ | | | /\__/ | |___
\/ \/ \___\____/\_| |_\____/\____/
...
...
============================================================
============== deploy has completed ==============
============================================================
============== webase-web version v1.5.5 ========
============== webase-node-mgr version v1.5.5 ========
============== webase-sign version v1.5.3 ========
============== webase-front version v1.5.5 ========
============================================================
- 服务部署后,需要对各服务进行启停操作,可以使用以下命令:
# 一键部署 部署并启动所有服务 python3 deploy.py installAll 停止一键部署的所有服务 python3 deploy.py stopAll 启动一键部署的所有服务 python3 deploy.py startAll # 各子服务启停 启动FISCO-BCOS节点: python3 deploy.py startNode 停止FISCO-BCOS节点: python3 deploy.py stopNode 启动WeBASE-Web: python3 deploy.py startWeb 停止WeBASE-Web: python3 deploy.py stopWeb 启动WeBASE-Node-Manager: python3 deploy.py startManager 停止WeBASE-Node-Manager: python3 deploy.py stopManager 启动WeBASE-Sign: python3 deploy.py startSign 停止WeBASE-Sign: python3 deploy.py stopSign 启动WeBASE-Front: python3 deploy.py startFront 停止WeBASE-Front: python3 deploy.py stopFront # 可视化部署 (注:这里我们是一键部署而不是可视化部署,可视化部署是另一种部署webase服务的方式) 部署并启动可视化部署的所有服务 python3 deploy.py installWeBASE 停止可视化部署的所有服务 python3 deploy.py stopWeBASE 启动可视化部署的所有服务 python3 deploy.py startWeBASE
状态检查
成功部署后,可以根据以下步骤确认各个子服务是否启动成功
检查各子系统进程
通过ps
命令,检查各子系统的进程是否存在
检查节点进程,此处我们部署了两个节点node0, node1
ps -ef | grep node
输出如下
root 29977 1 1 17:24 pts/2 00:02:20 /root/fisco/webase/webase-deploy/nodes/127.0.0.1/node1/../fisco-bcos -c config.ini
root 29979 1 1 17:24 pts/2 00:02:23 /root/fisco/webase/webase-deploy/nodes/127.0.0.1/node0/../fisco-bcos -c config.ini
- 检查节点前置webase-front的进程
ps -ef | grep webase.front
输出如下
root 31805 1 0 17:24 pts/2 00:01:30 /usr/local/jdk/bin/java -Djdk.tls.namedGroups=secp256k1 ... conf/:apps/*:lib/* com.webank.webase.front.Application
- 检查节点管理服务webase-node-manager的进程
ps -ef | grep webase.node.mgr
输出如下
root 4696 1 0 17:26 pts/2 00:00:40 /usr/local/jdk/bin/java -Djdk.tls.namedGroups=secp256k1 ... conf/:apps/*:lib/* com.webank.webase.node.mgr.Application
- 检查webase-web对应的nginx进程
ps -ef | grep nginx
输出如下
root 5141 1 0 Dec08 ? 00:00:00 nginx: master process /usr/sbin/nginx -c /root/fisco/webase/webase-deploy/comm/nginx.conf
- 检查签名服务webase-sign的进程
ps -ef | grep webase.sign
输出如下
root 30718 1 0 17:24 pts/2 00:00:19 /usr/local/jdk/bin/java ... conf/:apps/*:lib/* com.webank.webase.sign.Application
检查进程端口
通过netstat
命令,检查各子系统进程的端口监听情况。
检查方法如下,若无输出,则代表进程端口监听异常,需要到该子系统的日志中检查日志错误信息,并根据错误提示或本文档的常见问题进行排查
- 检查节点channel端口(默认为20200)是否已监听
netstat -anlp | grep 20200
输出如下
tcp 0 0 0.0.0.0:20200 0.0.0.0:* LISTEN 29069/fisco-bcos
- 检查webase-front端口(默认为5002)是否已监听
netstat -anlp | grep 5002
输出如下
tcp6 0 0 :::5002 :::* LISTEN 2909/java
- 检查webase-node-mgr端口(默认为5001)是否已监听
$ netstat -anlp | grep 5001
输出如下
tcp6 0 0 :::5001 :::* LISTEN 14049/java
- 检查webase-web端口(默认为5000)在nginx是否已监听
$ netstat -anlp | grep 5000
输出如下
tcp 0 0 0.0.0.0:5000 0.0.0.0:* LISTEN 3498/nginx: master
- 检查webase-sign端口(默认为5004)是否已监听
$ netstat -anlp | grep 5004
输出如下
tcp6 0 0 :::5004 :::* LISTEN 25271/java
检查服务日志
各子服务的日志路径如下:
|-- webase-deploy # 一键部署目录 |--|-- log # 部署日志目录 |--|-- webase-web # 管理平台目录 |--|--|-- log # 管理平台日志目录 |--|-- webase-node-mgr # 节点管理服务目录 |--|--|-- log # 节点管理服务日志目录 |--|-- webase-sign # 签名服务目录 |--|--|-- log # 签名服务日志目录 |--|-- webase-front # 节点前置服务目录 |--|--|-- log # 节点前置服务日志目录 |--|-- nodes # 一件部署搭链节点目录 |--|--|-- 127.0.0.1 |--|--|--|-- node0 # 具体节点目录 |--|--|--|--|-- log # 节点日志目录
备注:当前节点日志路径为一键部署搭链的路径,使用已有链请在相关路径查看日志
日志目录中包含{XXX}.log
全量日志文件和{XXX}-error.log
错误日志文件
-
通过日志定位错误问题时,可以结合
.log
全量日志和-error.log
错误日志两种日志信息进行排查。,如查询WeBASE-Front日志,则打开WeBASE-Front-error.log
可以快速找到错误信息,根据错误查看WeBASE-Front.log
的相关内容,可以看到错误日志前后的普通日志信息
检查服务日志有无错误信息
- 如果各个子服务的进程已启用且端口已监听,可直接访问下一章节访问WeBASE
- 如果上述检查步骤出现异常,如检查不到进程或端口监听,则需要按日志路径进入异常子服务的日志目录,检查该服务的日志
- 如果检查步骤均无异常,但服务仍无法访问,可以分别检查部署日志
deployLog
,节点前置日志frontLog
, 节点管理服务日志nodeMgrLog
进行排查:- 检查webase-deploy/log中的部署日志,是否在部署时出现错误
- 检查webase-deploy/webase-front/log中的节点前置日志,如果最后出现
application run success
字样则代表运行成功 - 检查webase-deploy/webase-node-mgr/log或webase-deploy/webase-sign/log中的日志
- 检查webase-deploy/nodes/127.0.0.1/nodeXXX/log中的节点日志
搜索日志
通过查看日志可以检查服务的运行状态,我们可以进入各子服务的日志路径,通过grep
检查日志文件,以此判断服务是否正常运行
-
查看运行成功日志:WeBASE子服务运行成功后均会打印日志
main run success
,可以通过搜索此关键字来确认服务正常运行。
如,检查webase-front日志,其他WeBASE服务可进行类似操作
cd webase-front
grep -B 3 "main run success" log/WeBASE-Front.log
输出如下:
2020-12-09 15:47:25.355 [main] INFO ScheduledAnnotationBeanPostProcessor() - No TaskScheduler/ScheduledExecutorService bean found for scheduled processing 2020-12-09 15:47:25.378 [main] INFO TomcatEmbeddedServletContainer() - Tomcat started on port(s): 5002 (http) 2020-12-09 15:47:25.383 [main] INFO Application() - Started Application in 6.983 seconds (JVM running for 7.768) 2020-12-09 15:47:25.383 [main] INFO Application() - main run success...
-
查看报错日志:出现异常时,可以搜索关键字
ERROR
进行检查
如,检查webase-front错误日志,其他WeBASE服务可进行类似操作
cd webase-front
grep "ERROR" log/WeBASE-Front.log
输出如下
2020-12-09 09:10:42.138 [http-nio-5002-exec-1] ERROR ExceptionsHandler() - catch frontException: no active connection available network exception requset send failed! please check the log file content for reasons. 2020-12-09 09:10:42.145 [http-nio-5002-exec-4] ERROR Web3ApiService() - getBlockNumber fail.
如果出现错误日志,根据错误提示或本文档的常见问题进行排查
启动失败或无法使用时,到WeBASE提交Issue或到技术社区共同探讨。
- 提交Issue或讨论问题时,可以在issue中配上自己的环境配置,操作步骤,错误现象,错误日志等信息,方便社区用户快速定位问题
异常分享
如果遇到子服务node-maneger,起不起来的情况,可以尝试使用该方法;
在webase-sign/conf/application.yml文件中做如下修改:@寻于乱世
访问
WeBASE管理平台:文章来源:https://www.toymoban.com/news/detail-857493.html
- 一键部署完成后,打开浏览器(Chrome Safari或Firefox)访问
http://{deployIP}:{webPort} 示例:http://localhost:5000
备注:文章来源地址https://www.toymoban.com/news/detail-857493.html
- WeBASE管理平台使用说明请查看使用手册(获取WeBASE管理平台默认账号和密码,并初始化系统配置)
- 默认账号为
admin
,默认密码为Abcd1234
。首次登陆要求重置密码 - 添加节点前置WeBASE-Front到WeBASE管理平台;一键部署时,节点前置与节点管理服务默认是同机部署,添加前置则填写IP为
127.0.0.1
,默认端口为5002
。参考上文中common.properties
的配置项front.port={frontPort}
- 默认账号为
大致页面:
到了这里,关于一键部署webase全家桶(包含基本的异常分享)的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!