SpringBoot升级迁移指引

2023-9-13 Guide
  • 管理员
  • 运维
About 15 min

该文档介绍了原tomcat部署升级迁移至SpringBoot版本的指引

# 项目要求

下列环境准备在原部署环境可以沿用

  • JDK1.8 (Java 环境)
  • MySQL5.7+/SQLServer/Postgresql/Oracle (系统元数据存储)
  • 建议浏览器 Chrome
  • 操作系统 Linux(首选CentOS7), Windows

下列项目需要更新

  • IBI安装包ibi-2022-xx-xx.zip,[取代原有war包 + tomcat]
  • 元数据变更补丁151-favorites.sql,具体以实际情况为准
  • pkg-puppeteer 用于邮件发送、大屏导出插件[需要更新]

更新操作之前,找出原系统配置文件,文件路径
TOMCAT_HOME/webapps/ROOT/WEB-INF/classs/config.properties

# 元数据更新

在原有库上执行元数据变更脚本

# 导出插件更新

在原配置文件中找出旧版本插件配置目录

# 看板导出、邮件发送依赖插件
pkg_puppetter=/opt/pkg-puppeteer/pkg-puppeter-linux
# 导出插件模拟请求地址, 新老版本部署url不变的情况下frontend.baseurl保持不变
frontend.baseurl=http://localhost:8026/cboard
1
2
3
4

导出插件所在目录结构如下, chromium文件夹不用动,仅需替换pkg-puppeter-linux文件

$ ll /opt/pkg-puppeteer
drwxr-xr-x 3 root root 4.0K 5月   5 10:03 chromium
-rwxr-xr-x 1 root root  40M 5月   5 10:04 pkg-puppeter-linux
1
2
3

# 安装部署

mkdir ibi
cd ibi
## 把ibi-xxx.zip拷贝到该目录, 运行解压命令,解压到app文件夹,app目录自动创建
unzip -d app ibi-1.6.0.zip
1
2
3
4

Note

下面的介绍中我们把刚才解压的目录成为IBI_HOME, 考虑后续的运维与升级,我们把文件拆分为可以保留与每次更新需更新两部分

ls app
## 以下目录和文件可以保留
├── config        # 配置文件授权证书存储目录
│     ├── application.properties
│     ├── license.cert
│     ├── logback.xml
│     ├── quartz.properties
├── user-files     # 包含upload之类用户生成的文件夹
├── ext-lib     # 存放用户添加的第三方jar包,如数据库驱动等
├── start-server.sh  # 启动脚本
├── stop-server.sh # 停止脚本

## 以下目录和文件需更新
├── static # 存放服务端提供的静态资源
├── webui # 前端资源文件夹
├── ibi.jar  # springboot fat jar
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16

当服务器有多个不同的JDK版本,需要指定Tomcat的运行的JDK版本时

linux设置start-server.sh

export JAVA_HOME=/home/jdk/Java/jdk8
1

# 修改配置文件

复制原config.properties文件,重命名为application.properties, 并放置到app/config目录, 替换自带application.properties

修改config/application.properties配置文件夹下面的配置项,其他的配置保持默认
原配置文件config.properties删除前面几行数据库配置

validationQuery=SELECT 1
jdbc_url=jdbc:mysql://localhost:3306/cboard_demo?characterEncoding=utf-8&serverTimezone=Asia/Shanghai
jdbc_username=cboard
jdbc_password=cboard
jdbc.threadpool.maxActive=5

#log_jdbc_url=jdbc:mysql://localhost:3306/cboard_log?characterEncoding=utf-8&serverTimezone=Asia/Shanghai
#log_jdbc_username=cboard
#log_jdbc_password=cboard
1
2
3
4
5
6
7
8
9

替换为新的数据库配置datasource.meta.url, 为原jdbc_url配置,同时修改username, password, 同时对端口和context进行调整,
需要部署https服务的用户可以把tomcat对应的ssl证书放置在config目录下并修改配置

