一键部署

​ 一键部署可以在 同机 快速搭建WeBASE管理台环境,方便用户快速体验WeBASE管理平台。

​ 一键部署会搭建:节点(FISCO-BCOS 2.0+)、管理平台(WeBASE-Web)、节点管理子系统(WeBASE-Node-Manager)、节点前置子系统(WeBASE-Front)、签名服务(WeBASE-Sign)。其中,节点的搭建是可选的,可以通过配置来选择使用已有链或者搭建新链。一键部署架构如下:

  • WeBASE lab版本已适配FISCO-BCOS 3.0.0版本,相关文档与代码仓库可跳转至 WeBASE-lab分支查看

一键部署 - 图1

前提条件

环境版本
JavaOracle JDK 8 至 14
MySQLMySQL-5.6及以上
PythonPython3.6及以上
PyMySQL

检查环境

平台要求

推荐使用CentOS 7.2+, Ubuntu 16.04及以上版本, 一键部署脚本将自动安装openssl, curl, wget, git, nginx, dos2unix相关依赖项。

其余系统可能导致安装依赖失败,可自行安装openssl, curl, wget, git, nginx, dos2unix依赖项后重试

若使用Docker模式一键部署,可只安装Docker、Docker-Compose,无需配置Mysql与Java环境

检查Java

推荐JDK8-JDK13版本,使用OracleJDK安装指引

  1. java -version

注意:不要用sudo执行安装脚本

检查mysql

MySQL-5.6或以上版本:

  1. mysql --version

检查Python

使用Python3.6或以上版本:

  1. python --version
  2. # python3时
  3. python3 --version

如已安装python3,也可通过python3 --version查看,在运行脚本时,使用python3命令即可

PyMySQL部署(Python3.6+)

Python3.6及以上版本,需安装PyMySQL依赖包

  • CentOS

    1. sudo yum -y install python36-pip
    2. sudo pip3 install PyMySQL
  • Ubuntu

    1. sudo apt-get install -y python3-pip
    2. sudo pip3 install PyMySQL

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

  1. git clone https://github.com/PyMySQL/PyMySQL
  2. cd PyMySQL/
  3. python3 setup.py install

检查服务器网络策略

网络策略检查:

  • 开放WeBASE管理平台端口:检查webase-web管理平台页面的端口webPort(默认为5000)在服务器的网络安全组中是否设置为开放。如,云服务厂商如腾讯云,查看安全组设置,为webase-web开放5000端口。若端口未开放,将导致浏览器无法访问WeBASE服务页面
  • 开放节点前置端口:如果希望通过浏览器直接访问webase-front节点前置的页面,则需要开放节点前置端口frontPort(默认5002);由于节点前置直连节点,不建议对公网开放节点前置端口,建议按需开放

拉取部署脚本

获取部署安装包:

  1. wget https://osp-1257653870.cos.ap-guangzhou.myqcloud.com/WeBASE/releases/download/v1.5.4/webase-deploy.zip

解压安装包:

  1. unzip webase-deploy.zip

进入目录:

  1. cd webase-deploy

修改配置

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

