当前位置:首页 » 《随便一记》 » 正文

一键部署webase全家桶(包含基本的异常分享)

23 人参与  2024年04月30日 15:30  分类 : 《随便一记》  评论

点击全文阅读


本教程来源于官方文档: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)。其中,节点的搭建是可选的,可以通过配置来选择使用已有链或者搭建新链    架构如下:

 

前提条件

环境版本
JavaOracle JDK 8 至 14
MySQLMySQL-5.6及以上
PythonPython3.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-pipsudo pip3 install PyMySQL

不支持pip命令的话,可以使用以下方式:

git clone https://github.com/PyMySQL/PyMySQLcd 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_TABLESssl=0default_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 -pEnter 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.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检查日志文件,以此判断服务是否正常运行

查看运行成功日志:WeBASE子服务运行成功后均会打印日志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}

大致页面:


点击全文阅读


本文链接:http://zhangshiyu.com/post/102447.html

<< 上一篇 下一篇 >>

  • 评论(0)
  • 赞助本站

◎欢迎参与讨论,请在这里发表您的看法、交流您的观点。

关于我们 | 我要投稿 | 免责申明

Copyright © 2020-2022 ZhangShiYu.com Rights Reserved.豫ICP备2022013469号-1