文档说明

将牛刀开发的单体应用/服务,基于前后端源码编译,完全脱离平台独立部署运行。

前置条件

1、 基于牛刀40版本以上的SpringBoot模板,应用有后端数据、服务和前端页面,自完整并且运行正常
注意:应用中不能使用组织、用户、上下文和流程等需要依赖其他服务运行的组件

2、 以本地IDE模式打开,下载本地客户端,启动本地协同服务,点击连接云端,下载全部源码到本地

3、 打开本地IDE,在页面模型页,点击 生成页面源码,生成的页面 React 源码路径为 %JUSTEP_HOME%\model\UI2\pcx-src

4、 在高级页,用数据库管理工具导出数据库初始化脚本,备用

5、 到这里准备工作完成,可以关闭本地IDE的连接,同时关闭本地协同服务

准备数据库

准备一个 mysql,创建数据库,并执行前置条件中导出的数据库脚本,初始化

注意:数据库配置 lower_case_table_names=1 表名不区分大小写,编码选择 utf8

后端编译运行

1、 打开本地IDE自带的 Eclipse,以 mavan 工程加载 model\service\main
2、 执行 Maven clean 和 Maven install
注意:这里需要检查一下 pom.xml,spring-boot-maven-plugin 插件是否有 includeSystemScope=true的配置,如果没有请手动加上

      <plugin>
        <groupId>org.springframework.boot</groupId>
        <artifactId>spring-boot-maven-plugin</artifactId>
        <configuration>
            <includeSystemScope>true</includeSystemScope>
        </configuration>
      </plugin>


3、 在 model\service\main\target 目录下,得到构建后 main.jar
4、 准备一个运行目录(本例为D:\newdao-run),按以下脚本创建批处理文件 copy-model.bat,执行复制本地IDE中构建后的main.jar文件和运行时依赖的模型资源文件,到当前目录下

CHCP 65001 

@ECHO 将本地IDE中构建后的main.jar文件和运行时依赖的模型资源文件,复制到当前运行目录下

:: JUSTEP_HOME 指向本地IDE的根目录
SET JUSTEP_HOME=D:\newdao-ide-windows

COPY %JUSTEP_HOME%\model\service\main\target\main.jar .\main.jar

MD model\service\main
COPY %JUSTEP_HOME%\model\service\main\*.m .\model\service\main\
COPY %JUSTEP_HOME%\model\service\main\project.xml .\model\service\main\

MD model\service\service-meta-info
COPY %JUSTEP_HOME%\model\service\service-meta-info\serviceMetaInfo.json .\model\service\service-meta-info\

@ECHO 复制完成
@PAUSE>NUL

5、 按以下脚本创建批处理文件 run-java.bat,里面的数据库连接参数需要修改为前面准备的数据库

CHCP 65001 

REM 运行后端服务

:: JUSTEP_HOME 指向运行目录
SET JUSTEP_HOME=D:\newdao-run

:: 如果本机没有设置全局JAVA_HOME,请手动指定
:: SET JAVA_HOME=%JUSTEP_HOME%\java\jdk8

:: 默认 JAVA 运行端口 8081,如果改变需要同步修改 NGINX 中的后端路由端口
SET JAVA_PORT=8081
:: 默认 NGINX 运行端口 80,这里需要与 NGINX 的端口保持一致
SET NGINX_PORT=80

SET GATEWAY_SERVICEADDRESS=127.0.0.1
SET GATEWAY_PORT=%NGINX_PORT%

:: 数据库连接参数
SET MAIN_DBPROPERTIES=
SET MAIN_DBHOST=127.0.0.1
SET MAIN_DBPORT=3306
SET MAIN_DBUSER=root
SET MAIN_DBPASSWD=x5
SET MAIN_DBTYPE=mysql
SET MAIN_DBNAME=demo
SET MAIN_DBSCHEMA=demo
SET "DB_CONN_URL_main=jdbc:mysql://%MAIN_DBHOST%:%MAIN_DBPORT%/%MAIN_DBNAME%?user=%MAIN_DBUSER%&useInformationSchema=true&serverTimezone=Asia/Shanghai&useUnicode=true&characterEncoding=UTF-8&characterSETResults=UTF-8"

SET COMP_SN_DBPROPERTIES=%MAIN_DBPROPERTIES%
SET COMP_SN_DBHOST=%MAIN_DBHOST%
SET COMP_SN_DBPORT=%MAIN_DBPORT%
SET COMP_SN_DBUSER=%MAIN_DBUSER%
SET COMP_SN_DBPASSWD=%MAIN_DBPASSWD%
SET COMP_SN_DBTYPE=%MAIN_DBTYPE%
SET COMP_SN_DBNAME=%MAIN_DBNAME%
SET COMP_SN_DBSCHEMA=%MAIN_DBSCHEMA%

SET UAA_DBPROPERTIES=%MAIN_DBPROPERTIES%
SET UAA_DBHOST=%MAIN_DBHOST%
SET UAA_DBPORT=%MAIN_DBPORT%
SET UAA_DBUSER=%MAIN_DBUSER%
SET UAA_DBPASSWD=%MAIN_DBPASSWD%
SET UAA_DBTYPE=%MAIN_DBTYPE%
SET UAA_DBNAME=%MAIN_DBNAME%
SET UAA_DBSCHEMA=%MAIN_DBSCHEMA%

