升级业务应用
版本
升级之前需要先确定旧版本和升级的新版本,如果初次安装是已有项目集成的方式,还需要先升级koca版本,保持koca版本与业务客户端版本相同
当前文档版本为:5.0.1,升级时注意保证数据库脚本、后端接口、前端页面的版本是一一对应的,即要么都升级要么都不升级,否则可能导致应用异常
准备
下载升级压缩包
解压下载的压缩包:unzip lcp-standalone.zip
,得到的目录结构如下:
./
├── db ---数据库脚本
├── lcp-runtime-bootapp ---后端文件
├── lcp-runtime-web ---前端初始化脚本
└── nginx-config ---nginx配置文件
./
├── db ---数据库脚本
├── lcp-runtime-bootapp ---后端文件
├── lcp-runtime-web ---前端初始化脚本
└── nginx-config ---nginx配置文件
后续升级过程中,如无单独说明,均为以此目录作为工作目录,如果涉及命令,则默认为Linux命令
关闭旧版本
进入旧版本业务客户端安装目录,关闭旧版本进程(如果首次安装是已有项目集成,则按业务系统原有方式关闭后端服务)
- 关闭后端服务
- linux执行:
sh bin/shutdown.sh
- windows执行:双击文件
bin/shutdown.bat
- linux执行:
备份
进入旧版本业务客户端目录,完整备份旧版本:例如,假设旧版本安装目录为
- 后端:
/opt/application/lcp-standalone
, - 前端:
/opt/application/lcp-web
,
则备份命令为(x.x.x代表旧版本号):
- 后端:
cp -rf /opt/application/lcp-standalone /opt/application/lcp-standalone-x.x.x-bak
- 前端:
cp -rf /opt/application/lcp-web /opt/application/lcp-web-x.x.x-bak
数据库升级
如果初次安装是通过flyway工具完成的数据库初始化,只需要在新版本中按相同步骤再次执行flyway脚本工具即可完成升级(参考flyway执行)
如果初次安装是通过手动执行方式初始化的,则需要继续下面的步骤:
- 根据项目的数据库类型,进入对应的增量脚本目录,这里以 oracle 为例:
db/oracle
- 此目录下模块说明参考初始化数据库,每个模块的sql目录结构类似:
xxx --- 模块名称 ├── table --- 表结构相关的sql脚本 | ├── all --- 全量脚本 | └── update --- 增量脚本 └── data --- 初始化数据相关的sql脚本 ├── all --- 全量脚本 └── update --- 增量脚本
xxx --- 模块名称 ├── table --- 表结构相关的sql脚本 | ├── all --- 全量脚本 | └── update --- 增量脚本 └── data --- 初始化数据相关的sql脚本 ├── all --- 全量脚本 └── update --- 增量脚本
执行方式一:
- 依次进入模块的增量脚本目录:选择大于旧版本、小于等于新版本的目录
- 按照版本号从低到高、先表结构后表数据、模块排序的顺序依次执行脚本(也可以先将所有需要执行的增量脚本拷贝到一个目录,按文件名升序的顺序依次执行)
执行方式二:先借助工具将多个模块的sql合并为一个,再执行
- 进入sql合并工具目录:
cd db/sqlmigrate
- 有关工具详细说明,参考:sqlmigrate
- 也可以参考:http://koca.szkingdom.com/forum/t/topic/913
- 执行sql合并:
java -jar sql-migrate.jar -f x.x.x -c update-migrate.conf
,参数解释以及可能需要参数如下:-f x.x.x
: 代表旧版本号,必须指定,不指定会收集所有增量脚本,导致后续升级脚本执行失败-d oracle
: 代表数据库类型,支持mssql/mysql/oracle/postgresql,不写默认oracle-t x.x.x
: 代表新版本号,不写默认当前版本,参考版本-m admin.*,lcp-runtime.*
: 如果项目是已有项目集成的,并且部分模块已经采用项目已有方式升级过,则需要通过这个参数指定需要的模块
- 执行完成后,得到全量sql文件:
update.sql
- 在数据库中执行:
update.sql
脚本即可
后端升级
升级
进入旧版本业务客户端后端项目源码目录(默认情况下在:旧版本zip包目录/lcp-standalone/lcp-runtime-bootapp
):
修改 pom 依赖的版本号:pom.xml
需要修改两处:koca版本和业务客户端版本,部分配置参考如下:
<parent>
<groupId>com.szkingdom.koca.parent</groupId>
<artifactId>koca-parent</artifactId>
<!-- koca版本,与新版本保持一致 -->
<version>x.x.x</version>
<relativePath></relativePath>
</parent>
<properties>
<!-- 业务客户端版本,修改为新版本 -->
<lcp.version>x.x.x</lcp.version>
</properties>
<dependencies>
<dependency>
<groupId>com.szkingdom.koca.lcp</groupId>
<artifactId>lcp-runtime-agent-starter</artifactId>
<version>${lcp.version}</version>
</dependency>
</dependencies>
<parent>
<groupId>com.szkingdom.koca.parent</groupId>
<artifactId>koca-parent</artifactId>
<!-- koca版本,与新版本保持一致 -->
<version>x.x.x</version>
<relativePath></relativePath>
</parent>
<properties>
<!-- 业务客户端版本,修改为新版本 -->
<lcp.version>x.x.x</lcp.version>
</properties>
<dependencies>
<dependency>
<groupId>com.szkingdom.koca.lcp</groupId>
<artifactId>lcp-runtime-agent-starter</artifactId>
<version>${lcp.version}</version>
</dependency>
</dependencies>
编译运行
进入旧版本业务客户端后端项目源码目录(默认情况下在:旧版本zip包目录/lcp-standalone/lcp-runtime-bootapp
):
maven 打包:
mvn clean package
,生成打包文件解压打包文件:
tar -xvf target/lcp-runtime-bootapp-x.x.x-bin.tar.gz
进入解压后得到的目录:
cd lcp-runtime-bootapp-x.x.x
,运行:- linux 环境:
sh ./bin/startup.sh
- window 环境:双击文件
bin/startup.bat
- linux 环境:
打开日志文件:
tail -f -n 1000 logs/lcp-biz.log
(其中-n 1000选项代表行数),当日志中打印started on port(s): 8098
字样表示正常启动执行:
jps
命令,可以找到名称类似lcp-runtime-bootapp-x.x.x-assembly.jar
的 Java 进程
前端升级
升级
进入旧版本业务客户端前端项目源码目录(默认情况下在:旧版本zip包目录/lcp-standalone/lcp-runtime-web/lcp-web
):
执行:kc update
,一次只能选择一个模块,有多个模块需要升级,所以这个命令需多次执行,具体模块如下:
admin-basic
admin-file-manage
admin-report
lcp-runtime-model
lcp-runtime-component
lcp-runtime-page
lcp-runtime-api
lcp-workflow
选择模块:
选择版本(注意版本选择与新版本保持一致,参考版本):
如果上面列举的模块不在升级列表中,则需要添加模块,进入已有的前端项目,执行:kc add
选择没有的模块:
版本选择(注意版本选择与新版本保持一致,参考版本):
安装打包
进入旧版本前端项目目录
安装:
pnpm install
打包:
pnpm build
(此过程可能需要十几分钟)打包完成后会在当前工程目录下生成打包文件:
dist
完成(由于是基于旧工程做升级,后续过程沿用旧版本即可,无需其它操作)
验证
业务客户端升级完成后,就可以在 lcp-app 中添加并使用了,参考创建应用