② 修改配置文件(vi common.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 配置文件

  1. # WeBASE子系统的最新版本(v1.1.0或以上版本)
  2. webase.web.version=v1.5.4
  3. webase.mgr.version=v1.5.4
  4. webase.sign.version=v1.5.3
  5. webase.front.version=v1.5.4
  6. #####################################################################
  7. ## 使用Docker启用Mysql服务,则需要配置以下值
  8. # 1: enable mysql in docker
  9. # 0: mysql run in host, required fill in the configuration of webase-node-mgr and webase-sign
  10. docker.mysql=1
  11. # if [docker.mysql=1], mysql run in host (only works in [installDockerAll])
  12. # run mysql 5.6 by docker
  13. docker.mysql.port=23306
  14. # default user [root]
  15. docker.mysql.password=123456
  16. #####################################################################
  17. ## 不使用Docker启动Mysql,则需要配置以下值
  18. # 节点管理子系统mysql数据库配置
  19. mysql.ip=127.0.0.1
  20. mysql.port=3306
  21. mysql.user=dbUsername
  22. mysql.password=dbPassword
  23. mysql.database=webasenodemanager
  24. # 签名服务子系统mysql数据库配置
  25. sign.mysql.ip=localhost
  26. sign.mysql.port=3306
  27. sign.mysql.user=dbUsername
  28. sign.mysql.password=dbPassword
  29. sign.mysql.database=webasesign
  30. # 节点前置子系统h2数据库名和所属机构
  31. front.h2.name=webasefront
  32. front.org=fisco
  33. # WeBASE管理平台服务端口
  34. web.port=5000
  35. # 启用移动端管理平台 (0: disable, 1: enable)
  36. web.h5.enable=1
  37. # 节点管理子系统服务端口
  38. mgr.port=5001
  39. # 节点前置子系统端口
  40. front.port=5002
  41. # 签名服务子系统端口
  42. sign.port=5004
  43. # 节点监听Ip
  44. node.listenIp=127.0.0.1
  45. # 节点p2p端口
  46. node.p2pPort=30300
  47. # 节点链上链下端口
  48. node.channelPort=20200
  49. # 节点rpc端口
  50. node.rpcPort=8545
  51. # 加密类型 (0: ECDSA算法, 1: 国密算法)
  52. encrypt.type=0
  53. # SSL连接加密类型 (0: ECDSA SSL, 1: 国密SSL)
  54. # 只有国密链才能使用国密SSL
  55. encrypt.sslType=0
  56. # 是否使用已有的链(yes/no)
  57. if.exist.fisco=no
  58. # 使用已有链时需配置
  59. # 已有链的路径,start_all.sh脚本所在路径
  60. # 路径下要存在sdk目录(sdk目录中包含了SSL所需的证书,即ca.crt、sdk.crt、sdk.key和gm目录(包含国密SSL证书,gmca.crt、gmsdk.crt、gmsdk.key、gmensdk.crt和gmensdk.key)
  61. fisco.dir=/data/app/nodes/127.0.0.1
  62. # 前置所连接节点,在127.0.0.1目录中的节点中的一个
  63. # 节点路径下要存在conf文件夹,conf里存放节点证书(ca.crt、node.crt和node.key)
  64. node.dir=node0
  65. # 搭建新链时需配置
  66. # FISCO-BCOS版本
  67. fisco.version=2.7.2
  68. # 搭建节点个数(默认两个)
  69. node.counts=nodeCounts

部署

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

备注:

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

部署完成后可以看到deploy has completed的日志:

  1. $ python3 deploy.py installAll
  2. ...
  3. ============================================================
  4. _ _ ______ ___ _____ _____
  5. | | | | | ___ \/ _ \/ ___| ___|
  6. | | | | ___| |_/ / /_\ \ `--.| |__
  7. | |/\| |/ _ | ___ | _ |`--. | __|
  8. \ /\ | __| |_/ | | | /\__/ | |___
  9. \/ \/ \___\____/\_| |_\____/\____/
  10. ...
  11. ...
  12. ============================================================
  13. ============== deploy has completed ==============
  14. ============================================================
  15. ============== webase-web version v1.5.4 ========
  16. ============== webase-node-mgr version v1.5.4 ========
  17. ============== webase-sign version v1.5.3 ========
  18. ============== webase-front version v1.5.4 ========
  19. ============================================================
  • 服务部署后,需要对各服务进行启停操作,可以使用以下命令:
  1. # 一键部署
  2. 部署并启动所有服务 python3 deploy.py installAll
  3. 停止一键部署的所有服务 python3 deploy.py stopAll
  4. 启动一键部署的所有服务 python3 deploy.py startAll
  5. # 各子服务启停
  6. 启动FISCO-BCOS节点: python3 deploy.py startNode
  7. 停止FISCO-BCOS节点: python3 deploy.py stopNode
  8. 启动WeBASE-Web: python3 deploy.py startWeb
  9. 停止WeBASE-Web: python3 deploy.py stopWeb
  10. 启动WeBASE-Node-Manager: python3 deploy.py startManager
  11. 停止WeBASE-Node-Manager: python3 deploy.py stopManager
  12. 启动WeBASE-Sign: python3 deploy.py startSign
  13. 停止WeBASE-Sign: python3 deploy.py stopSign
  14. 启动WeBASE-Front: python3 deploy.py startFront
  15. 停止WeBASE-Front: python3 deploy.py stopFront
  16. # 可视化部署
  17. 部署并启动可视化部署的所有服务 python3 deploy.py installWeBASE
  18. 停止可视化部署的所有服务 python3 deploy.py stopWeBASE
  19. 启动可视化部署的所有服务 python3 deploy.py startWeBASE

状态检查

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

检查各子系统进程

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

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

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

  • 检查节点进程,此处部署了两个节点node0, node1
  1. $ ps -ef | grep node

输出如下

  1. 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
  2. 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的进程
  1. $ ps -ef | grep webase.front

输出如下

  1. 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的进程
  1. $ ps -ef | grep webase.node.mgr

输出如下

  1. 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进程
  1. $ ps -ef | grep nginx

输出如下

  1. 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的进程
  1. $ ps -ef | grep webase.sign

输出如下

  1. 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)是否已监听
  1. $ netstat -anlp | grep 20200

