Fisco Bcos区块链三(WeBASE中间件平台一键部署)

文章目录

    • 区块链开荒
      • 技术文档:https://webasedoc.readthedocs.io/zh_CN/latest/index.html
    • 二、WeBASE一键部署
      • 1. 前提条件
        • 1. 检查环境
          • 1. 平台要求
          • 2. 检查Java
          • 3. 检查mysql
          • 4. 检查Python
          • 5. PyMySQL部署(Python3.6+)
        • 2. 检查服务器网络策略
      • 2. 拉取部署脚本
      • 3. 修改配置
      • 4. 部署
      • 5. 状态检查
        • 1. 检查各子系统进程
        • 2. 检查进程端口
        • 3. 检查服务日志
          • 1. 各子服务的日志路径如下
          • 2. 检查服务日志有无错误信息
          • 3. 搜索日志
      • 6. 访问
      • 7. 附录
        • 1. Java环境部署(CentOS)
        • 2. 数据库部署
          • ① CentOS安装MariaDB
          • ② 授权访问和添加用户
          • ③ 测试连接和创建数据库
        • 3. Python部署

区块链开荒

技术文档: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-webnginx进程,以及签名服务进程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地址

Fisco Bcos区块链三(WeBASE中间件平台一键部署)_第1张图片

备注:

  • 部署服务器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,并跳到下文的 启停 章节即可。

使用vivim创建新文件/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

你可能感兴趣的:(Fisco,Bcos区块链,区块链)