# 应用导出源码并部署

本文档提供将提供以下说明:应用导出源码后,如何部署到服务器中。

注: 下述文档中{xxxxx}花括号包起来的部分均指代变量,需要在执行时自行替换。

# 源码下载

  1. 以应用开发者帐号登录低代码平台。

  2. 创建、编辑应用并成功发布应用。

    建议导出源码前先验证发布成功,否则将实时生成代码导出可能会比较慢。

  3. 进入应用详情页面单击导出应用,在导出应用并部署弹框中选择导出方式源码

    导出方式暂时只支持前后端一起导出,建议选择成功发布过应用的环境。

  4. 上述步骤完成之后浏览器会下载一个压缩包到本地,解压压缩包即可得到相关源码。

# 部署步骤

# 修改配置文件

下载的源码配置默认和所选环境(开发或生产)一致,独立部署时一般需要修改部分配置项,其中开发环境对应的配置文件为/src/main/resources/application-dev.yml生产环境对应的配置文件为/src/main/resources/application-online。下面列出几个常见的需要修改的配置项:

  • spring.datasource.url:数据库地址。

  • spring.datasource.username:数据库账号。

  • spring.datasource.password:数据库密码。

  • lcp.upload.sinkType:文件上传保存的文件系统类型(目前支持local/s3)。

  • lcp.upload.sinkPath:文件上传本地文件系统保存的主目录。

  • lcp.upload.s3Address:文件上传s3对象存储服务地址。

  • lcp.upload.s3AccessKey:文件上传s3对象存储访问秘钥对。

  • lcp.upload.s3SecretKey:文件上传s3对象存储访问秘钥对。

  • lcp.upload.s3Bucket:文件上传s3对象存储bucket名称。

  • lcp.authCenter.enable:是否开发用户中心认证功能,默认true。

  • lcp.nuims:nuims用户中心服务地址。

  • logging.file.path:应用日志输出路径。

当应用中使用了有数报表时还需要修改下述配置项,配置文件位置开发环境对应为/src/main/resources/application-dev.yml,而生产环境对应为/src/main/resources/application-online:

  • lcp.report.host: 有数报表服务地址。
  • lcp.report.tokenKey: 有数报表服务token。
  • lcp.report.domainId: 有数报表所在域ID。
  • lcp.report.projectId: 有数报表所在项目ID。
  • lcp.report.reportIdMap: 有数报表ID在开发环境和目标环境的映射关系。
  • lcp.report.componentIdMap: 有数报表使用的组件ID在开发环境和目标环境的映射关系。

当应用中使用了定时任务时会使用quartz框架,配置文件位置为/src/main/resources/application-quartz.yml,默认将使用默认数据源作为数据库存储,通常该配置文件无需修改。

# 初始化数据库

应用的数据库初始化脚本存放在/src/main/resources/db/{数据库类型}.sql,比如/src/main/resources/db/mysql.sql/src/main/resources/db/oracle.sql

下面以mysql为例:

-- 先建库,这里根据实际情况执行
create database lcap_test;

-- 执行初始化脚本
-- 利用source命令,或者直接粘贴sql执行

source {源码目录}/src/main/resources/db/mysql.sql
1
2
3
4
5
6
7

# 后端源码编译

在应用名目录下,执行下面的maven命令。

mvn clean package -DskipTests
1

# 【可选】前端源码编译

如果选择的是后端代码+前端代码的导出方式,则将得到前端源码,源码为压缩包中的client目录。

前端源码可修改进行二次开发,需要编译后才可使用,可执行如下命令编译(建议使用 node 14+ 版本)。 安装项目依赖需执行命令:

npm install --legacy-peer-deps
1

本地运行前端项目:

  • 项目运行之前需要先启动本地后端服务,并在 client/vue.config.js文件中,将本地接口代理改为 http://localhost:8080 (opens new window)

  • 若前后端项目部署在不同的机器上,则需要将 localhost:8080 替换为部署后端服务的ip或域名。

  • V2.19及之前版本请遵循如下操作方式。
proxy: {
   '/system': {
         target: 'http://localhost:8080', // 后端服务的 ip 或者域名
         changeOrigin: true,
         autoRewrite: true,
   },
   '/api': {
         target: 'http://localhost:8080',
         changeOrigin: true,
         autoRewrite: true,
   },
   '/rest': {
         target: 'http://localhost:8080',
         changeOrigin: true,
         autoRewrite: true,
   },
   '^/gateway/': {
         target: 'http://localhost:8080',
         changeOrigin: true,
         autoRewrite: true,
   },
   '^/gw/': {
         target: 'http://localhost:8080',
         changeOrigin: true,
         autoRewrite: true,
   },
},
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
  • V2.20及之后版本请遵循如下操作方式。
proxy: {
   '/api': {
         target: 'http://localhost:8080',
         changeOrigin: true,
         autoRewrite: true,
   },
   '/rest': {
         target: 'http://localhost:8080',
         changeOrigin: true,
         autoRewrite: true,
   },
   '^/gateway/': {
         target: 'http://localhost:8080',
         changeOrigin: true,
         autoRewrite: true,
   },
   '^/gw/': {
         target: 'http://localhost:8080',
         changeOrigin: true,
         autoRewrite: true,
   },
},
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
npm run serve
1