输出如下

  1. tcp 0 0 0.0.0.0:20200 0.0.0.0:* LISTEN 29069/fisco-bcos
  • 检查webase-front端口(默认为5002)是否已监听
  1. $ netstat -anlp | grep 5002

输出如下

  1. tcp6 0 0 :::5002 :::* LISTEN 2909/java
  • 检查webase-node-mgr端口(默认为5001)是否已监听
  1. $ netstat -anlp | grep 5001

输出如下

  1. tcp6 0 0 :::5001 :::* LISTEN 14049/java
  • 检查webase-web端口(默认为5000)在nginx是否已监听
  1. $ netstat -anlp | grep 5000

输出如下

  1. tcp 0 0 0.0.0.0:5000 0.0.0.0:* LISTEN 3498/nginx: master
  • 检查webase-sign端口(默认为5004)是否已监听
  1. $ netstat -anlp | grep 5004

输出如下

  1. tcp6 0 0 :::5004 :::* LISTEN 25271/java

检查服务日志

各子服务的日志路径如下:

  1. |-- webase-deploy # 一键部署目录
  2. |--|-- log # 部署日志目录
  3. |--|-- webase-web # 管理平台目录
  4. |--|--|-- log # 管理平台日志目录
  5. |--|-- webase-node-mgr # 节点管理服务目录
  6. |--|--|-- log # 节点管理服务日志目录
  7. |--|-- webase-sign # 签名服务目录
  8. |--|--|-- log # 签名服务日志目录
  9. |--|-- webase-front # 节点前置服务目录
  10. |--|--|-- log # 节点前置服务日志目录
  11. |--|-- nodes # 一件部署搭链节点目录
  12. |--|--|-- 127.0.0.1
  13. |--|--|--|-- node0 # 具体节点目录
  14. |--|--|--|--|-- 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服务可进行类似操作

  1. $ cd webase-front
  2. $ grep -B 3 "main run success" log/WeBASE-Front.log

输出如下:

  1. 2020-12-09 15:47:25.355 [main] INFO ScheduledAnnotationBeanPostProcessor() - No TaskScheduler/ScheduledExecutorService bean found for scheduled processing
  2. 2020-12-09 15:47:25.378 [main] INFO TomcatEmbeddedServletContainer() - Tomcat started on port(s): 5002 (http)
  3. 2020-12-09 15:47:25.383 [main] INFO Application() - Started Application in 6.983 seconds (JVM running for 7.768)
  4. 2020-12-09 15:47:25.383 [main] INFO Application() - main run success...
  • 查看报错日志:出现异常时,可以搜索关键字ERROR进行检查

如,检查webase-front错误日志,其他WeBASE服务可进行类似操作

  1. $ cd webase-front
  2. $ grep "ERROR" log/WeBASE-Front.log

输出如下

  1. 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.
  2. 2020-12-09 09:10:42.145 [http-nio-5002-exec-4] ERROR Web3ApiService() - getBlockNumber fail.

如果出现错误日志,根据错误提示或本文档的常见问题进行排查

启动失败或无法使用时,欢迎到WeBASE提交Issue或到技术社区共同探讨。

  • 提交Issue或讨论问题时,可以在issue中配上自己的环境配置,操作步骤,错误现象,错误日志等信息,方便社区用户快速定位问题

访问

WeBASE管理平台:

  • 一键部署完成后,打开浏览器(Chrome Safari或Firefox)访问
  1. http://{deployIP}:{webPort}
  2. 示例: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. Java环境部署

CentOS环境安装Java