%JAVA_HOME%\bin\java -Dserver.port=%JAVA_PORT% -jar %JUSTEP_HOME%\main.jar

6、 执行批处理,运行后端服务

前端编译运行

1、 按以下脚本创建 compile-ui.bat,执行前端构建

CHCP 65001 

@ECHO 页面 React 源码构建

:: JUSTEP_HOME 指向本地IDE的根目录
SET JUSTEP_HOME=D:/newdao-ide-windows-top

CD %JUSTEP_HOME%/tools/uix-web/scripts/

:: 这里的 pcx 是要构建的端
%JUSTEP_HOME%/node/node.exe %JUSTEP_HOME%/tools/uix-web/scripts/ExportServer.js pcx release --release

@ECHO 构建完成,构建后的前端发布资源在前端源码目录下的 public 目录
@PAUSE>NUL

2、 构建后的前端发布资源目录在 %JUSTEP_HOME%\model\UI2\pcx-src\public
3、 准备一个 nginx,将上面的 public 复制到 nginx 目录下,更名为 pcxapp
4、 修改 nginx/conf/nginx.conf,加入以下配置,其中的 8081 端口为部署的后端服务端口

        # 前端路由
        location /pcxapp {
            absolute_redirect off;
            alias pcxapp/;
            index index.html index.htm;
            try_files $uri $uri/ /pcxapp/index.html;
        }
        # 后端路由
        location /main/dbrest {
            proxy_pass http://localhost:8081/dbrest; 
            proxy_set_header X-MODULE main;
        }
        location /main/dbrest/model {
            proxy_pass http://localhost:8081/dbrest/main/dbrest/model; 
            proxy_set_header X-MODULE main; 
        }
        location /sn {
            proxy_pass http://localhost:8081/sn; 
            proxy_set_header X-MODULE main; 
        }
        location ^~ /main/ {
            proxy_pass http://localhost:8081/main/;
            proxy_set_header X-Real-IP $remote_addr; proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for; proxy_pass_header Server;
            proxy_set_header Host $host;
        }

注意:上面 /sn 的路由配置,用于解决序号组件的请求转发,如果运行中遇到其他后端请求错误,未在上面配置列表中,同样处理即可
提醒:nginx 的配置重新加载命令为 nginx -s reload
5、 运行 nginx,访问地址 localhost/pcxapp,已经可以正常打开页面运行

附录

附件组件

如果用到了附件组件,需要在本地启动一个 MinIO 服务,并进行以下配置
1、 启动 MinIO
. 下载 minio.zip,并解压
. 执行 start-minio.bat,启动 MinIO

CHCP 65001 
@ECHO 启动 MinIO 服务
:: 用户名 
SET MINIO_ACCESS_KEY=admin
:: 密码
SET MINIO_SECRET_KEY=1234abcd
:: 端口为 9001
minio.exe server --address 127.0.0.1:9001 .\data

. 首次运行 MinIO,需要初始化一个 Bucket 存储桶,简单可以执行 init-minio-bucket.bat

CHCP 65001 

:: 创建 minio 服务别名为 myminio
mc alias set myminio http://127.0.0.1:9001 admin 1234abcd

:: 在 myminio 下创建存储桶 demo
mc mb myminio/demo


@ECHO MinIO 初始化创建桶成功
@PAUSE>NUL

2、 在 run-java.bat 中增加 MinIO 相关环境变量

SET "MINIO_END_POINT=http://127.0.0.1:9001"
SET MINIO_HOST=127.0.0.1:9001
SET MINIO_ACCESS_KEY=admin
SET MINIO_SECRET_KEY=1234abcd
SET MINIO_BUCKET=demo

3、 在 nginx/conf/nginx.conf 中加入附件组件相关路由配置

        location /storage {
            proxy_pass http://localhost:8081/storage; 
            proxy_set_header X-MODULE main; 
            # X-Tenant-Key 对应 MinIO 的 Bucket
            proxy_set_header X-Tenant-Key demo; 
        }

4、 配置完成

Excel 导入导出组件

Excel导入导出组件依赖了 migrate 数据管理工具,需要在运行目录中包含相关工具,并进行以下配置
1、 在运行目录下创建 tools 目录,并从本地IDE的 tools 目录下将 migrate 和 git 两个目录复制过来
2、 在运行目录下创建 conf 目录,目录中按以下脚本创建 env.sh,由这个脚本为 migrate 提供 数据库 和 MinIO 的环境变量

export MIGRATE_MODE=leagcy
export DB_DRIVER_CLASS_NAME=com.mysql.cj.jdbc.Driver
export DB_USERNAME=root
export DB_PASSWORD=x5
export DB_URL="jdbc:mysql://127.0.0.1:3306/demo?user=root&useInformationSchema=true&serverTimezone=Asia/Shanghai&useUnicode=true&characterEncoding=UTF-8&characterSETResults=UTF-8"
export DB_SCHEMA=demo

export MINIO_URL="http://127.0.0.1:9001"
export MINIO_ACCESSKEY=admin
export MINIO_SECRET=1234abcd
export MINIO_BUCKET=demo

3、 在 nginx/conf/nginx.conf 中加入 Excel 导入导出组件相关路由配置

        location /excel {
            proxy_pass http://localhost:8081/excel; 
            proxy_set_header X-MODULE main; 
        }

4、 配置完成

results matching ""

    No results matching ""

    results matching ""

      No results matching ""