WeBASE一键部署

夏沫mds 2024-07-27 10:03:02 阅读 71

webase安装一键部署的前置

Ubuntu安装mysql数据库

以root用户执行命令!!!

现在5.6的可能安装不了,如果没有用root用户装可能识别不出环境

<code>apt-get install software-properties-common

sudo add-apt-repository 'deb http://archive.ubuntu.com/ubuntu trusty universe'

sudo apt-get update

sudo apt install mysql-server

sudo apt install mysql-client

apt-get install software-properties-common这个命令可能会出错

可以參考这位up提供的方法

在这里插入图片描述

Python部署

python版本要求使用python3.x, 推荐使用python3.6及以上版本

Ubuntu

<code>// 添加仓库,回车继续

sudo add-apt-repository ppa:deadsnakes/ppa

// 安装python 3.6

sudo apt-get install -y python3.6

sudo apt-get install -y python3-pip

检查Python

使用Python3.6或以上版本:

python--version

# python3时

python3--version

PyMySQL部署(Python3.6+)

Python3.6及以上版本,需安装 <span class="pre">PyMySQL</span>code>依赖包

CentOS

sudo yum -y install python36-pip

sudo pip3 install PyMyS

Ubuntu

sudo apt-get install -y python3-pip

sudo pip3 install PyMySQL

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

git clone https://github.com/PyMySQL/PyMySQL

cd PyMySQL/

python3 setup.py install

查找编辑mysql的配置文件

找/etc/mysql/mysqld.conf.d/

编辑里面的mysqld.cnf的配置文件里面的Basic Settings的最下面.

添加skip-grant-tables这行代码,

因为刚安装的mysql是没有密码的,编辑后重新启动mysql服务就可以设置密码了

在这里插入图片描述

在这里插入图片描述

在这里插入图片描述

2.重启mysql服务

<code>systemctl restart mysql

mysql -u root -p

#按enter进入,设置密码

update mysql.user set authentication string=" 123456" where user= 'root'code>

3.刷新权限

Flush privileges;

4.然后再去/etc/mysql/mysqld.conf.d/ ,找到mysqld.cnf,删除添加的skip-grant-tables代码

在这里插入图片描述

5.再次重启mysql服务

<code>systemctl restart mysql

6.创建一个mysql用户,用于webase使用

#创建名为 'test' 的用户,允许该用户从 'localhost' 主机登录,密码是 '123456'。

CREATE USER 'test'@'localhost' IDENTIFIED BY '123456';

#赋予用户 'test' 在所有数据库和所有表上的全部权限。

GRANT ALL PRIVILEGES ON *.* TO 'test'@'localhost';

#刷新权限,以确保对用户的更改立即生效

FLush privileges;

在这里插入图片描述

拉取部署脚本

获取部署安装包:

<code>wget https://osp-1257653870.cos.ap-guangzhou.myqcloud.com/WeBASE/releases/download/v1.5.5/webase-deploy.zip

unzipwebase-deploy.zip

进入目录:

cd webase-deploy

修改配置

① mysql数据库需提前安装,已安装直接配置即可,还未安装请参看数据库部署;

② 修改配置文件

vi common.prop

在这里插入图片描述

在这里插入图片描述

这里要改成你对应的mysql用户

部署

