SpringBoot升级迁移指引
该文档介绍了原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
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
2
3
# 安装部署
mkdir ibi
cd ibi
## 把ibi-xxx.zip拷贝到该目录, 运行解压命令,解压到app文件夹,app目录自动创建
unzip -d app ibi-1.6.0.zip
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
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
# 修改配置文件
复制原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
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
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
# 复制原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
2
3
4
5
6
7
8
9
10
11
# 启动成功之后脚本自动运行tail命令显示实时日期, 用户可以按 ctrl+c 中断日期显示, 不影响服务后台运行
tail -f /root/install/cboard/uat/springboot/logs/cboard.log
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;
}
}
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