系统运维手册
本文档为 设备运维管理系统(ruoyi-plus) 的安装部署、日常运维与常见问题处理总览,供运维、测试与实施人员使用。
专项文档索引:
| 文档 | 说明 |
|---|---|
| Deploy.md | 生产环境 deploy 目录打包与一键部署 |
| deploy/产物更新部署.md | 日常产物编译与发版 |
| APK下载的配置运维手册.md | 官网微信扫码 APK 下载 |
| 版本管理运维手册.md | APP 版本号、发版流程、远程更新与版本 API |
| 三端功能操作流程.md | Web / App / 后端协作流程 |
| 资料Office转PDF转换服务部署运维说明.md | Office 转 PDF 微服务详细运维 |
| 资料Office转PDF预览方案设计.md | Office 预览功能架构设计 |
| App离线数据与缓存清理规则.md | App 本地缓存与清理 |
| App图纸中心本地与云端图页设计.md | App 自建图包与云端图页打开、同步、落盘 |
| App离线登录与用户协议设计.md | App 离线登录、用户协议、首次认证与免费版限额 |
| App操作说明书.md | 移动端操作说明 |
| PUBLIC租户与App自助入会运维说明.md | 公开租户类型、App 自助注册与数据赋权运维 |
| 私有租户管理运维手册.md | 私有租户创建、套餐、合同配额与用户接入全生命周期 |
| App用户与现场运维员权限运维说明.md | App 用户 Web 登录、dms_operator 角色、资源读/写权限与升级脚本 |
| 开发环境启停说明.md | Windows 本地 dev-start / dev-stop / dev-restart 脚本使用 |
| 代码提交说明.md | 三端 Git 提交、推送 GitHub 快速流程 |
一、系统组成与端口
1.1 三端架构
| 端 | 目录 | 默认访问 | 说明 |
|---|---|---|---|
| Web 管理端 | dmsysr-frontend | http://<host>/ | Vue 3 管理后台 |
| 后端 API | dmsysr-backend/jula-admin | 8080 | Spring Boot 业务服务 |
| App 移动端 | DMsysGApp | /api/* 兼容层 | Kotlin + Compose |
生产环境 Web 通过 Nginx 反向代理,API 前缀为 /prod-api/。
1.2 基础组件(deploy 编排)
| 组件 | 默认端口 | 默认账号(生产请修改) |
|---|---|---|
| MySQL | 3306 | root / root |
| Redis | 6379 | 密码 Jula123 |
| MinIO | 9000 / 9001 | Jula / Jula1234 |
| jula-admin | 8080 | 见系统用户表 |
| Nginx | 80 | — |
1.3 可选转换微服务
| 服务 | 端口 | 用途 | 编排路径 |
|---|---|---|---|
| dmsys-cad-converter | 8095 | STEP → GLB 图纸 3D 预览 | dmsysr-backend/script/docker/docker-compose.yml |
| dmsys-office-converter | 8096 | Office → PDF 资料预览 | 同上 |
二、主系统部署
2.1 生产环境(deploy 目录)
详细步骤见 Deploy.md。简要流程:
# 1. 上传 deploy 目录到 Linux 服务器 # 2. 按顺序导入 deploy/sql/ 下脚本到 MySQL ry-vue 库 # 3. 启动 cd deploy chmod +x start.sh ./start.sh
访问:http://<服务器IP>/(管理后台),API:/prod-api/ → 后端 8080。
2.2 开发环境
| 组件 | 启动方式 |
|---|---|
| 一键启停 | 项目根目录 .\dev-start.ps1 -Backend / -Frontend 等(详见 开发环境启停说明.md) |
| 后端 | IDE 或 mvn 运行 jula-admin,profile dev |
| 前端 | cd dmsysr-frontend && pnpm dev(默认 9527) |
| MySQL / Redis / MinIO | 本地或 Docker |
2.3 推荐启动顺序
MySQL → Redis → MinIO → 转换微服务(8095/8096,若启用)→ jula-admin → Nginx / 前端
三、数据库升级
3.1 新装环境
按顺序执行 deploy/sql/ 或 dmsysr-backend/script/sql/ 下脚本,业务表见 04_dmsys.sql。
3.2 存量环境增量升级
| 脚本 | 用途 |
|---|---|
dmsysr-backend/script/sql/dmsys_upgrade_doc_preview.sql | 资料 Office PDF 预览字段(preview_oss_id 等) |
dmsysr-backend/script/sql/dmsys_upgrade_cad_preview.sql | 图纸 CAD 预览字段 |
dmsysr-backend/script/sql/dmsys_upgrade_tenant_contract_quota.sql | 私有租户合同配额:生效时间、图/资/工上限、单文件 MB |
dmsysr-backend/script/sql/dmsys_upgrade_tenant_type.sql | 租户类型 tenant_type、工单 access_mode 与授权表 |
dmsysr-backend/script/sql/dmsys_upgrade_app_operator_role.sql | 全部租户 dms_operator 角色、菜单(含工作台 11901)与 app_user 绑定 |
脚本均为可重复执行设计(部分语句在已升级库上可能报重复列/表,可忽略)。公开租户与 App 自助注册详见 PUBLIC租户与App自助入会运维说明.md;私有租户开租户、合同配额与用户接入详见 私有租户管理运维手册.md;App 用户 Web 权限与 Demo 写保护详见 App用户与现场运维员权限运维说明.md。
mysql -u root -p ry-vue < dmsysr-backend/script/sql/dmsys_upgrade_doc_preview.sql
四、资料/图纸附件上传限制
管理端上传或替换资料、图纸附件时,若文件过大可能导致上传失败。各层限制须保持一致,修改任一层时需同步调整其余层。
4.1 当前默认限制
| 层级 | 配置项 | 默认值 | 配置文件 |
|---|---|---|---|
| 前端校验 | DMS_MAX_UPLOAD_MB | 200 MB | dmsysr-frontend/src/constants/dms-upload.ts |
| 前端 HTTP 超时 | DMS_UPLOAD_REQUEST_TIMEOUT_MS | 10 分钟 | 同上 |
| Spring multipart 单文件 | spring.servlet.multipart.max-file-size | 200 MB | jula-admin/.../application.yml |
| Spring multipart 总请求 | spring.servlet.multipart.max-request-size | 220 MB | 同上 |
| 业务校验 | dmsys.upload.max-file-mb | 200 MB | 同上 |
| Undertow POST 体 | server.undertow.max-http-post-size | 1 GB | 同上 |
| Nginx 请求体 | client_max_body_size | 220m | deploy/nginx/conf/nginx.conf |
| Vite 开发代理超时 | timeout / proxyTimeout | 10 分钟 | dmsysr-frontend/build/config/proxy.ts |
Office PDF 预览转换另有独立上限
dmsys.office.convert.max-file-mb(默认 50 MB)。超过 50 MB 的 Office 文件可以上传成功,但服务端 PDF 转换会失败;需调大该值并同步调整office-converter的MAX_FILE_MB。
4.2 上传失败常见原因
| 现象 | 可能原因 | 处理 |
|---|---|---|
| 小文件正常,大文件超时失败 | 前端 axios 默认仅 10s(已修复为 10 分钟) | 更新前端并重启 pnpm dev |
| 超过约 100MB 失败(生产) | Nginx client_max_body_size 过小(已调整为 220m) | 修改 Nginx 后 nginx -s reload |
| 后端返回「文件大小超过 XX MB」 | 超过 dmsys.upload.max-file-mb 或 Spring multipart 限制 | 按需调大配置并重启后端 |
| 开发环境大文件失败 | Vite 代理超时过短 | 已设置 10 分钟,重启前端 dev |
| HTTP 413 Request Entity Too Large | Nginx 或网关限制 | 调大 client_max_body_size |
4.3 调大上传上限(示例:改为 500MB)
须同步修改以下配置后重启相关服务:
1. 后端 application.yml:
spring: servlet: multipart: max-file-size: 500MB max-request-size: 520MB dmsys: upload: max-file-mb: 500
2. Nginx deploy/nginx/conf/nginx.conf:
client_max_body_size 520m;
3. 前端 dmsysr-frontend/src/constants/dms-upload.ts:
export const DMS_MAX_UPLOAD_MB = 500;
4. 重新构建/部署前端与后端,并重载 Nginx。
4.4 相关实现入口
| 层级 | 路径 |
|---|---|
| 资料上传 API | POST /dmsys/document/{id}/upload |
| 后端业务校验 | DmsDocumentServiceImpl.uploadFile() |
| 全局超限异常 | GlobalExceptionHandler → MaxUploadSizeExceededException |
| 前端上传 API | fetchUploadDocument()(document.ts) |
| 前端上传 UI | document-operate-drawer.vue、document/index.vue |
五、Office 转 PDF 转换服务
资料模块上传 Office 文档(doc/docx/xls/xlsx/ppt/pptx)后,后端异步调用 dmsys-office-converter(端口 8096)生成 PDF 预览。
5.1 快速启动
Docker:
cd dmsysr-backend/script/docker docker compose up -d dmsys-office-converter curl http://127.0.0.1:8096/health # 期望 {"status":"ok"}
命令行(Windows 开发):
# 需安装 LibreOffice 并将 program 目录加入 PATH cd dmsysr-backend\script\office-converter pip install -r requirements.txt uvicorn app:app --host 127.0.0.1 --port 8096
后端配置(application.yml):
dmsys: office: convert: enabled: true converter-base-url: http://127.0.0.1:8096 max-file-mb: 50 timeout-sec: 300
5.2 转换状态
资料表 doc_process_status:NONE / PENDING / READY / FAILED。管理端列表可查看「PDF 预览」列;失败时可调用 POST /dmsys/document/{id}/reconvert 重新转换。
5.3 详细说明
完整安装、systemd 常驻、排障与验证步骤见:
资料Office转PDF转换服务部署运维说明.md
六、CAD 转换服务(简要)
| 项目 | 值 |
|---|---|
| 服务名 | dmsys-cad-converter |
| 端口 | 8095 |
| 功能 | STEP/STP → PreviewBundle(GLB + assembly.json) |
| 配置项 | dmsys.cad.convert.* |
| 源码 | dmsysr-backend/script/cad-converter/ |
cd dmsysr-backend/script/docker docker compose up -d dmsys-cad-converter curl http://127.0.0.1:8095/health
6.1 详细说明
完整安装、Docker / 本机启动、API、排障与验证步骤见:
图纸CAD转换服务部署运维说明.md
七、常见问题排障
7.1 Office 转换 HTTP 422 / Invalid HTTP request
现象:office-converter 日志出现 422 Unprocessable Entity 与 Invalid HTTP request received。
原因:Java HttpClient 默认 HTTP/2,uvicorn 解析异常。
处理:确认 DocConvertServiceImpl 已强制 HttpClient.Version.HTTP_1_1;重启 jula-admin;对失败资料执行「重新转换」。
7.2 Office 转换连接拒绝
处理:启动 office-converter;核对 converter-base-url;检查防火墙 8096 端口。
7.3 资料上传失败(非超限)
- 检查 MinIO/OSS 是否可达(
dmsys.upload.use-oss) - 查看
jula-admin日志中DmsFileStorageService相关错误 - 本地降级目录:
./uploads/dmsys/{tenant}/document/{id}/
7.4 App 无法同步资料
- 确认后端
/api/sync可访问且 Token 有效 - 检查资料授权(
access_mode/dms_equipment_doc_grant) - 弱网环境:按分类同步或打开详情触发附件下载
7.5 生产环境修改配置后未生效
| 组件 | 操作 |
|---|---|
| jula-admin | 重启 Java 进程或 Docker 容器 |
| Nginx | nginx -s reload 或重启容器 |
| 前端静态资源 | 重新 pnpm build 并部署 nginx/html |
| office-converter | 重启服务或 docker compose restart |
八、配置速查表
| 配置路径 | 关键项 | 默认值 |
|---|---|---|
application.yml | spring.servlet.multipart.max-file-size | 200MB |
application.yml | dmsys.upload.max-file-mb | 200 |
application.yml | dmsys.upload.use-oss | true |
application.yml | dmsys.office.convert.converter-base-url | http://127.0.0.1:8096 |
application.yml | dmsys.office.convert.max-file-mb | 50 |
application.yml | dmsys.cad.convert.converter-base-url | http://127.0.0.1:8095 |
deploy/nginx/conf/nginx.conf | client_max_body_size | 220m |
dms-upload.ts | DMS_MAX_UPLOAD_MB | 200 |
office-converter 环境变量 | MAX_FILE_MB | 50 |
office-converter 环境变量 | CONVERT_TIMEOUT_SEC | 300 |
九、日志位置
| 组件 | 日志 |
|---|---|
| jula-admin | deploy/data/server/logs/ 或 IDE 控制台 |
| Nginx | deploy/data/nginx/log/ |
| office-converter(Docker) | docker compose logs dmsys-office-converter |
| office-converter(命令行) | 终端标准输出 |
| App | Android Logcat,过滤 com.jula |
十、日常巡检清单
- MySQL / Redis / MinIO 容器或进程运行正常
-
curl http://127.0.0.1:8080或健康检查端点可达 - 管理后台可登录,资料列表可加载
- office-converter
GET /health返回 ok(若启用 Office 预览) - cad-converter
GET /health返回 ok(若启用 3D 预览) - 磁盘空间:
uploads/dmsys、MinIO 数据目录、MySQL 数据目录 - 抽查上传 10MB+ 资料附件是否成功
- 抽查 Office 资料 PDF 预览状态为 READY
文档版本:v1.0 | 随系统功能迭代更新,专项细节以各子文档为准