#
# meta datasource 元数据
# Druid 连接池
#
datasource.meta.name=meta
datasource.meta.driver-class-name=com.mysql.jdbc.Driver
datasource.meta.url=jdbc:mysql://localhost:3306/cboard_dev?characterEncoding=utf-8&serverTimezone=Asia/Shanghai
datasource.meta.username=root
datasource.meta.password=xxx
datasource.meta.max-active=10
datasource.meta.min-idle=0
datasource.meta.initialSize=1
datasource.meta.breakAfterAcquireFailure=true
#
# log datasource 日志数据默认与meta元数据源一致
#
datasource.log.name=log
datasource.log.driver-class-name=${datasource.meta.driver-class-name}
datasource.log.url=${datasource.meta.url}
datasource.log.username=${datasource.meta.username}
datasource.log.password=${datasource.meta.password}
datasource.log.max-active=10
datasource.log.min-idle=0
datasource.log.initialSize=1
datasource.log.breakAfterAcquireFailure=true

# 连接端口与context
server.port=8026
server.servlet.context-path=/cboard
# https相关配置
#server.ssl.key-store=classpath:xxxx.jks
#server.ssl.key-store-password=xxx
#server.ssl.keyStoreType=JKS

# 对应安装目录下user-files文件夹
file.userfiles-path=user-files
spring.web.resources.static-locations=classpath:/static,classpath:/webui,classpath:/${file.userfiles-path}
spring.web.resources.cache.cachecontrol.cache-public=true
spring.web.resources.cache.cachecontrol.max-age=30d

#
# 系统运行产生文件存储地址
#
runtime.base.filePath=${user.home}/.ibi
# 在线表格写转文件存储地址, 默认目录
dataprovider.onlineTable.filePath=${runtime.base.filePath}/online-tables
# 大屏导出临时文件存储地址
export.cockpit.screenshotPath=${runtime.base.filePath}/screenshot/cockpit

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49

# 离线缓存h2连接配置更新

aggregator.h2.url=jdbc:h2:~/H2Data/cboard;AUTO_SERVER=TRUE;MODE=MYSQL;CASE_INSENSITIVE_IDENTIFIERS=false
1

# 复制原License授权文件

从原部署目录拷贝TOMCAT_HOME/webapps/ROOT/WEB-INF/classs/license.cert${IBI_HOME}/config/license.cert

# 启动服务

${IBI_HOME}执行启动命令

chmod 755 start-server.sh stop-server.sh
./start-server.sh

./start-server.sh
[IBI] Working path = /root/install/cboard/uat/springboot
[IBI] Set basePath to parent path=.
[IBI] basePath=.
[IBI] Set classpath to '.:.:./ibi.jar:./config:./ext-lib'
[IBI] Server is starting, pid=6644
==========================================
check log command ====>      tail -f /root/install/cboard/uat/springboot/logs/cboard.log
1
2
3
4
5
6
7
8
9
10
11
# 启动成功之后脚本自动运行tail命令显示实时日期, 用户可以按 ctrl+c 中断日期显示, 不影响服务后台运行
tail -f /root/install/cboard/uat/springboot/logs/cboard.log
1
2

# 原用户上传资源迁移

如果原系统使用过大屏功能,并存在用户上传资源,需要迁移源用户上传资源目录

覆盖目录TOMCAT_HOME/webapps/ROOT/upload, 到${IBI_HOME}/user-files/upload

# restful接口请求变更

重要提示

从v1.6.0开始所有请求取消.do后缀,1.6之前的版本添加.do后缀, 如:原来的post auth.do修改为post auth

# 利用Nginx同时兼容http和https

{
    # https 转发到服务端
    server {
        listen 443 ssl;
        server_name  www.ibidemo.com;

        ssl_certificate conf.d/www.ibidemo.cn_bundle.pem;  #需要将cert-file-name.pem替换成已上传的证书文件的名称。
        ssl_certificate_key conf.d/www.ibidemo.cn.key;     #需要将cert-file-name.key替换成已上传的证书私钥文件的名称。
        ssl_session_timeout 5m;
        ssl_ciphers ECDHE-RSA-AES128-GCM-SHA256:ECDHE:ECDH:AES:HIGH:!NULL:!aNULL:!MD5:!ADH:!RC4;

        # 表示使用的加密套件的类型。
        ssl_protocols TLSv1.1 TLSv1.2 TLSv1.3; #表示使用的TLS协议的类型。
        ssl_prefer_server_ciphers on;

        location / {
             proxy_pass  https://www.ibidemo.com:8026; # 转发默认服务端口
        }
    }

    # 转发http到https
    server {
        listen 80;
        server_name www.ibidemo.com;
        return 301 https://$host$request_uri;
    }

}
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
Last update: September 13, 2023 11:14