初始化业务应用
准备
环境准备
lcp-standalone.zip
下载的压缩包JDK 1.8
maven3
:需要有金证 maven 远程仓库访问权限与配置(没有账号可以走 OA 流程申请)- 四种数据库任选其一:
mysql 5.7+
oracle 12c+
SQL Server 2014(12.0)+
PostgreSQL 11.9+
nginx
node16.x
:npm 远程仓库访问权限与 maven 一致
maven 配置
配置金证 maven 远程仓库访问权限
setting.xml 部分配置如下:
- servers 部分
<servers>
<server>
<id>nexus-kd</id>
<username>maven账号</username>
<password>maven密码</password>
</server>
<server>
<id>nexus-releases-kd</id>
<username>maven账号</username>
<password>maven密码</password>
</server>
<server>
<id>nexus-snapshots-kd</id>
<username>maven账号</username>
<password>maven密码</password>
</server>
</servers>
<servers>
<server>
<id>nexus-kd</id>
<username>maven账号</username>
<password>maven密码</password>
</server>
<server>
<id>nexus-releases-kd</id>
<username>maven账号</username>
<password>maven密码</password>
</server>
<server>
<id>nexus-snapshots-kd</id>
<username>maven账号</username>
<password>maven密码</password>
</server>
</servers>
- mirrors 部分
<mirrors>
<mirror>
<id>nexus-kd</id>
<mirrorOf>*</mirrorOf>
<name>Nexus for Kingdom</name>
<url>http://10.200.0.5:8081/repository/public</url>
</mirror>
</mirrors>
<mirrors>
<mirror>
<id>nexus-kd</id>
<mirrorOf>*</mirrorOf>
<name>Nexus for Kingdom</name>
<url>http://10.200.0.5:8081/repository/public</url>
</mirror>
</mirrors>
- profiles 部分
<profiles>
<profile>
<id>koca-cd</id>
<repositories>
<repository>
<id>public</id>
<url>http://10.200.0.5:8081/repository/public</url>
<releases><enabled>true</enabled><updatePolicy>always</updatePolicy></releases>
<snapshots><enabled>true</enabled><updatePolicy>always</updatePolicy></snapshots>
</repository>
</repositories>
<pluginRepositories>
<pluginRepository>
<id>public</id>
<url>http://10.200.0.5:8081/repository/public</url>
<releases><enabled>true</enabled><updatePolicy>always</updatePolicy></releases>
<snapshots><enabled>true</enabled><updatePolicy>always</updatePolicy></snapshots>
</pluginRepository>
</pluginRepositories>
</profile>
</profiles>
<activeProfiles>
<activeProfile>koca-cd</activeProfile>
</activeProfiles>
<profiles>
<profile>
<id>koca-cd</id>
<repositories>
<repository>
<id>public</id>
<url>http://10.200.0.5:8081/repository/public</url>
<releases><enabled>true</enabled><updatePolicy>always</updatePolicy></releases>
<snapshots><enabled>true</enabled><updatePolicy>always</updatePolicy></snapshots>
</repository>
</repositories>
<pluginRepositories>
<pluginRepository>
<id>public</id>
<url>http://10.200.0.5:8081/repository/public</url>
<releases><enabled>true</enabled><updatePolicy>always</updatePolicy></releases>
<snapshots><enabled>true</enabled><updatePolicy>always</updatePolicy></snapshots>
</pluginRepository>
</pluginRepositories>
</profile>
</profiles>
<activeProfiles>
<activeProfile>koca-cd</activeProfile>
</activeProfiles>
npm 配置
1.配置 npm 私库:
npm config set registry http://10.200.0.5:8081/repository/npm-group
npm config set sass_binary_site http://cdn.npm.taobao.org/dist/node-sass
npm config set registry http://10.200.0.5:8081/repository/npm-group
npm config set sass_binary_site http://cdn.npm.taobao.org/dist/node-sass
2.配置 npm 登录账号(目前 KOCA 项目中使用的 UI 库和模版库需要具有相关权限的账号)
npm config set always-auth true
npm login # 输入对应的账号、密码、邮箱: xxx/xxx/xxx
npm config set always-auth true
npm login # 输入对应的账号、密码、邮箱: xxx/xxx/xxx
3.查看 npm 配置信息:npm config list
文件结构
解压下载的压缩包: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命令
全新安装
数据库初始化
准备:需要一个已有的空的数据库;
数据库初始化方式可在以下两种方式(flyway执行(推荐),手动执行)任选其一执行即可
flyway执行
下载并安装flyway命令行工具
检查:
flyway -v
(建议使用6.5.7版本操作,其它版本未经测试,可能需要额外的配置或操作)编辑 flyway 配置文件
db/flyway/flyway.conf
,修改数据库连接:
flyway.url=jdbc:oracle:thin:@127.0.0.1:1521/orclpdb
flyway.user=KOCA_LCP_BIZ
flyway.password=KOCA_LCP_BIZ
flyway.url=jdbc:oracle:thin:@127.0.0.1:1521/orclpdb
flyway.user=KOCA_LCP_BIZ
flyway.password=KOCA_LCP_BIZ
- 进入flyway脚本目录:
cd db/flyway
,执行脚本(以oracle为例):- linux执行:
sh flyway-lcp.sh oracle
- windows执行:
.\flyway-lcp.bat oracle
- linux执行:
注意:flyway脚本执行时要根据选择的数据库跟上对应的参数,目前支持oracle、mysql、mssql、postgresql四种)
手动执行
业务客户端sql脚本由多个模块组成,这里以oracle目录为例展示:cd db/oracle
全量部署所需的 sql 脚本如下:
admin_user/table/all/*.sql
admin_user_permission/table/all/*.sql
admin_paramter/table/all/*.sql
admin-id-generator-seq/table/all/*.sql
admin_front_profile/table/all/*.sql
admin_workflow/table/all/*.sql
admin_file_manage/table/all/*.sql
admin_report/table/all/*.sql
admin_user/data/all/*.sql
admin_user_permission/data/all/*.sql
admin_paramter/data/all/*.sql
admin-id-generator-seq/data/all/*.sql
admin_front_profile/data/all/*.sql
admin_workflow/data/all/*.sql
admin_file_manage/data/all/*.sql
admin_report/data/all/*.sql
lcp-runtime-datasource/table/all/*.sql
lcp-runtime-model/table/all/*.sql
lcp-runtime-page/table/all/*.sql
lcp-runtime-component/table/all/*.sql
lcp-runtime-api/table/all/*.sql
lcp-runtime-common/table/all/*.sql
lcp-runtime-general-page/table/all/*.sql
admin_user/table/all/*.sql
admin_user_permission/table/all/*.sql
admin_paramter/table/all/*.sql
admin-id-generator-seq/table/all/*.sql
admin_front_profile/table/all/*.sql
admin_workflow/table/all/*.sql
admin_file_manage/table/all/*.sql
admin_report/table/all/*.sql
admin_user/data/all/*.sql
admin_user_permission/data/all/*.sql
admin_paramter/data/all/*.sql
admin-id-generator-seq/data/all/*.sql
admin_front_profile/data/all/*.sql
admin_workflow/data/all/*.sql
admin_file_manage/data/all/*.sql
admin_report/data/all/*.sql
lcp-runtime-datasource/table/all/*.sql
lcp-runtime-model/table/all/*.sql
lcp-runtime-page/table/all/*.sql
lcp-runtime-component/table/all/*.sql
lcp-runtime-api/table/all/*.sql
lcp-runtime-common/table/all/*.sql
lcp-runtime-general-page/table/all/*.sql
执行方式一:将这些 sql 脚本按照上述指定顺序复制到对应数据库中执行,即可完成数据初始化;
执行方式二:先借助工具将多个模块的sql合并为一个,再执行
- 进入sql合并工具目录:
cd db/sqlmigrate
- 有关工具详细说明,参考:sqlmigrate
- 也可以参考:http://koca.szkingdom.com/forum/t/topic/913
- 执行sql合并:
java -jar sql-migrate.jar -c all-migrate.conf -d oracle
,参数解释如下:-d oracle
: 代表数据库类型,支持mssql/mysql/oracle/postgresql,不写默认oracle
- 执行完成后,得到全量sql文件:
all.sql
- 在数据库中执行:
all.sql
脚本即可
构建及运行
后端
进入后端目录:
cd lcp-runtime-bootapp
编辑配置文件:
src/main/resources/config/application-prod.yml
,按需修改数据库连接信息:
配置项如下:
koca:
jdbc:
default-data-sourceId: default
data-sources:
- id: default
pool:
url: jdbc:oracle:thin:@127.0.0.1:1521/orclpdb
username: KOCA_LCP_BIZ
password: KOCA_LCP_BIZ
initialSize: 5
minIdle: 10
maxActive: 30
maxWait: 60000
koca:
jdbc:
default-data-sourceId: default
data-sources:
- id: default
pool:
url: jdbc:oracle:thin:@127.0.0.1:1521/orclpdb
username: KOCA_LCP_BIZ
password: KOCA_LCP_BIZ
initialSize: 5
minIdle: 10
maxActive: 30
maxWait: 60000
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 进程
前端
进入前端目录:
cd lcp-runtime-web
创建工程:
- linux:
sh create-web.sh
- windows: 双击
create-web.bat
- linux:
等待前端工程创建完成;进入创建好的工程:
cd lcp-web
打包:
pnpm build
(此过程可能需要十几分钟)打包完成后会在当前工程目录下生成打包文件:
dist
nginx 配置
- 编辑 nginx 配置文件:
nginx-config/lcp-biz.conf
,修改前端静态资源目录:
location / {
# 此处的路径修改为前端项目目录下的dist目录
root /opt/lcp-standalone/lcp-web/dist;
index index.html index.html;
autoindex on;
autoindex_exact_size on;
autoindex_localtime on;
client_max_body_size 100m;
}
location / {
# 此处的路径修改为前端项目目录下的dist目录
root /opt/lcp-standalone/lcp-web/dist;
index index.html index.html;
autoindex on;
autoindex_exact_size on;
autoindex_localtime on;
client_max_body_size 100m;
}
- 应用 nginx 配置文件,默认情况下:打开 nginx 配置文件(在 nginx 安装目录下的
conf/nginx.conf
),在 http 模块加入以下配置:
http {
# 值应该为lcp-app安装目录下的nginx配置文件全路径
# 如果是windows环境,则应该以盘符开头,例如:D:/opt/app/lcp-standalone/nginx-config/lcp-biz.conf
include /opt/application/lcp-standalone/nginx-config/lcp-biz.conf;
}
http {
# 值应该为lcp-app安装目录下的nginx配置文件全路径
# 如果是windows环境,则应该以盘符开头,例如:D:/opt/app/lcp-standalone/nginx-config/lcp-biz.conf
include /opt/application/lcp-standalone/nginx-config/lcp-biz.conf;
}
- 重启 nginx,操作示例:
- 先查看nginx进程:
ps -aux | grep nginx
- 如果有nginx进程,则重新加载配置即可:
nginx -s reload
- 如果没有nginx进程,则启动nginx:
nginx
- 先查看nginx进程:
验证是否安装成功
前后端都启动完成后,浏览器访问http://部署到机器ip:4010
;默认登录的用户名密码为:admin/123456
;
已有项目集成
前提
后端:由于后端项目属于 koca 项目,所以已有项目需要是 koca 项目,否则可能导致集成失败;
前端:由于前端项目是基于 kc 脚手架,所以已有项目需要是 kc 创建的项目,否则可能导致集成失败;
版本:由于数据库脚本、后端接口、前端的版本是一一对应的,不同版本不兼容;所以此处统一限定版本为:5.0.1;如果版本不是 5.0.1,请先升级
初始化数据库
一、数据库初始化:对于已有的项目,本项目的依赖项则可能已经集成,已经集成的模块的 sql 脚本则无需重复执行,依赖详情如下:
admin_user:基础管理-用户管理模块
admin_user_permission:基础管理-用户权限模块
admin_paramter:基础管理-参数管理模块
admin-id-generator-seq:id 生成器模块
admin_front_profile:前端配置模块
admin_workflow:流程管理模块
admin_file_manage:文件管理模块
admin_report:报表引擎模块
上述模块根据项目实际依赖情况选择性执行;执行方式按已有系统原有方式执行即可;
二、初始化低码模块 sql,低码模块也是由几个子模块构成,具体如下:
lcp-runtime-common:公共模块
lcp-runtime-datasource:数据源管理
lcp-runtime-model:模型管理
lcp-runtime-component:组件管理
lcp-runtime-page:页面管理
lcp-runtime-api:接口设计管理
上述子模块可能有些项目已经集成了一部分,根据项目实际集成情况选择性执行;执行方式按已有系统原有方式执行即可;
后端集成
- 添加 pom 依赖:
<dependency>
<groupId>com.szkingdom.koca.lcp</groupId>
<artifactId>lcp-runtime-agent-starter</artifactId>
<!-- x.x.x代表当前版本号 -->
<version>x.x.x</version>
</dependency>
<dependency>
<groupId>com.szkingdom.koca.lcp</groupId>
<artifactId>lcp-runtime-agent-starter</artifactId>
<!-- x.x.x代表当前版本号 -->
<version>x.x.x</version>
</dependency>
由于本项目需要集成业务系统的菜单功能,要实现与业务系统菜单的对接,就需要有统一的菜单接口规范;本项目默认使用 koca 菜单,并提供 koca 菜单的默认实现类,如果业务系统也使用 koca 菜单,则无需此步骤,否则请参考菜单扩展自行实现;
编译并运行业务系统
后端配置项
- 配置文件位置:
lcp-runtime-bootapp/src/main/resources/application.yml
lcp-runtime-bootapp/src/main/resources/config/application-prod.yml
lcp-runtime-bootapp/src/main/resources/application.yml
lcp-runtime-bootapp/src/main/resources/config/application-prod.yml
权限验证配置(用于 lcp-app 访问本业务客户端的权限验证):
koca.lcp.agent.auth.enable
: 是否开启权限验证,默认开启koca.lcp.agent.auth.username
: 权限验证账号,默认:adminkoca.lcp.agent.auth.password
: 权限验证密码,默认:123456
前端集成
- 进入已有的前端项目,添加低码模块:
kc add
选择低码模块:
- lcp-runtime-page
- lcp-workflow
- admin-report
版本选择:参考前提
将初始化脚本(位于
lcp-standalone/lcp-runtime-web/*-init.sh
目录下)拷贝到当前项目目录下,然后执行初始化脚本:linux:
sh add-web-init.sh
windows: 双击
add-web-init.bat
编译并运行业务系统
验证
业务客户端安装完成后,就可以在 lcp-app 中添加并使用了,参考创建应用
常见问题
已有项目集成时,后端服务编译或启动阶段报错:
java.lang.ClassNotFoundException: com.szkingdom.koca.lcp.xxx.Xxx
- 该问题是集成前没能保持版本一致导致的,请确认项目koca版本与低码版本保持一致
- 有些项目可能引入过部分低码模块,请确保这部分模块也要与当前低码版本保持一致,如果没有,则忽略,这部分模块具体如下:
xml<dependencies> <!-- 请确保这些模块:如果有,则保持版本与当前版本一致;如果没有,则忽略 --> <dependency> <groupId>com.szkingdom.koca.lcp</groupId> <artifactId>lcp-runtime-common</artifactId> </dependency> <dependency> <groupId>com.szkingdom.koca.lcp</groupId> <artifactId>lcp-runtime-page</artifactId> </dependency> <dependency> <groupId>com.szkingdom.koca.lcp</groupId> <artifactId>lcp-runtime-datasource</artifactId> </dependency> <dependency> <groupId>com.szkingdom.koca.lcp</groupId> <artifactId>lcp-runtime-component</artifactId> </dependency> <dependency> <groupId>com.szkingdom.koca.lcp</groupId> <artifactId>lcp-runtime-model</artifactId> </dependency> <dependency> <groupId>com.szkingdom.koca.lcp</groupId> <artifactId>lcp-runtime-api</artifactId> </dependency> </dependencies>
<dependencies> <!-- 请确保这些模块:如果有,则保持版本与当前版本一致;如果没有,则忽略 --> <dependency> <groupId>com.szkingdom.koca.lcp</groupId> <artifactId>lcp-runtime-common</artifactId> </dependency> <dependency> <groupId>com.szkingdom.koca.lcp</groupId> <artifactId>lcp-runtime-page</artifactId> </dependency> <dependency> <groupId>com.szkingdom.koca.lcp</groupId> <artifactId>lcp-runtime-datasource</artifactId> </dependency> <dependency> <groupId>com.szkingdom.koca.lcp</groupId> <artifactId>lcp-runtime-component</artifactId> </dependency> <dependency> <groupId>com.szkingdom.koca.lcp</groupId> <artifactId>lcp-runtime-model</artifactId> </dependency> <dependency> <groupId>com.szkingdom.koca.lcp</groupId> <artifactId>lcp-runtime-api</artifactId> </dependency> </dependencies>