执行installAll命令,部署服务将自动部署FISCO BCOS节点,并部署 WeBASE 中间件服务,包括签名服务(sign)、节点前置(front)、节点管理服务(node-mgr)、节点管理前端(web

备注:

部署脚本会拉取相关安装包进行部署,需保持网络畅通首次部署需要下载编译包和初始化数据库,重复部署时可以根据提示不重复操作部署过程中出现报错时,可根据错误提示进行操作,或根据本文档中的常见问题进行排查不要用sudo执行脚本 ,例如sudo python3 deploy.py installAll(sudo会导致无法获取当前用户的环境变量如JAVA_HOME)

部署并启动所有服务

python3 deploy.py installAll

<code>部署完成后可以看到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

# 可视化部署

部署并启动可视化部署的所有服务 python3 deploy.py installWeBASE

停止可视化部署的所有服务 python3 deploy.py stopWeBASE

启动可视化部署的所有服务 python3 deploy.py startWeBASE

状态检查

成功部署后,可以根据以下步骤确认各个子服务是否启动成功

检查各子系统进程

通过ps命令,检查各子系统的进程是否存在

包含:节点进程nodeXX,节点前置进程webase.front,节点管理服务进程webase.node.mgr,节点管理平台webase-webnginx进程,以及签名服务进程webase.sign

检查方法如下,若无输出,则代表进程未启动,需要到该子系统的日志中检查日志错误信息,并根据错误提示或本文档的常见问题进行排查

检查节点进程,此处部署了两个节点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中配上自己的环境配置,操作步骤,错误现象,错误日志等信息,方便社区用户快速定位问题

访问

WeBASE管理平台:

一键部署完成后,打开浏览器(Chrome Safari或Firefox)访问

http://{deployIP}:{webPort}

示例:http://localhost:5000

备注:

部署服务器IP和管理平台服务端口需对应修改,网络策略需开通

使用云服务厂商的服务器时,需要开通网络安全组的对应端口。如开放webase使用的5000端口

WeBASE管理平台使用说明请查看

使用手册

(获取WeBASE管理平台默认账号和密码,并初始化系统配置)

默认账号为admin,默认密码为Abcd1234。首次登陆要求重置密码添加节点前置WeBASE-Front到WeBASE管理平台;一键部署时,节点前置与节点管理服务默认是同机部署,添加前置则填写IP为127.0.0.1,默认端口为5002。参考上文中common.properties的配置项front.port={frontPort}

检查节点前置是否启动,可以通过访问http://{frontIp}:{frontPort}/WeBASE-Front(默认端口5002);访问前,确保服务端已对本地机器开放端口,如开放front的5002端口。(不建议节点前置的端口对公网开放访问权限,应对部分机器IP按需开放)

部署常见问题

1. 网卡问题

因为每次重开虚拟机或者某种原因可能会导致ip的更换,所以得设定一个固定的ip

root@wyg-vi rtua 1 -machine:~# vim /etc/netp1an/01-network -manager-a11. yam1 ##打开网卡设置

请根据自己的IP设置

# Let NetworkManager manage all devices on this system

network:

version: 2

renderer: NetworkManager

ethernets:

ens33:

addresses:

- 192.168.52.132/24

gateway4: 192.168.52.1

nameservers:

addresses: [114.114.114.114]

dhcp4: no

netplan apply #重启网卡保存设置

注意空格和格式,输完不要留空

查看IP

方式一:ifconfig -a

首先需要安装net-tools工具,命令:sudo apt install net-tools ,否则会报错:

然后通过命令ifconfig查看就可以了

方式二:ip addr

查看的网关

查看默认的网关地址命令:route -n

查看DNS

下载sudo apt-get install dnsutils

查看DNS命令:nsloopup hcos

2.Ubnutu远程连接问题

远程连接软件连不上,可能是没有安装ssh服务

sudo apt-get install openssh-server

4.jdk问题

建议不要下官方的open的jdk,用oricle的

5.openssl问题

就是https的协议,搭建fisco平台的时候最好别用https,因为openssl对ubnutu版本有要求,问题很多

6. 换网导致的连接失败

当你修改了网卡之后,换了ip或者wlan可能会导致网段不同,然后连接失败,最好查看用ifconfig查看一下本机的ip地址,不是虚拟机的

常见问题

1. Python命令出错

SyntaxError报错

File "deploy.py", line 62

print helpMsg

^

SyntaxError: Missing parentheses in call to "print". Did you mean print(helpMsg)?

找不到fallback关键字

File "/home/ubuntu/webase-deploy/comm/utils.py", line 127, in getCommProperties

value = cf.get('common', paramsKey,fallback=None)

TypeError: get() got an unexpected keyword argument 'fallback'

答:检查Python版本,推荐使用python3.6及以上版本

2. 使用Python3时找不到pymysql

Traceback (most recent call last):

...

ImportError: No module named 'pymysql'

答:需要安装PyMySQL,安装请参看 pymysql

3. 部署时某个组件失败,重新部署提示端口被占用问题

答:因为有个别组件是启动成功的,需先执行“python deploy.py stopAll”将其停止,再执行“python deploy.py installAll”部署全部。

4. 管理平台启动时Nginx报错

...

============== WeBASE-Web start... ==============

Traceback (most recent call last):

...

Exception: execute cmd error ,cmd : sudo /usr/local/nginx/sbin/nginx -c /data/app/webase-deploy/comm/nginx.conf, status is 256 ,output is nginx: [emerg] open() "/etc/nginx/mime.types" failed (2: No such file or directory) in /data/app/webase-deploy/comm/nginx.conf:13

答:缺少/etc/nginx/mime.types文件,建议重装nginx。

5. 部署时数据库访问报错

...

checking database connection

Traceback (most recent call last):

File "/data/temp/webase-deploy/comm/mysql.py", line 21, in dbConnect

conn = mdb.connect(host=mysql_ip, port=mysql_port, user=mysql_user, passwd=mysql_password, charset='utf8')code>

File "/usr/lib64/python2.7/site-packages/MySQLdb/__init__.py", line 81, in Connect

return Connection(*args, **kwargs)

File "/usr/lib64/python2.7/site-packages/MySQLdb/connections.py", line 193, in __init__

super(Connection, self).__init__(*args, **kwargs2)

OperationalError: (1045, "Access denied for user 'root'@'localhost' (using password: YES)")

答:确认数据库用户名和密码

6. 节点sdk目录不存在

...

======= FISCO-BCOS sdk dir:/data/app/nodes/127.0.0.1/sdk is not exist. please check! =======

答:确认节点安装目录下有没有sdk目录(企业部署工具搭建的链可能没有),如果没有,需手动创建”mkdir sdk”,并将节点证书(ca.crt、sdk.key、sdk.crt、node.crt、node.key)复制到该sdk目录,再重新部署。如果是国密链,并且sdk和节点使用国密ssl连接时,需在sdk目录里创建gm目录,gm目录存放国密sdk证书(gmca.crt、gmsdk.crt、gmsdk.key、gmensdk.crt和gmensdk.key)。

7. 前置启动报错“nested exception is javax.net.ssl.SSLException”

...

nested exception is javax.net.ssl.SSLException: Failed to initialize the client-side SSLContext: Input stream not contain valid certificates.

答:CentOS的yum仓库的OpenJDK缺少JCE(Java Cryptography Extension),导致Web3SDK/Java-SDK无法正常连接区块链节点,因此在使用CentOS操作系统时,推荐使用OracleJDK。

8.前置启动报错“Processing bcos message timeout”

...

[main] ERROR SpringApplication() - Application startup failed

org.springframework.beans.factory.UnsatisfiedDependencyException: Error creating bean with name 'contractController': Unsatisfied dependency expressed through field 'contractService'; nested exception is org.springframework.beans.factory.UnsatisfiedDependencyException: Error creating bean with name 'contractService': Unsatisfied dependency expressed through field 'web3jMap'; nested exception is org.springframework.beans.factory.BeanCreationException: Error creating bean with name 'web3j' defined in class path resource [com/webank/webase/front/config/Web3Config.class]: Bean instantiation via factory method failed; nested exception is org.springframework.beans.BeanInstantiationException: Failed to instantiate [java.util.HashMap]: Factory method 'web3j' threw exception; nested exception is java.io.IOException: Processing bcos message timeout

...

答:一些OpenJDK版本缺少相关包,导致节点连接异常。推荐使用OracleJDK。

9. 服务进程起来了,服务不正常

...

======= WeBASE-Node-Manager starting . Please check through the log file (default path:./webase-node-mgr/log/). =======

答:查看日志,确认问题原因。确认后修改重启,如果重启提示服务进程在运行,先执行“python deploy.py stopAll”将其停止,再执行“python deploy.py startAll”重启。

10. WeBASE-Web登录页面的验证码加载不出来

答:检查WeBASE-Node-Manager后台服务是否已启动成功。若启动成功,检查后台日志:

进入 webase-node-mgr 目录下,执行 bash status.sh 检查服务是否启动,如果服务没有启动,运行 bash start.sh 启动服务;

如果服务已经启动,按照如下修改日志级别

webase-node-mgr/conf/application.yml

#log config

logging:

level:

com.webank.webase.node.mgr: debug

webase-node-mgr/conf/log/log4j2.xml

<Loggers>

<Root level="debug">code>

<AppenderRef ref="asyncInfo"/>code>

<AppenderRef ref="asyncErrorLog"/>code>

</Root>

</Loggers>

修改日志level后,重启服务 bash stop.sh && bash start.sh

重启服务后,检查日志文件 log/WeBASE-Node-Manager.log

检查是否有异常信息。如果有异常信息,根据具体的异常信息检查环境配置,或者通过搜索引擎进行排查。



声明

本文内容仅代表作者观点,或转载于其他网站,本站不以此文作为商业用途
如有涉及侵权,请联系本站进行删除
转载本站原创文章,请注明来源及作者。