文章目录
区块链开荒
技术文档:https://webasedoc.readthedocs.io/zh_CN/latest/index.html
二、WeBASE一键部署
1. 前提条件
| 环境 | 版本 |
|---|---|
| Java | Oracle JDK 8 至 14 |
| MySQL | MySQL-5.6及以上 |
| Python | Python3.6及以上 |
| PyMySQL |
1. 检查环境
1. 平台要求
推荐使用CentOS 7.2+, Ubuntu 16.04及以上版本, 一键部署脚本将自动安装openssl, curl, wget, git, nginx, dos2unix相关依赖项。
其余系统可能导致安装依赖失败,可自行安装openssl, curl, wget, git, nginx, dos2unix依赖项后重试
2. 检查Java
推荐JDK8-JDK13版本:
java -version
注意:不要用sudo执行安装脚本
- Java安装部署可参考
附录
3. 检查mysql
MySQL-5.6或以上版本:
mysql --version
- Mysql安装部署可参考
附录
4. 检查Python
使用Python3.6或以上版本:
python --version
# python3时
python3 --version
如已安装python3,也可通过python3 --version查看,在运行脚本时,使用python3命令即可
- Python3安装部署可参考
附录
5. PyMySQL部署(Python3.6+)
Python3.6及以上版本,需安装PyMySQL依赖包
- CentOS
sudo yum -y install python36-pip
sudo pip3 install PyMySQL
CentOS不支持pip命令的话,可以使用以下方式:
git clone https://github.com/PyMySQL/PyMySQL
cd PyMySQL/
python3 setup.py install
如已安装PyMySQL,也可通过pip3 list | grep PyMySQ查看
2. 检查服务器网络策略
网络策略检查:
- 开放WeBASE管理平台端口:检查webase-web管理平台页面的端口
webPort(默认为5000)在服务器的网络安全组中是否设置为开放。如,云服务厂商如腾讯云,查看安全组设置,为webase-web开放5000端口。若端口未开放,将导致浏览器无法访问WeBASE服务页面 - 开放节点前置端口:如果希望通过浏览器直接访问webase-front节点前置的页面,则需要开放节点前置端口
frontPort(默认5002);由于节点前置直连节点,不建议对公网开放节点前置端口,建议按需开放
2. 拉取部署脚本
获取部署安装包:
cd ~/fisco && wget https://osp-1257653870.cos.ap-guangzhou.myqcloud.com/WeBASE/releases/download/v1.5.4/webase-deploy.zip
解压安装包:
unzip webase-deploy.zip
进入目录:
cd webase-deploy
3. 修改配置
① 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版本和节点安装个数,搭建的新链默认两个群组
④ 服务端口不能小于1024
⑤ 部署时,修改 common.properties 配置文件
修改第74行参数if.exist.fisco为yes,同时修改86行链节点工作目录fisco.dir;
# 是否使用已有的链(yes/no)
if.exist.fisco=yes
# 路径下要存在sdk目录(sdk目录中包含了SSL所需的证书,即ca.crt、sdk.crt、sdk.key和gm目录(包含国密SSL证书,gmca.crt、gmsdk.crt、gmsdk.key、gmensdk.crt和gmensdk.key)
fisco.dir=/root/fisco/nodes/127.0.0.1
修改Mysql数据库连接信息,第25-36行中mysql和sign相关用户名、密码和数据库名;
默认mysql数据库root用户对应密码为ibwedu123;
# 节点管理子系统mysql数据库配置
mysql.ip=localhost
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
4. 部署
- 执行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的日志:
...
============================================================
_ _ ______ ___ _____ _____
| | | | | ___ \/ _ \/ ___| ___|
| | | | ___| |_/ / /_\ \ `--.| |__
| |/\| |/ _ | ___ | _ |`--. | __|
\ /\ | __| |_/ | | | /\__/ | |___
\/ \/ \___\____/\_| |_\____/\____/
...
...
============================================================
============== deploy has completed ==============
============================================================
============== webase-web version v1.5.4 ========
============== webase-node-mgr version v1.5.4 ========
============== webase-sign version v1.5.3 ========
============== webase-front version v1.5.4 ========
============================================================
- 服务部署后,需要对各服务进行启停操作,可以使用以下命令:
# 一键部署
部署并启动所有服务 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
5. 状态检查
成功部署后,可以根据以下步骤确认各个子服务是否启动成功
1. 检查各子系统进程
通过ps命令,检查各子系统的进程是否存在
- 包含:节点进程
nodeXX,节点前置进程webase.front,节点管理服务进程webase.node.mgr,节点管理平台webase-web的nginx进程,以及签名服务进程webase.sign
检查方法如下,若无输出,则代表进程未启动,需要到该子系统的日志中检查日志错误信息,并根据错误提示或本文档的常见问题进行排查
- 检查节点进程,此处部署了四个节点node0, node1, node2, node3
ps -ef | grep node
输出如下
root 12445 1 0 18:25 pts/0 00:00:22 /root/fisco/nodes/127.0.0.1/node1/../fisco-bcos -c config.ini
root 12447 1 0 18:25 pts/0 00:00:22 /root/fisco/nodes/127.0.0.1/node2/../fisco-bcos -c config.ini
root 12449 1 0 18:25 pts/0 00:00:22 /root/fisco/nodes/127.0.0.1/node3/../fisco-bcos -c config.ini
root 12451 1 0 18:25 pts/0 00:00:22 /root/fisco/nodes/127.0.0.1/node0/../fisco-bcos -c config.ini
- 检查节点前置webase-front的进程
ps -ef | grep webase.front
输出如下
root 14372 1 12 19:02 pts/1 00:00:22 /software/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 14517 1 7 19:03 pts/1 00:00:15 /software/jdk/bin/java -Djdk.tls.namedGroups=secp256k1 ... conf/:apps/*:lib/* com.webank.webase.node.mgr.Application
- 检查webase-web对应的nginx进程
ps -ef | grep nginx
输出如下
root 14587 1 0 19:03 ? 00:00:00 nginx: master process /usr/sbin/nginx -c /root/fisco/webase-deploy/comm/nginx.conf
- 检查签名服务webase-sign的进程
ps -ef | grep webase.sign
输出如下
root 14278 1 2 19:02 pts/1 00:00:11 /software/jdk/bin/java ... conf/:apps/*:lib/* com.webank.webase.sign.Application
2. 检查进程端口
通过netstat命令,检查各子系统进程的端口监听情况。
检查方法如下,若无输出,则代表进程端口监听异常,需要到该子系统的日志中检查日志错误信息,并根据错误提示或本文档的常见问题进行排查
- 检查节点channel端口(默认为20200)是否已监听
netstat -anlp | grep 20200
输出如下
tcp 0 0 0.0.0.0:20200 0.0.0.0:* LISTEN 12451/fisco-bcos
- 检查webase-front端口(默认为5002)是否已监听
netstat -anlp | grep 5002
输出如下
tcp6 0 0 :::5002 :::* LISTEN 14372/java
- 检查webase-node-mgr端口(默认为5001)是否已监听
netstat -anlp | grep 5001
输出如下
tcp6 0 0 :::5001 :::* LISTEN 14517/java
- 检查webase-web端口(默认为5000)在nginx是否已监听
netstat -anlp | grep 5000
输出如下
tcp 0 0 0.0.0.0:5000 0.0.0.0:* LISTEN 14587/nginx: master
- 检查webase-sign端口(默认为5004)是否已监听
netstat -anlp | grep 5004
输出如下
tcp6 0 0 :::5004 :::* LISTEN 14278/java
3. 检查服务日志
1. 各子服务的日志路径如下
|-- 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的相关内容,可以看到错误日志前后的普通日志信息
2. 检查服务日志有无错误信息
- 如果各个子服务的进程已启用且端口已监听,可直接访问下一章节
访问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中的节点日志
3. 搜索日志
通过查看日志可以检查服务的运行状态,我们可以进入各子服务的日志路径,通过grep检查日志文件,以此判断服务是否正常运行
- 查看运行成功日志:WeBASE子服务运行成功后均会打印日志
main run success,可以通过搜索此关键字来确认服务正常运行。
如,检查webase-front日志,其他WeBASE服务可进行类似操作
cd webase-front
grep -B 3 "main run success" log/WeBASE-Front.log
输出如下:
2023-04-10 19:03:15.561 [main] INFO PresetDataService() - loadWarehouseJson :warehouse/warehouse.json
2023-04-10 19:03:15.617 [main] INFO PresetDataService() - readAndInitStoreItem save 7 items
2023-04-10 19:03:15.618 [main] INFO Application() - Started Application in 19.461 seconds (JVM running for 20.418)
2023-04-10 19:03:15.618 [main] INFO Application() - main run success...
- 查看报错日志:出现异常时,可以搜索关键字
ERROR进行检查
如,检查webase-front错误日志,其他WeBASE服务可进行类似操作
cd webase-front
grep "ERROR" log/WeBASE-Front.log
输出如下
如果出现错误日志,根据错误提示或本文档的常见问题进行排查
6. 访问
WeBASE管理平台:
- 一键部署完成后,打开浏览器(Chrome Safari或Firefox)访问
http://{deployIP}:{webPort}
示例:http://localhost:5000
若使用物理机访问,请先关闭防火墙并设置静态IP地址

备注:
-
部署服务器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按需开放)
7. 附录
1. Java环境部署(CentOS)
注意:CentOS下OpenJDK无法正常工作,需要安装OracleJDK下载链接。
# 创建新的文件夹,安装Java 8或以上的版本,推荐JDK8-JDK13版本,将下载的jdk放在software目录
# 从Oracle官网(https://www.oracle.com/java/technologies/downloads/#java8)选择Java 8或以上的版本下载,例如下载jdk-8u212-linux-x64.tar.gz
mkdir /software && cd /software
# 解压jdk
rz -E
tar -zxvf jdk-8u212-linux-x64.tar.gz -C ./
# 修改解压后文件的文件名
mv jdk1.8.0_212 jdk
# 配置Java环境,编辑/etc/profile文件
vim /etc/profile
# 打开以后将下面三句输入到文件里面并保存退出
export JAVA_HOME=/software/jdk
export PATH=$JAVA_HOME/bin:$PATH
export CLASSPATH=.:$JAVA_HOME/lib/dt.jar:$JAVA_HOME/lib/tools.jar
# 生效profile
source /etc/profile
# 查询Java版本,出现的版本是自己下载的版本,则安装成功。
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,并跳到下文的 启停 章节即可。
使用vi或vim创建新文件/etc/yum.repos.d/mariadb.repo,并写入下文的文件内容(参考MariaDB中科大镜像源修改进行配置)
- 创建repo文件
sudo vi /etc/yum.repos.d/mariadb.repo
- 文件内容,此处使用的是中科大镜像源
# MariaDB 10.2 CentOS repository list - created 2021-07-12 07:37 UTC
# http://downloads.mariadb.org/mariadb/repositories/
[mariadb]
name = MariaDB
baseurl = https://mirrors.ustc.edu.cn/mariadb/yum/10.2/centos7-amd64
gpgkey=https://mirrors.ustc.edu.cn/mariadb/yum/RPM-GPG-KEY-MariaDB
gpgcheck=1
- 更新yum源缓存数据
yum clean all
yum makecache all
- 安装
MariaDB 10.2 - 如果已存在使用
sudo yum install -y mariadb*命令安装的MariaDB,其版本默认为5.5版本,对应Mysql版本为5.5。新版本MariaDB无法兼容升级,需要先卸载旧版本的MariaDB,卸载前需要备份数据库内容,卸载命令可参考yum remove mariadb
rpm -qa | grep mariadb
rpm -e --nodeps mariadb-libs-5.5.68-1.el7.x86_64
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:
sudo sed -i 's#//mirrors.ustc.edu.cn#//ipv4.mirrors.ustc.edu.cn#g' /etc/yum.repos.d/mariadb
详情参考MariaDB官网安装。
- 启停
启动:sudo systemctl start mariadb.service
停止:sudo systemctl stop mariadb.service
- 设置开机启动
sudo systemctl enable mariadb.service
- 初始化
执行以下命令:
sudo mysql_secure_installation
以下根据提示输入:
Enter current password for root (enter for none):<–初次运行直接回车
Set root password? [Y/n] <– 是否设置root用户密码,输入y并回车或直接回车
New password: <– 设置root用户的密码
Re-enter new password: <– 再输入一次你设置的密码
Remove anonymous users? [Y/n] <– 是否删除匿名用户,回车
Disallow root login remotely? [Y/n] <–是否禁止root远程登录,回车
Remove test database and access to it? [Y/n] <– 是否删除test数据库,回车
Reload privilege tables now? [Y/n] <– 是否重新加载权限表,回车
② 授权访问和添加用户
- 使用root用户登录,密码为初始化设置的密码
mysql -uroot -p -h localhost -P 3306
- 授权root用户远程访问
MariaDB [(none)]> GRANT ALL PRIVILEGES ON *.* TO 'root'@'%' IDENTIFIED BY '123456' WITH GRANT OPTION;
MariaDB [(none)]> flush PRIVILEGES;
- 创建test用户并授权本地访问
MariaDB [(none)]> GRANT ALL PRIVILEGES ON *.* TO 'test'@localhost IDENTIFIED BY '123456' WITH GRANT OPTION;
MariaDB [(none)]> flush PRIVILEGES;
安全温馨提示:
- 例子中给出的数据库密码(123456)仅为样例,强烈建议设置成复杂密码
- 例子中root用户的远程授权设置会使数据库在所有网络上都可以访问,请按具体的网络拓扑和权限控制情况,设置网络和权限帐号
③ 测试连接和创建数据库
- 登录数据库
mysql -utest -p123456 -h localhost -P 3306
- 创建数据库
MariaDB [(none)]> create database webasenodemanager;
3. Python部署
python版本要求使用python3.x, 推荐使用python3.6及以上版本
- CentOS
sudo yum install -y python36
sudo yum install -y python36-pip
935

被折叠的 条评论
为什么被折叠?



