news 2026/10/24 4:01:50

openEuler + 毕昇 JDK + Tengine:RuoYi Office 国产化部署实战

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
openEuler + 毕昇 JDK + Tengine:RuoYi Office 国产化部署实战

openEuler + 毕昇 JDK + Tengine:RuoYi Office 国产化部署实战

🌐文档地址:https://ruoyioffice.com
👇 文章底部获取源码和演示地址 👇
💬 :17156169080(获取产品咨询)

一套企业管理平台迁入国产软件环境,员工仍然需要打开工作台、填写申请、处理待办。本文以 RuoYi Office 的 openEuler 实验环境为线索,把操作系统、Java 运行环境、Web 接入和国产数据库串成一条能验收的部署链路。

▲ 等距部署空间表达的是软件承载关系:openEuler 提供运行环境,Tengine 接入浏览器请求,毕昇 JDK 运行应用,达梦保存业务与流程数据。

引言:部署完成,为什么员工还打不开审批单?

企业采购提出国产化要求时,实施工作很容易被拆成几张互不关联的清单:操作系统装好了,JDK 安
装成功,数据库容器也启动了。每一项都有绿色状态,交付人员却仍可能面对一个白屏的管理端。

原因在于,用户访问的是完整产品链路。浏览器需要取得正确的 JavaScript 文件,请求要到达后端
,后端必须连接正确的 schema,登录后的菜单和权限还要匹配业务页面。

其中任何一段失配,都不能靠另一层“服务已启动”来证明交付完成。

局部成功尚未回答的问题用户看到的结果
Java 命令可执行版本与应用依赖是否匹配服务可能起不来
首页返回 HTTP 200JavaScript 是否被当成 HTML 返回页面白屏
数据库端口能连接schema、账号、初始化数据是否正确登录或查询失败
Actuator 返回 UP菜单、权限和流程资源是否齐全工作台能开,单据打不开
管理员能登录代表业务能否提交并回写状态审批链路中断

本文采用的验收主线是:浏览器入口 → 企业工作台 → 用印申请 → 流程结果。安装动作服务于
这条主线,组件名称也能对应到具体职责。

一、先看员工在国产环境中使用什么

RuoYi Office 的 PC 管理端是 Vue3 Web 应用。员工从浏览器进入工作台,查看待办,打开 OA 业
务表单;审批人从待办详情查看申请内容和审批轨迹。

对用户来说,更换服务器操作系统和数据库不会产生另一套办公流程。菜单、表单、权限和审批模型
仍属于同一个产品。

1. 工作台是部署结果的第一个产品入口

▲ 既有开发环境工作台截图,用于展示产品入口;本图不是 openEuler 或达梦实测证据。国产环境结论见下文实验记录。

工作台能加载,至少说明浏览器资源、路由、后端认证和部分数据查询已经连通。它仍然只是第一层
产品验证,因为工作台不一定涉及流程引擎写入和业务回调。

接下来应选一张字段足够完整的业务单据,把日期、中文、关联数据和流程状态带进验收。

2. 表单比空白列表更能暴露部署问题

▲ 既有开发环境用印表单,展示印章、用章时间、文件信息和业务事由;用于说明部署后的字段检查点。

用印申请涉及基础资料、人员部门、日期时间和流程变量。页面是否能完整打开、字段是否显示正确
,比查看一张没有数据的列表更有判断价值。

这里应区分“打开表单”和“成功提交”。前者偏重查询与前端渲染,后者会触发主键生成、业务写入和
流程创建。

3. 详情与轨迹让验证走到业务结果

▲ 既有开发环境用车审批详情,展示单据与流程上下文;这是产品页面示例,历史国产库闭环结果来自 2026 年 9 月实验记录。

