一键部署webase全家桶(包含基本的异常分享)
时间:2024-04-13 11:40:39 来源:网络cs 作者:欧阳逸 栏目:卖家故事 阅读:
本教程来源于官方文档: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)。其中,节点的搭建是可选的,可以通过配置来选择使用已有链或者搭建新链 架构如下:
%20
%20
前提条件
%20环境 | 版本 |
---|---|
Java | Oracle%20JDK%208%20至%2014 |
MySQL | MySQL-5.6及以上 |
Python | Python3.6及以上 |
PyMySQL |
环境推荐使用Ubuntu18及以上22以下的
%20检查Java
%20推荐JDK8-JDK13版本,使用OracleJDK安装指引:
%20java%20-version
%20注意:不要用sudo
执行安装脚本
检查mysql
%20MySQL-5.6或以上版本:
%20mysql%20--version
%20Mysql安装部署可参考数据库部署%20检查Python
%20使用Python3.6或以上版本:
%20python%20--version#%20python3时python3%20--version
%20如已安装python3,也可通过python3 --version
查看,在运行脚本时,使用python3
命令即可
PyMySQL部署(Python3.6+)
%20Python3.6及以上版本,需安装PyMySQL
依赖包
Ubuntu
%20sudo%20apt-get%20install%20-y%20python3-pipsudo%20pip3%20install%20PyMySQL
%20%20若不支持pip命令的话,可以使用以下方式:
%20git%20clone%20https://github.com/PyMySQL/PyMySQLcd%20PyMySQL/python3%20setup.py%20install
%20检查服务器网络策略
%20网络策略检查:
%20开放WeBASE管理平台端口:检查webase-web管理平台页面的端口webPort
(默认为5000)在服务器的网络安全组中是否设置为开放。如,云服务厂商如腾讯云,查看安全组设置,为webase-web开放5000端口。若端口未开放,将导致浏览器无法访问WeBASE服务页面开放节点前置端口:如果希望通过浏览器直接访问webase-front节点前置的页面,则需要开放节点前置端口frontPort
(默认5002);由于节点前置直连节点,不建议对公网开放节点前置端口,建议按需开放%20%20%20%20此教程建议使用自己的本地节点而不依赖于webse一键部署时生成的节点
%20%20可以在本地新建一个单机的两节点的链,不过是后期需要在common.properties文件里去修改相应的配置
%20%20还不会建链的可以找个18楼重开了
%20
部署之前的准备工作:(本教程是专为Ubuntu22.04写的)
%20Ubuntu22.04的mysql版本通常/只能为MySQL8,在新版的MySQL8里对身份验证做了更严格的要求
%20使用了caching_sha2_password
身份验证插件,而不是之前的mysql_native_password
。这种更强大的加密插件提供了更高级别的安全性,但也可能需要一些客户端和应用程序的调整。
我们这里在安装完数据库之后要进行这样的设置:
%201.修改相关配置文件
%20在/etc/mysql/my.cnf
配置文件的[mysqld]
部分添加如下配置:
如若没有则自行添加 [mysqld]
%20sql_mode%20=STRICT_TRANS_TABLESssl=0default_authentication_plugin%20=%20mysql_native_password
%202.登陆数据库
%20通常在你们第一次在环境里安装MySQL后需要使用root的身份才可以进MySQL:
%20sudo%20mysql%20-uroot%20-p
%20格式是:mysql%20 -u【选项/参数】(用户名) -p%20【选项/参数】(密码)
%20这种情况不用输入密码,按下回车后命令行会提示你需要你输入密码(Enter%20password:)
%20xxx@xxxx-xxxx-xxxxx:/fisco/webase-deploy$%20sudo%20mysql%20-uroot%20-pEnter%20password:
%20因为我们这里使用了sudo(不知道sudo的用法及含义的可以重开重修了),所以无需输入密码,直接敲回车即可 :如图所示,我们进入到了mysql里了
%203.进行设置密码和权限的操作
输入命令:
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.5webase.mgr.version=v1.5.5webase.sign.version=v1.5.5webase.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-signdocker.mysql=1# if [docker.mysql=1], mysql run in host (only works in [installDockerAll])# run mysql 5.6 by dockerdocker.mysql.port=23306# default user [root]docker.mysql.password=123456####################################################################### 不使用Docker启动Mysql,则需要配置以下值# 节点管理子系统mysql数据库配置mysql.ip=127.0.0.1mysql.port=3306mysql.user=rootmysql.password=123456mysql.database=webasenodemanager# 签名服务子系统mysql数据库配置sign.mysql.ip=localhostsign.mysql.port=3306sign.mysql.user=rootsign.mysql.password=123456sign.mysql.database=webasesign# 节点前置子系统h2数据库名和所属机构front.h2.name=webasefrontfront.org=fisco# WeBASE管理平台服务端口web.port=5000# 启用移动端管理平台 (0: disable, 1: enable)web.h5.enable=1# 节点管理子系统服务端口mgr.port=5001# 节点前置子系统端口front.port=5002# 签名服务子系统端口sign.port=5004# 节点监听Ipnode.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)# 只有国密链才能使用国密SSLencrypt.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.iniroot 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
检查日志文件,以此判断服务是否正常运行
main run success
,可以通过搜索此关键字来确认服务正常运行。 如,检查webase-front日志,其他WeBASE服务可进行类似操作
cd webase-frontgrep -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 processing2020-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-frontgrep "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管理平台:
一键部署完成后,打开浏览器(Chrome Safari或Firefox)访问http://{deployIP}:{webPort}示例:http://localhost:5000
备注:
WeBASE管理平台使用说明请查看使用手册(获取WeBASE管理平台默认账号和密码,并初始化系统配置) 默认账号为admin
,默认密码为Abcd1234
。首次登陆要求重置密码添加节点前置WeBASE-Front到WeBASE管理平台;一键部署时,节点前置与节点管理服务默认是同机部署,添加前置则填写IP为127.0.0.1
,默认端口为5002
。参考上文中common.properties
的配置项front.port={frontPort}
大致页面:
阅读本书更多章节>>>>
本文链接:https://www.kjpai.cn/gushi/2024-04-13/158008.html,文章来源:网络cs,作者:欧阳逸,版权归作者所有,如需转载请注明来源和作者,否则将追究法律责任!