将前端项目编译成静态资源需执行命令。

npm run build
1
  • 执行成功后,client/dist/目录中将会生成构建产物 ,后续可根据需求自行部署到服务器上。

# 应用打包

应用打包可以有多种方式,下面介绍常见的jar打包和docker镜像打包两种。

  • jar打包

    执行上述编译命令在{应用目录}/target目录下将生成{应用名}-1.0-SNAPSHOT.jar的jar包,即为可独立部署的jar。

    比如应用名test的应用,则对应生成target/test-1.0-SNAPSHOT.jar的jar包。

  • docker镜像打包

    • 成功执行编译命令后在应用目录下执行下述命令。
    docker build -f ./Dockerfile -t {镜像名称} .
    
    1
    • 如果出现类似下面的报错,说明无法访问基础镜像(Dockerfile第一句FROM xxxx),修改基础镜像即可,基础镜像要求jdk1.8,比如openjdk:8u222

      failed to solve with frontend dockerfile.v0: failed to create LLB definition: no match for platform in manifest sha256:53d78cb5b654d2f22045ddc449ad8b4388ad6220395f346b0487fd55fb502bf1: not found
      
      1

# 启动服务

  1. 通过PC电脑上IDE直接运行和调试应用,这种方式则可跳过上述编译和打包步骤直接在IDE中运行。

  2. 通过jar打包启动服务,这种方式通过下面的命令启动服务。

    ## 使用jar内的配置文件
    java -Dspring.active={环境} -jar {jar包名称}
    
    ## 或者将配置文件外挂
    java -jar {jar包名称} --spring.config.location={配置文件绝对路径}
    
    1
    2
    3
    4
    5
  3. 通过docker镜像打包启动服务,这种方式通过下面的命令启动服务。

    docker run --name {自定义容器名称} -p 8080:8080 -d {打包的镜像名称} 
    
    1

# 访问服务

一般访问部署节点的8080端口(默认端口,可修改配置文件)即可,比如服务启动在本机上则可在浏览器访问http://localhost:8080

# 导入数据库数据

您可以按需选择是否需要将低代码平台应用中的数据库数据导入到独立部署环境。若应用是用户私有用户认证,至少需要导入用户和权限相关的数据。

# 操作步骤

本节将以导出低代码应用中用户和权限相关的数据为例,介绍如何导出应用数据。

  1. 进入应用详情页基本信息选项卡,点击登录访问对应环境的数据库WebSQL。

    image-20230608144447090

  2. 点击导出按钮,然后点击添加任务按钮。

    image-20230504102458641

  3. 在弹窗中搜索"LCAP"并全选搜索结果,点击确定。

    image-20230504104258442

  4. 将导出的数据使用SQL等方式导入到目标数据库中。

# 常见问题与解决方案

# 缺少nos相关的二方包

问题现象

部署过程中出现类似如下图所示报错:

[ERROR] Failed to execute goal on project parkcoachmanage: Could not resolve dependencies for project com.neteaseOfficial.parkcoachmanage:parkcoachmanage:jar:1.Ø-SNAPSHOT: Failure to find com.netease.cloud:nos-sdk-java:jar:1.2.6 in http://maven.aliyun.com/nexus/content/groups/public/ w as cached in the local repository, resolution will not be reattempted until the update interval of alimaven has elapsed or updates are forced - [Help 1]

image-20230207172921421

问题原因

缺少nos相关的二方包。

解决方案

下载nos-sdk.zip并执行压缩包内的install.sh(linux或mac环境)或install.bat(windows环境)安装二方包。

下载链接 (opens new window)

# 缺少nuims相关的二方包

问题现象

部署过程中出现类似如下图所示报错:

[ERROR] Failed to execute goal on project parkcoachmanage: Could not resolve dependencies for project com.neteaseOfficial.parkcoachmanage:parkc oachmanage:jar:1.0-SNAPSHOT: The following artifacts could not be resolved: com.netease.cloud.nuims:nuims-user-api:jar:l.0.l, com.netease.cloud .nuims:nuims-auth:jar:1.0.2: Failure to find in http://maven.aliyun.com/nexus/content/groups/p ublic/ was cached in the local repository, resolution will not be reattempted until the update interval of alimaven has elapsed or updates are forced -> [Help 1]

image-20230207173012695

Dependency 'com.netease.cloud.nuims:nuims-user-api:1.O.1' not found

image-20230207173024539

问题原因

出现类似报错是因为缺少nuims相关的二方包。

解决方案

下载nuims-jars.zip并执行压缩包内的install.sh(linux或mac环境)或install.bat(windows环境)安装二方包。

下载链接 (opens new window)

# 缺少流程相关的二方包

问题现象

部署过程中出现如下报错:

org.flowable:flowable-engine:jar:6.6.0-LOWCODE-1.6.0 is missing

问题原因

出现类似报错是因为缺少流程相关的二方包。

解决方案

根据报错信息提示,下载流程相关二方包,执行压缩包内的install.sh(linux或mac环境)或install.bat(windows环境)安装二方包。

如上述报错中提示1.6.0版本内容缺失,则下载并安装flowable-6.6.0-LOWCODE-1.6.0即可。

上次更新: 2023年06月26日