产品检查点对应软件链路建议观察内容
打开工作台Tengine → 后端 → 数据库 / Redis登录身份、菜单、待办
打开用印表单管理端 → 业务接口中文、时间、基础资料
发起流程业务服务 → Flowable → 数据库单号、实例关联、任务产生
查看已办详情业务表与流程历史查询审批结果、轨迹、回写状态

这些页面共同构成部署验收,不应只用首页截图代替。

二、openEuler 上的四层软件职责

实验室采用 VMware x86_64 虚拟机,实际安装 openEuler 24.03 LTS SP2。它提供的是可复建的软
件环境,不能延伸为某款国产 CPU 已完成适配的结论。

1. openEuler 承载应用运行条件

操作系统需要提供稳定的目录、权限、服务管理、网络和运行库。对 Java 应用而言,“Linux 都一
样”不能替代环境核对:数据库介质、JDK 架构和系统库都必须匹配。

实验目录把应用、静态文件、日志和数据库数据分开。这样更新应用包时,不会把数据库数据目录当
成待替换的程序文件。

资产实验室路径或位置生命周期
后端 JAR/data/ruoyi-office/app/随应用版本更新
前端静态资源/data/ruoyi-office/web/current/与后端版本配套
环境参数/etc/ruoyi-office/*.env随目标环境管理
应用日志/data/ruoyi-office/logs/按保留策略归档
数据库数据目录独立数据库目录随数据备份与恢复

2. 毕昇 JDK 负责运行应用

实验室验证的是 BiSheng JDK 17.0.19。应用由 Java 17 构建和运行,切换 JDK 发行版时还需要核
对堆配置、编码、证书以及第三方本地依赖。

已有安装脚本优先尝试系统软件包;包不可用时,从指定镜像源下载对应架构压缩包,并校验 SHA-2
56。下载成功与校验成功是两个动作,后者用于保证介质来源与内容一致。

也不能只看到/usr/bin/java存在就断言正在使用毕昇。原脚本在已有 Java 时会跳过安装,因
此现场应实际执行java -version,核对发行版和版本号。

3. Tengine 提供浏览器接入

Tengine 3.1.0 服务前端静态文件,并将/admin-api/请求反向代理到后端。前端页面与业务 AP
I 共用访问入口,员工无需知道后端监听端口。

JavaScript、CSS 和图片应命中静态资源位置;业务请求应命中 API 代理。两者都返回 200,也不
意味着内容正确。

一个常见错误是:不存在的 JavaScript 路径被 SPA 回退规则返回index.html。浏览器随后把 H
TML 当作脚本解析,表现为白屏或 MIME 类型错误。

因此验收应查看请求的内容类型,静态资源应返回对应类型,不能只统计响应码。

4. 达梦保存业务与流程数据

DM8 实验环境使用独立数据库运行时,业务 schema 为RUOYI_OFFICE。应用通过专用 JDBC 驱动
连接,数据库端口绑定本机回环地址。

Redis 保留为会话与缓存兼容基线。使用 openEuler、毕昇、Tengine 和达梦,不会自动把 Redis、
Spring Boot 内嵌容器或其他依赖变成国产替代产品。

层级本次已验证组件需要另行验证的替代方案
操作系统openEuler银河麒麟、统信 UOS 指定版本
Java毕昇 JDK 17其他指定 JDK 17 发行版
Web 接入TengineTongWeb / BES 等目标形态
数据库达梦 DM8、openGauss人大金仓等目标实库
缓存Redis 7.2.11国产 Redis 协议兼容缓存

尤其要区分反向代理与 Java 应用服务器。把 Tengine 换成或增加某个接入组件,并不等于已经完
成 TongWeb / BES 的 WAR 部署。

三、把软件安装收束成可复用部署资产

1. 固定资产关系,减少“这台机器能跑”的偶然性

▲ 部署资产的逻辑关系图,不是平台新增数据库表:同一套应用包读取环境参数,连接目标数据库,并通过接入配置服务用户。

真正需要维护的不是一串安装命令,而是应用包、环境参数、数据库初始化包和服务单元之间的配套
关系。

同一后端包可以包含多个数据库驱动;最终连接哪个数据库,由启用的 Profile、JDBC URL、账号及
schema 共同决定。

决策点当前方案取舍
部署形态Spring Boot 单体先降低组件组合与联调成本
应用与参数JAR 与环境文件分离同包部署,参数随环境变化
服务管理systemd 实例单元固定用户、工作目录和启动命令
数据库端口回环监听单机环境由应用间接提供访问
数据库建表交付 SQL 初始化避免引擎启动时隐式变更结构

2. 用 systemd 固定应用启动方式

下面是现有服务单元摘录。它把数据库环境名称同时映射到环境文件和 Spring Profile,减少“文件
改了,启动参数仍是旧库”的失配。

[Unit] Description=RuoYi Office (%i database) After=network-online.target tengine.service opengauss.service redis.service Wants=network-online.target [Service] Type=simple User=roadmin Group=roadmin WorkingDirectory=/data/ruoyi-office/app EnvironmentFile=/etc/ruoyi-office/%i.env ExecStart=/usr/bin/java -Xms${JAVA_XMS} -Xmx${JAVA_XMX} -Dfile.encoding=UTF-8 -jar /data/ruoyi-office/app/yudao-server.jar --spring.profiles.active=prod,xinchuang-%i SuccessExitStatus=143 Restart=on-failure RestartSec=10 LimitNOFILE=65535

%i表示实例名称。例如启动ruoyi-office@dm8时,会读取dm8.env,并激活
prod,xinchuang-dm8。

服务单元的After主要约束启动顺序,不能证明数据库已经接受连接。实际部署还要检查数据库
运行状态与应用健康。

Restart=on-failure适合处理异常退出,但它不会修复错误密码、缺表或错误 schema。遇到重复
启动失败,应定位首个异常,不应靠连续重启掩盖配置错误。

3. 把接入规则限定到真实请求类型

下面摘取现有 Tengine 配置中页面回退和 API 代理部分。静态资源还有独立前缀处理,部署时要与
前端构建产物的资源路径一起核对。

sendfile on; keepalive_timeout 65; client_max_body_size 100m; location / { try_files $uri $uri/ /index.html; } location /admin-api/ { proxy_pass http://127.0.0.1:48080/admin-api/; proxy_set_header Host $host; proxy_set_header X-Real-IP $remote_addr; proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for; proxy_set_header X-Forwarded-Proto $scheme; proxy_connect_timeout 10s; proxy_read_timeout 120s; }

页面路由刷新需要 SPA 回退,API 请求则必须转发到后端。规则顺序、前端base、资源前缀以及
代理路径共同决定用户能否顺利进入系统。

测试时可以依次打开首页、刷新深层单据路由,再查看一条 API 响应。三种请求都正确,才说明接
入层没有只照顾首页。

4. 用 Profile 固定数据库与流程建表策略

DM8 Profile 的关键配置包括 JDBC、Quartz 和 Flowable。下面是现有配置的连续摘录,使用占位
参数传入密码,文章不提供真实环境密钥。

data:redis:host:${REDIS_HOST:127.0.0.1}port:${REDIS_PORT:6379}database:${REDIS_DATABASE:0}password:${REDIS_PASSWORD:please-change-me}quartz:job-store-type:jdbcjdbc:initialize-schema:neverflowable:database-schema-update:falsedatabase-schema:${FLOWABLE_DATABASE_SCHEMA:RUOYI_OFFICE}mybatis-plus:global-config:db-config:id-type:AUTO

Flowable 的database-schema-update=false与 Quartz 的initialize-schema=never,共同
要求实施人员先交付匹配的初始化结构。

这不是“禁止升级数据库”,而是把数据库升级放到显式、可核对的交付步骤中,避免一次应用重启同
时承担部署和结构变更两种责任。

5. 按可观察顺序验证服务

▲ 先准备数据与参数,再启动服务,最后通过浏览器进入业务;后一步的成功依赖前一步,但健康检查不能替代业务验收。

建议按“数据库可连接 → 应用健康 → 接入资源正确 → 登录 → 代表业务”递进。若工作台正常但流程
提交失败,应定位业务写入或引擎层,而不是重新安装操作系统。

四、部署成功需要什么证据

2026 年 9 月实验记录包含以下结果。数字描述的是当时的软件与数据基线,不是容量指标或生产性
能承诺。

项目实验结果能证明什么
openEuler / 毕昇 / Tengine安装与基础运行通过软件运行环境可用
达梦数据库782 张表、72 个用户记录该基线已导入
达梦应用健康检查 UP应用完成启动
登录成功取得认证结果认证链路可用
用印审批流程 completed,业务状态为 2指定代表流程闭环通过

openGauss 在同一软件环境完成启动、登录、流程发布和用印填报。其本轮最终证据没有覆盖完整审
批,不应因为共用了相同操作系统就自动提升验证等级。

1. 应用包、数据包与参数必须一起归档

现场交付应记录应用版本、前端产物、数据库初始化来源、JDK 与数据库版本。只保存 JAR,很难解
释后续为什么同一个包在另一台机器表现不同。

数据库从 8 月基线初始化,而应用已包含 9 月新增字段时,还需要目标库版本的配套增量。登录成
功只能证明登录使用的表结构齐全,不能证明其他模块也齐全。

2. 快照方便复建,备份承担恢复

VMware 快照适合在实验阶段保留安装节点,但数据库恢复仍需数据库备份与恢复演练。生产运行不
能把宿主机快照视为唯一备份。

应用文件、数据库和上传目录需要不同的保留策略。恢复数据库但没有附件文件,会产生“单据正常
、附件失效”的不一致。

3. 最小验证和扩展验证分开安排

验证层级典型内容后续动作
最小产品链路登录、表单、代表审批判断部署是否具备业务可用性
模块回归合同、财务、HRM、ERP按客户启用范围展开
集成回归文件、邮件、支付、外部模型核对外部服务与网络条件
运行保障备份恢复、监控、容量形成生产运行要求

一次用印流程的通过非常有价值,但它的价值是证明一条具体链路,不是替代所有模块测试。

五、如何把实验方案带到客户现场

客户现场先确认采购的操作系统、CPU 架构、数据库及版本,再选择匹配介质。实验室是 x86_64,A
RM 和 LoongArch 需要对应 JDK、数据库与本地组件介质。

接着核对客户启用的业务模块,选择一条代表流程。对有公文、附件预览或在线编辑需求的客户,补
上相应文件与办公组件验收。

最终交付应让实施人员能够回答四个问题:入口在哪里,应用连接哪个库,初始化包来自哪里,恢复
时要恢复哪些数据。

建议现场按以下顺序操作:

  1. 核对服务器架构与软件版本。
  2. 固定应用、日志、上传与数据库目录。
  3. 安装运行环境并核对实际 Java 版本。
  4. 导入目标库初始化包及配套增量。
  5. 配置环境文件与服务单元。
  6. 启动目标数据库、应用与 Web 接入。
  7. 登录并打开代表表单与流程结果。
  8. 记录版本、观察结果及未覆盖范围。

这份顺序不是为了增加文档数量,而是让另一位实施人员能按相同输入复建环境。

从一台实验机走向客户现场:用一张访问路径卡交接

假设客户使用内网域名访问系统,应用、数据库和 Tengine 部署在同一台服务器。

交接时,实施人员应画出真实访问路径,并为每段保留一个观察点。

浏览器取得静态资源

先打开首页,确认入口 HTML 与构建资源来自同一套前端产物。

再选择一个实际 JavaScript 请求,观察内容类型和响应正文。

若响应是 HTML,问题通常仍在资源路径与接入规则;此时重建数据库没有帮助。

最后刷新一个深层业务路由,确认页面路由回退正常。

这些动作分别覆盖首页、静态资源和 SPA 路由,避免三者共用一个“访问成功”的模糊结论。

应用读取正确参数

核对 systemd 实例名、环境文件名与当前 Profile。

再确认 JDBC URL 指向目标 schema,用户名拥有所需权限。

参数文件存在并不表示实例已经重新读取它。修改参数后,应按照实际部署方式重新加载或重启,并
查看新的启动时间。

对生产环境,不把实验室关闭验证码的设置直接照搬过去。

前后端验证码、租户选择、身份系统参数应以客户批准的认证方案为准。

数据库提供配套业务资产

区分“账号可连接”与“业务 schema 已准备好”。

账号能执行简单查询,只证明一小部分数据库能力。

接着核对代表用户、字典、印章资料和激活流程定义。

最后使用获准测试单据观察完整状态,记录单号与结果。

若只有普通员工无法打开模块,应检查角色与菜单数据,不能把它直接归入数据库连接故障。

观察点最小证据常见定位方向
首页HTML 与构建入口发布目录
脚本类型正确、内容是脚本资源前缀与缓存
API真实业务响应代理路径与后端
登录身份、菜单、组织认证与基础资料
表单字段与关联正常数据基线和契约
流程实例、任务、回写引擎与业务接口

把扩展组件留在它自己的链路上

例如客户需要在线编辑文件,单据审批正常并不能证明编辑器也已完成部署。

需要核对文件访问、编辑器回调与网络地址,避免把内网地址传给无法访问内网的组件。

客户需要地图或外部身份系统时,也应取得对应参数和访问权限。

这类检查依附具体需求,不应让未启用组件成为基础部署的无意义阻断项。

做一次能解释的恢复演练

在获准测试环境,从一份明确备份恢复数据库,并使用配套应用和文件目录进入产品。

记录恢复后的代表单号、附件访问与新增结果。

如果业务单恢复了,附件却打不开,首先核对文件资产有没有包含在恢复范围。

如果历史记录可查,但新增失败,首先核对目标版本的主键与序列。

不要把恢复演练变成“所有页面点一遍”。选取能覆盖身份、历史、关联与新写入的代表路径,信息量
更高。

交接卡应该怎样写

一张实用交接卡至少包含环境组合、应用包身份、数据基线、访问入口、参数位置与恢复资产。

其中密码引用客户的凭据管理位置,不在卡片正文填写真实密钥。

再附上已执行的代表用例及剩余验证项,接手人员就能沿着同一条访问路径复核。

交接问题应能直接找到的答案
当前运行哪个版本应用与前端产物身份
当前连接哪里非敏感 JDBC 信息与 schema
参数在哪里环境文件与服务实例
数据从哪里来初始化资产及增量范围
出错先看哪里当前实例日志与请求路径
恢复要带什么数据库、文件、参数和应用

部署方案写到这里,才从“安装教程”变成可接手的运行方案。

六、快速体验

在线演示:https://ruoyioffice.com/web/

演示账号:admin / admin123。在线环境用于体验产品,不代表当前连接国产数据库。

在“工作台”查看待办,在“OA → 用印管理”打开申请详情,再到流程中心查看已有审批轨迹。先观察
已有单据,可避免为了看页面反复制造测试数据。

本地前端启动命令:

cd ruoyi-office-vben pnpm dev:antd

后端采用 Java 17、单体启动方式。使用国产库前,应完成对应初始化数据和环境参数配置,不能仅
在启动命令上追加 Profile。

常见问题(FAQ)

openEuler 上部署 RuoYi Office,必须采用微服务吗?

不需要。实验室验证采用 Spring Boot 单体。微服务涉及网关、注册配置中心等额外组件,应按实
际规模和交付要求选择。

安装了毕昇 JDK,就能确定应用使用了它吗?

还需核对实际java -version与 systemd 启动使用的 Java 路径。机器存在另一套 Java 时,安
装脚本和替代链接可能使运行版本与预期不同。

Tengine 页面返回 200,可以作为部署通过标准吗?

只能说明该请求有响应。还要核对静态资源类型、API 代理、登录和代表业务,避免 HTML 回退掩盖
错误资源路径。

这套实验说明已经完成全部国产化认证吗?

它提供指定版本的软件工程验证。采购要求中的厂商互认证、国产整机和正式测评,需要对应版本及
厂商流程另行确认。

结语:让每一层软件都能对应到产品结果

openEuler、毕昇 JDK、Tengine 和国产数据库的组合,最终应落到用户可见的工作台、业务表单和
审批结果。

RuoYi Office 的部署资产把应用包、参数与目标数据库分开管理,使国产化方案能够持续复建和验
证。真正有用的交付,不止告诉客户装了哪些软件,也能解释每一层怎样支撑企业办公。

你在国产化项目中最常遇到的是静态资源、数据库初始化,还是流程与业务状态回写问题?这些问题
值得分别建立验收用例。

系列阅读

  • SpringBoot3 + 达梦 DM8:RuoYi Office 用印申请与多级审批实战
  • SpringBoot3 + openGauss:RuoYi Office 登录、流程发布与用印填报适配实战
  • 达梦 DM8 + openGauss:RuoYi Office 的 MySQL 数据转换与导入实践
  • 达梦 DM8、openGauss、人大金仓怎么选?RuoYi Office 国产数据库适配与验收指南
  • openEuler + 达梦 DM8 + openGauss:RuoYi Office 多库部署与运行维护实践

如果这篇对你有用,点个「在看」或收藏。

🌐演示地址:https://ruoyioffice.com/web
📦GitHub 源码:https://github.com/yuqing2026/ruoyi-office
📦Gitee 源码:https://gitee.com/yqzy1688/ruoyi-office
💬微信:17156169080(获取产品咨询)

打开演示地址直接查看系统。

版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/10/24 4:00:46

【达梦】DMDEM部署及实例监控

DMDEM部署说明-详细步骤-DM8达梦数据库 环境介绍 DM 企业管理器的英文全称 DM Enterprise Manager,简称 DEM。DEM 提供一个通过 Web 界面来监控、管理并维护 DM 数据库的集中式管理平台,可以从任何可以访问 Web 应用的位置通过 DEM 来对 DM 数据库进行各…

作者头像 李华
网站建设 2026/10/24 3:57:11

用 A2A 协议打通远程智能体:ADK 多智能体协作实战指南

用 A2A 协议打通远程智能体:ADK 多智能体协作实战指南 【免费下载链接】adk-docs An open-source, code-first toolkit for building, evaluating, and deploying sophisticated AI agents with flexibility and control. 项目地址: https://gitcode.com/GitHub_Trending/ad/…

作者头像 李华
网站建设 2026/10/24 3:55:38

直流电与交流电及电能和电功率

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

作者头像 李华
网站建设 2026/10/24 3:54:09

ai-md - SKILL

name: ai-md description: “Convert human-written CLAUDE.md into AI-native structured-label format. Battle-tested across 4 models. Same rules, fewer tokens, higher compliance.” risk: safe source: community date_added: “2026-03-11” AI.MD v4 — 完整的原生 …

作者头像 李华
网站建设 2026/10/24 3:52:16

Path of Building PoE2 免费Build规划器指南:离线规划天赋树与装备

Path of Building PoE2 免费Build规划器指南:离线规划天赋树与装备 【免费下载链接】PathOfBuilding-PoE2 项目地址: https://gitcode.com/GitHub_Trending/pa/PathOfBuilding-PoE2 Path of Building PoE2 是一款免费的《流放之路2》离线Build规划器&#x…

作者头像 李华