注意:CentOS下OpenJDK无法正常工作,需要安装OracleJDK下载链接

  1. # 创建新的文件夹,安装Java 8或以上的版本,推荐JDK8-JDK13版本,将下载的jdk放在software目录
  2. # 从Oracle官网(https://www.oracle.com/java/technologies/downloads/#java8)选择Java 8或以上的版本下载,例如下载jdk-8u301-linux-x64.tar.gz
  3. $ mkdir /software
  4. # 解压jdk
  5. $ tar -zxvf jdk-8u301-linux-x64.tar.gz
  6. #修改解压后文件的文件名
  7. $mv jdk1.8.0_301 jdk-8u301
  8. # 配置Java环境,编辑/etc/profile文件
  9. $ vim /etc/profile
  10. # 打开以后将下面三句输入到文件里面并保存退出
  11. export JAVA_HOME=/software/jdk-8u301 #这是一个文件目录,非文件
  12. export PATH=$JAVA_HOME/bin:$PATH
  13. export CLASSPATH=.:$JAVA_HOME/lib/dt.jar:$JAVA_HOME/lib/tools.jar
  14. # 生效profile
  15. $ source /etc/profile
  16. # 查询Java版本,出现的版本是自己下载的版本,则安装成功。
  17. java -version

Ubuntu环境安装Java

  1. # 安装默认Java版本(Java 8或以上)
  2. sudo apt install -y default-jdk
  3. # 查询Java版本
  4. java -version

2. 数据库部署

① CentOS安装MariaDB

此处以CentOS 7(x86_64)安装MariaDB 10.2为例。MariaDB数据库是 MySQL 的一个分支,主要由开源社区在维护,采用 GPL 授权许可。MariaDB完全兼容 MySQL,包括API和命令行。MariaDB 10.2版本对应Mysql 5.7。其他安装方式请参考MySQL官网

  • CentOS 7 默认MariaDB为5.5版本,安装10.2版本需要按下文进行10.2版本的配置。
  • 若使用CentOS 8则直接使用sudo yum install -y mariadb*即可安装MariaDB 10.3,并跳到下文的 启停 章节即可。

使用vivim创建新文件/etc/yum.repos.d/mariadb.repo,并写入下文的文件内容(参考MariaDB中科大镜像源修改进行配置)

  • 创建repo文件
  1. sudo vi /etc/yum.repos.d/mariadb.repo
  • 文件内容,此处使用的是中科大镜像源
  1. # MariaDB 10.2 CentOS repository list - created 2021-07-12 07:37 UTC
  2. # http://downloads.mariadb.org/mariadb/repositories/
  3. [mariadb]
  4. name = MariaDB
  5. baseurl = https://mirrors.ustc.edu.cn/mariadb/yum/10.2/centos7-amd64
  6. gpgkey=https://mirrors.ustc.edu.cn/mariadb/yum/RPM-GPG-KEY-MariaDB
  7. gpgcheck=1
  • 更新yum源缓存数据
  1. yum clean all
  2. yum makecache all
  • 安装MariaDB 10.2
  • 如果已存在使用sudo yum install -y mariadb*命令安装的MariaDB,其版本默认为5.5版本,对应Mysql版本为5.5。新版本MariaDB无法兼容升级,需要先卸载旧版本的MariaDB,卸载前需要备份数据库内容,卸载命令可参考yum remove mariadb
  1. sudo yum install MariaDB-server MariaDB-client -y

若安装时遇到错误“Failed to connect to 2001:da8:d800:95::110: Network is unreachable”,将源地址中的 mirrors.ustc.edu.cn 替换为 ipv4.mirrors.ustc.edu.cn 以强制使用 IPv4:

  1. sudo sed -i 's#//mirrors.ustc.edu.cn#//ipv4.mirrors.ustc.edu.cn#g' /etc/yum.repos.d/mariadb

详情参考MariaDB官网安装

  • 启停
  1. 启动:sudo systemctl start mariadb.service
  2. 停止:sudo systemctl stop mariadb.service
  • 设置开机启动
  1. sudo systemctl enable mariadb.service
  • 初始化
  1. 执行以下命令:
  2. sudo mysql_secure_installation
  3. 以下根据提示输入:
  4. Enter current password for root (enter for none):<–初次运行直接回车
  5. Set root password? [Y/n] <– 是否设置root用户密码,输入y并回车或直接回车
  6. New password: <– 设置root用户的密码
  7. Re-enter new password: <– 再输入一次你设置的密码
  8. Remove anonymous users? [Y/n] <– 是否删除匿名用户,回车
  9. Disallow root login remotely? [Y/n] <–是否禁止root远程登录,回车
  10. Remove test database and access to it? [Y/n] <– 是否删除test数据库,回车
  11. Reload privilege tables now? [Y/n] <– 是否重新加载权限表,回车

② 授权访问和添加用户

  • 使用root用户登录,密码为初始化设置的密码
  1. mysql -uroot -p -h localhost -P 3306
  • 授权root用户远程访问
  1. mysql > GRANT ALL PRIVILEGES ON *.* TO 'root'@'%' IDENTIFIED BY '123456' WITH GRANT OPTION;
  2. mysql > flush PRIVILEGES;
  • 创建test用户并授权本地访问
  1. mysql > GRANT ALL PRIVILEGES ON *.* TO 'test'@localhost IDENTIFIED BY '123456' WITH GRANT OPTION;
  2. mysql > flush PRIVILEGES;

安全温馨提示:

  • 例子中给出的数据库密码(123456)仅为样例,强烈建议设置成复杂密码
  • 例子中root用户的远程授权设置会使数据库在所有网络上都可以访问,请按具体的网络拓扑和权限控制情况,设置网络和权限帐号

③ 测试连接和创建数据库

  • 登录数据库
  1. mysql -utest -p123456 -h localhost -P 3306
  • 创建数据库
  1. mysql > create database webasenodemanager;

④ Ubuntu安装mysql数据库

  • 以root用户执行命令
  1. apt-get install software-properties-common
  2. sudo add-apt-repository 'deb http://archive.ubuntu.com/ubuntu trusty universe'
  3. sudo apt-get update
  4. sudo apt install mysql-server-5.6
  5. sudo apt install mysql-client-5.6
  • 执行mysql –version命令,若显示如下则安装成功
  1. mysql Ver 14.14 Distrib 5.6.16, for debian-linux-gnu (x86_64) using EditLine wrapper

3. Python部署

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

  • CentOS

    1. sudo yum install -y python36
    2. sudo yum install -y python36-pip
  • Ubuntu

    1. // 添加仓库,回车继续
    2. sudo add-apt-repository ppa:deadsnakes/ppa
    3. // 安装python 3.6
    4. sudo apt-get install -y python3.6
    5. sudo apt-get install -y python3-pip

常见问题

1. Python命令出错

  • SyntaxError报错
  1. File "deploy.py", line 62
  2. print helpMsg
  3. ^
  4. SyntaxError: Missing parentheses in call to "print". Did you mean print(helpMsg)?
  • 找不到fallback关键字
  1. File "/home/ubuntu/webase-deploy/comm/utils.py", line 127, in getCommProperties
  2. value = cf.get('common', paramsKey,fallback=None)
  3. TypeError: get() got an unexpected keyword argument 'fallback'

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

2. 使用Python3时找不到pymysql

  1. Traceback (most recent call last):
  2. ...
  3. ImportError: No module named 'pymysql'

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

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

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

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

  1. ...
  2. ============== WeBASE-Web start... ==============
  3. Traceback (most recent call last):
  4. ...
  5. 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. 部署时数据库访问报错

  1. ...
  2. checking database connection
  3. Traceback (most recent call last):
  4. File "/data/temp/webase-deploy/comm/mysql.py", line 21, in dbConnect
  5. conn = mdb.connect(host=mysql_ip, port=mysql_port, user=mysql_user, passwd=mysql_password, charset='utf8')
  6. File "/usr/lib64/python2.7/site-packages/MySQLdb/__init__.py", line 81, in Connect
  7. return Connection(*args, **kwargs)
  8. File "/usr/lib64/python2.7/site-packages/MySQLdb/connections.py", line 193, in __init__
  9. super(Connection, self).__init__(*args, **kwargs2)
  10. OperationalError: (1045, "Access denied for user 'root'@'localhost' (using password: YES)")

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

6. 节点sdk目录不存在

  1. ...
  2. ======= 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”

  1. ...
  2. 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”

  1. ...
  2. [main] ERROR SpringApplication() - Application startup failed
  3. 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
  4. ...

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

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

  1. ...
  2. ======= 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
    1. #log config
    2. logging:
    3. level:
    4. com.webank.webase.node.mgr: debug
    • webase-node-mgr/conf/log/log4j2.xml
    1. <Loggers>
    2. <Root level="debug">
    3. <AppenderRef ref="asyncInfo"/>
    4. <AppenderRef ref="asyncErrorLog"/>
    5. </Root>
    6. </Loggers>
  • 修改日志level后,重启服务 bash stop.sh && bash start.sh

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

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

11. WeBASE 国内镜像与CDN加速服务

答:WeBASE CDN 加速服务提供 WeBASE 各子系统安装包的下载服务,可参考国内镜像和CDN加速攻略

欢迎给WeBASE的文档提交 Pull Request 补充更多的 Q&A