From 27dc080b22120f5ee078ecdfba0e004ff067489c Mon Sep 17 00:00:00 2001 From: Jiann Lu Date: Thu, 9 Oct 2025 15:34:41 +0800 Subject: [PATCH 1/8] fix: add docs --- docs/zh-CN/handbook/multi-app/index.md | 54 ++++++++++++++++++++++++ docs/zh-CN/handbook/multi-space/index.md | 12 ++++++ 2 files changed, 66 insertions(+) create mode 100644 docs/zh-CN/handbook/multi-app/index.md create mode 100644 docs/zh-CN/handbook/multi-space/index.md diff --git a/docs/zh-CN/handbook/multi-app/index.md b/docs/zh-CN/handbook/multi-app/index.md new file mode 100644 index 0000000000..b3a5e0b99b --- /dev/null +++ b/docs/zh-CN/handbook/multi-app/index.md @@ -0,0 +1,54 @@ +# 多应用 + + + +## 介绍 + +无需单独部署即可动态管理多个应用,每个应用都是独立的实例。 + +:::warning +多应用管理插件并不提供用户共享的能力,可以通过「[认证插件](/handbook/auth)」打通。 +::: + +## 安装 + +预置插件,需要先激活才能使用。 + +![20240327144151](https://static-docs.nocobase.com/20240327144151.png) + +## 使用手册 + +![20240327144327](https://static-docs.nocobase.com/20240327144327.png) + +### 添加应用 + +![20240327150722](https://static-docs.nocobase.com/20240327150722.png) + +### 启动方式 + +提供两种启动方式 + +- 首次访问时启动:当用户通过 URL 首次访问子应用时才启动; +- 随主应用一同启动:当主应用启动时,子应用也一起启动,会增加主应用的启动时长。 + +![20240327170218](https://static-docs.nocobase.com/20240327170218.png) + +### 自定义域名 + +子应用可以通过子路径的方式访问 `/apps/:appName/admin/`,例如: + +```bash +http://localhost:13000/apps/a_7zkxoarusnx/admin/z45sjaukasd +``` + +同时,也可以为子应用配置独立的子域名,需要将域名解析到当前 ip,如果使用了 nginx,也需要在 nginx 配置里添加域名。 + +![20240327170301](https://static-docs.nocobase.com/20240327170301.png) + +### 在菜单上显示 + +:::warning +当前右侧下拉菜单展示的子应用列表只是快捷链接,用户不共享,子应用也需要登录,并且只能主应用 root 账号使用。完整的应用切换能力将在商业插件「[应用切换](//handbook/app-switching)」里提供。 +::: + +![20240327151239](https://static-docs.nocobase.com/20240327151239.png) \ No newline at end of file diff --git a/docs/zh-CN/handbook/multi-space/index.md b/docs/zh-CN/handbook/multi-space/index.md new file mode 100644 index 0000000000..7dbfefd267 --- /dev/null +++ b/docs/zh-CN/handbook/multi-space/index.md @@ -0,0 +1,12 @@ +# 多空间 + + + +## 介绍 + + +## 安装 + + +## 使用手册 + From 00d872ac311afdaf6abdaeab073b3b4d7577b871 Mon Sep 17 00:00:00 2001 From: Jiann Lu Date: Wed, 15 Oct 2025 10:42:09 +0800 Subject: [PATCH 2/8] fix: add space doc --- docs/config/handbook.ts | 20 +++++++++ docs/zh-CN/handbook/multi-app/index.md | 2 +- docs/zh-CN/handbook/multi-space/index.md | 52 +++++++++++++++++++++++- 3 files changed, 72 insertions(+), 2 deletions(-) diff --git a/docs/config/handbook.ts b/docs/config/handbook.ts index 39ec56ab38..1f0ab2b1c7 100644 --- a/docs/config/handbook.ts +++ b/docs/config/handbook.ts @@ -2751,6 +2751,26 @@ export default [ link: '/handbook/multi-app-manager', // children: ['/plugins/api-doc'], }, + { + title: 'Multi-app', + 'title.fr-FR': 'Gestionnaire multi-App', + 'title.zh-CN': '多应用', + 'title.ja-JP': 'マルチアプリ管理', + 'title.ru-RU': 'Мульти-приложение', + // subTitle: '@nocobase/plugin-api-doc', + link: '/handbook/multi-app', + // children: ['/plugins/api-doc'], + }, + { + title: 'Multi-space', + 'title.fr-FR': '', + 'title.zh-CN': '多空间', + 'title.ja-JP': '', + 'title.ru-RU': '-приложение', + // subTitle: '@nocobase/plugin-api-doc', + link: '/handbook/multi-space', + // children: ['/plugins/api-doc'], + }, { title: 'Email manager', 'title.zh-CN': '邮件管理', diff --git a/docs/zh-CN/handbook/multi-app/index.md b/docs/zh-CN/handbook/multi-app/index.md index b3a5e0b99b..1b3c86a373 100644 --- a/docs/zh-CN/handbook/multi-app/index.md +++ b/docs/zh-CN/handbook/multi-app/index.md @@ -1,6 +1,6 @@ # 多应用 - + ## 介绍 diff --git a/docs/zh-CN/handbook/multi-space/index.md b/docs/zh-CN/handbook/multi-space/index.md index 7dbfefd267..490ee9aa71 100644 --- a/docs/zh-CN/handbook/multi-space/index.md +++ b/docs/zh-CN/handbook/multi-space/index.md @@ -1,12 +1,62 @@ # 多空间 - + ## 介绍 +在单一应用实例内部,通过逻辑隔离实现多个独立数据空间。 ## 安装 +![](https://static-docs.nocobase.com/multi-space/Plugin-manager-NocoBase-10-15-2025_09_57_AM.png) ## 使用手册 +#### 多空间管理 + +在插件开启够,进入到 用户与权限 设置页面,切到换到空间面板,就可以管理空间(初始状态下存在内置的 未分配空间标识的条目,在老数据订正时会使用) + +![](https://static-docs.nocobase.com/multi-space/Users-Permissions-NocoBase-10-15-2025_09_58_AM.png) + +点击添加空间按钮,进行空间创建 +![](https://static-docs.nocobase.com/multi-space/Users-Permissions-NocoBase-10-15-2025_09_58_AM%20(1).png) + +选中新建的空间后,可以设置该空间的用户 +![](https://static-docs.nocobase.com/multi-space/Users-Permissions-NocoBase-10-15-2025_09_59_AM.png) + +#### 多空间切换查看 +右上角可以切换有权限的空间,右侧眼睛图标高亮时,可以同时查看多个空间 +![](https://static-docs.nocobase.com/multi-space/Goods-NocoBase-10-15-2025_10_26_AM.png) + +#### 多空间数据管理 + +在开启插件后,进入 collection 创建时,会预置空间字段,包含该字段的表才会被空间管理 +![](https://static-docs.nocobase.com/multi-space/data-source-manager-main-NocoBase-10-15-2025_10_01_AM.png) + +对于已经存在的数据表,可以手动添加空间字段 +![](https://static-docs.nocobase.com/multi-space/data-source-manager-main-NocoBase-10-15-2025_10_03_AM.png) + +对于包含了空间字段的数据表,会包含以下默认逻辑 +1. 创建数据时,会自动关联当前空间 +2. 筛选数据时,会自动关联当前空间 + + +#### 老数据多空间分类 +对于在未开启多空间插件前的数据支持多空间,可以按一下步骤将老数据分类 + +1. 对老的表添加空间字段 +![](https://static-docs.nocobase.com/multi-space/data-source-manager-main-NocoBase-10-15-2025_10_18_AM.png) + +2. 给管理数据的用户,关联到 (Unassigned Space) 空间 +![](https://static-docs.nocobase.com/multi-space/Users-Permissions-NocoBase-10-15-2025_10_14_AM.png) + +3. 切换顶部为所有空间数据查看 +![](https://static-docs.nocobase.com/multi-space/Goods-NocoBase-10-15-2025_10_20_AM.png) + +4. 配置一个新的页面,用户老数据分配,在列表和编辑页面的将空间字段显示出来,用于手动调整空间 +![](https://static-docs.nocobase.com/multi-space/Goods-10-15-2025_10_21_AM.png) +![](https://static-docs.nocobase.com/multi-space/Goods-10-15-2025_10_22_AM.png) + +5. 手动对数据分配空间 + + From ef1e2d1b5749c979f6805a6cbd6ce5eb0090bc59 Mon Sep 17 00:00:00 2001 From: Jiann Lu Date: Wed, 15 Oct 2025 11:09:47 +0800 Subject: [PATCH 3/8] fix: adjust space doc --- docs/zh-CN/handbook/multi-space/index.md | 78 ++++++++++++++++++------ 1 file changed, 58 insertions(+), 20 deletions(-) diff --git a/docs/zh-CN/handbook/multi-space/index.md b/docs/zh-CN/handbook/multi-space/index.md index 490ee9aa71..bb1a80c532 100644 --- a/docs/zh-CN/handbook/multi-space/index.md +++ b/docs/zh-CN/handbook/multi-space/index.md @@ -4,59 +4,97 @@ ## 介绍 -在单一应用实例内部,通过逻辑隔离实现多个独立数据空间。 +**多空间插件**允许在单一应用实例中,通过逻辑隔离实现多个独立的数据空间。 + ## 安装 +在插件管理中找到 **多空间(Multi-Space)** 插件,并启用。 + ![](https://static-docs.nocobase.com/multi-space/Plugin-manager-NocoBase-10-15-2025_09_57_AM.png) + ## 使用手册 -#### 多空间管理 +### 多空间管理 + +启用插件后,进入 **「用户与权限」** 设置页面,切换到 **空间** 面板即可管理空间。 -在插件开启够,进入到 用户与权限 设置页面,切到换到空间面板,就可以管理空间(初始状态下存在内置的 未分配空间标识的条目,在老数据订正时会使用) +> 初始状态下会存在一个内置的 **未分配空间(Unassigned Space)**,主要用于查看未关联空间的老数据。 ![](https://static-docs.nocobase.com/multi-space/Users-Permissions-NocoBase-10-15-2025_09_58_AM.png) -点击添加空间按钮,进行空间创建 +#### 创建空间 + +点击「添加空间」按钮创建新的空间: + ![](https://static-docs.nocobase.com/multi-space/Users-Permissions-NocoBase-10-15-2025_09_58_AM%20(1).png) -选中新建的空间后,可以设置该空间的用户 +#### 分配用户 + +选择已创建的空间后,可在右侧设置该空间所属的用户: + +> **提示:** 空间分配用户后需 **手动刷新页面**,右上角的空间切换列表才会更新显示最新的空间。 + ![](https://static-docs.nocobase.com/multi-space/Users-Permissions-NocoBase-10-15-2025_09_59_AM.png) -#### 多空间切换查看 -右上角可以切换有权限的空间,右侧眼睛图标高亮时,可以同时查看多个空间 + +### 多空间切换与查看 + +在右上角可以切换当前空间。 +点击右侧的 **眼睛图标**(高亮状态)时,可同时查看多个空间的数据。 + ![](https://static-docs.nocobase.com/multi-space/Goods-NocoBase-10-15-2025_10_26_AM.png) -#### 多空间数据管理 +### 多空间数据管理 + +开启插件后,在创建数据表(Collection)时系统会自动预置一个 **空间字段**。 +**只有包含该字段的表,才会被纳入空间管理逻辑中** -在开启插件后,进入 collection 创建时,会预置空间字段,包含该字段的表才会被空间管理 ![](https://static-docs.nocobase.com/multi-space/data-source-manager-main-NocoBase-10-15-2025_10_01_AM.png) -对于已经存在的数据表,可以手动添加空间字段 +对于已有的数据表,可手动添加空间字段以启用空间管理: + ![](https://static-docs.nocobase.com/multi-space/data-source-manager-main-NocoBase-10-15-2025_10_03_AM.png) -对于包含了空间字段的数据表,会包含以下默认逻辑 -1. 创建数据时,会自动关联当前空间 -2. 筛选数据时,会自动关联当前空间 +#### 默认逻辑 + +在包含空间字段的数据表中,系统会自动应用以下逻辑: + +1. 创建数据时,自动关联当前选中空间; +2. 筛选数据时,自动限定为当前选中空间的数据。 + + +### 老数据的多空间分类 + +对于在启用多空间插件之前已存在的数据,可通过以下步骤实现空间归类: +#### 1. 添加空间字段 -#### 老数据多空间分类 -对于在未开启多空间插件前的数据支持多空间,可以按一下步骤将老数据分类 +为旧表手动添加空间字段: -1. 对老的表添加空间字段 ![](https://static-docs.nocobase.com/multi-space/data-source-manager-main-NocoBase-10-15-2025_10_18_AM.png) -2. 给管理数据的用户,关联到 (Unassigned Space) 空间 +#### 2. 分配用户到未分配空间 + +将管理老数据的用户关联至所有空间,需包含 **未分配空间(Unassigned Space)** 以便查看尚未归属到空间的数据: + ![](https://static-docs.nocobase.com/multi-space/Users-Permissions-NocoBase-10-15-2025_10_14_AM.png) -3. 切换顶部为所有空间数据查看 +#### 3. 切换查看所有空间数据 + +在顶部点选查看所有空间的数据: + ![](https://static-docs.nocobase.com/multi-space/Goods-NocoBase-10-15-2025_10_20_AM.png) -4. 配置一个新的页面,用户老数据分配,在列表和编辑页面的将空间字段显示出来,用于手动调整空间 +#### 4. 配置老数据分配页面 + +新建一个页面用于老数据分配,在 **列表页** 和 **编辑页** 中显示「空间字段」,以便手动调整归属空间。 + ![](https://static-docs.nocobase.com/multi-space/Goods-10-15-2025_10_21_AM.png) ![](https://static-docs.nocobase.com/multi-space/Goods-10-15-2025_10_22_AM.png) -5. 手动对数据分配空间 +#### 5. 手动分配数据空间 +通过上述页面,逐步为老数据分配正确的空间。 From 7a74addebbf710ca2acb3782db8d4b9a0f67716f Mon Sep 17 00:00:00 2001 From: Jiann Lu Date: Thu, 16 Oct 2025 10:00:41 +0800 Subject: [PATCH 4/8] fix: adjust space doc --- docs/zh-CN/handbook/multi-space/index.md | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/docs/zh-CN/handbook/multi-space/index.md b/docs/zh-CN/handbook/multi-space/index.md index bb1a80c532..87535c3cf3 100644 --- a/docs/zh-CN/handbook/multi-space/index.md +++ b/docs/zh-CN/handbook/multi-space/index.md @@ -92,9 +92,12 @@ 新建一个页面用于老数据分配,在 **列表页** 和 **编辑页** 中显示「空间字段」,以便手动调整归属空间。 ![](https://static-docs.nocobase.com/multi-space/Goods-10-15-2025_10_21_AM.png) + +调整空间字段为可编辑 + ![](https://static-docs.nocobase.com/multi-space/Goods-10-15-2025_10_22_AM.png) #### 5. 手动分配数据空间 -通过上述页面,逐步为老数据分配正确的空间。 +通过上述页面,手动编辑数据,逐步为老数据分配正确的空间(也可自行配置批量编辑)。 From 27263155e30f17f94e9a4e57e1098956336d280a Mon Sep 17 00:00:00 2001 From: Jiann Lu Date: Thu, 16 Oct 2025 16:50:19 +0800 Subject: [PATCH 5/8] fix: add multi-app --- docs/zh-CN/handbook/multi-app/index.md | 141 +++++++++++++++++------ docs/zh-CN/handbook/multi-space/index.md | 6 +- 2 files changed, 109 insertions(+), 38 deletions(-) diff --git a/docs/zh-CN/handbook/multi-app/index.md b/docs/zh-CN/handbook/multi-app/index.md index 1b3c86a373..9947038fb6 100644 --- a/docs/zh-CN/handbook/multi-app/index.md +++ b/docs/zh-CN/handbook/multi-app/index.md @@ -1,6 +1,6 @@ # 多应用 - + ## 介绍 @@ -10,45 +10,112 @@ 多应用管理插件并不提供用户共享的能力,可以通过「[认证插件](/handbook/auth)」打通。 ::: -## 安装 - -预置插件,需要先激活才能使用。 - -![20240327144151](https://static-docs.nocobase.com/20240327144151.png) - -## 使用手册 - -![20240327144327](https://static-docs.nocobase.com/20240327144327.png) - -### 添加应用 - -![20240327150722](https://static-docs.nocobase.com/20240327150722.png) - -### 启动方式 -提供两种启动方式 - -- 首次访问时启动:当用户通过 URL 首次访问子应用时才启动; -- 随主应用一同启动:当主应用启动时,子应用也一起启动,会增加主应用的启动时长。 - -![20240327170218](https://static-docs.nocobase.com/20240327170218.png) - -### 自定义域名 - -子应用可以通过子路径的方式访问 `/apps/:appName/admin/`,例如: - -```bash -http://localhost:13000/apps/a_7zkxoarusnx/admin/z45sjaukasd -``` +## 安装 -同时,也可以为子应用配置独立的子域名,需要将域名解析到当前 ip,如果使用了 nginx,也需要在 nginx 配置里添加域名。 +在插件管理中找到 多空间(Multi-Space) 插件,并启用。 -![20240327170301](https://static-docs.nocobase.com/20240327170301.png) -### 在菜单上显示 +![](https://static-docs.nocobase.com/multi-app/Plugin-manager-NocoBase-10-16-2025_03_07_PM.png) -:::warning -当前右侧下拉菜单展示的子应用列表只是快捷链接,用户不共享,子应用也需要登录,并且只能主应用 root 账号使用。完整的应用切换能力将在商业插件「[应用切换](//handbook/app-switching)」里提供。 -::: +## 使用手册 -![20240327151239](https://static-docs.nocobase.com/20240327151239.png) \ No newline at end of file +### 子应用管理 + +点击设置菜单中 多应用条目,进入到 多应用 管理页面 +![](https://static-docs.nocobase.com/multi-app/Multi-app-NocoBase-10-16-2025_03_48_PM.png) + +#### 子应用创建 + +点击新增按钮,创建子应用 +![](https://static-docs.nocobase.com/multi-app/Multi-app-NocoBase-10-16-2025_03_50_PM.png) + +表单中部分字段说明 +* 名称为子应用标识,全局唯一 +* 端口为子应用运行时使用的端口 +* 固定到菜单:将子应用的打开入口放置到顶栏左侧 +* 数据库连接 + * 新数据库:使用当前的数据服务,配置独立的数据库, + * 使用新的数据连接:配置独立的数据服务 + * 使用Schema:在PostgreSQL 中创建Schema +* 升级:数据库连接时如果库中已存在老版本的nocobase数据库,将自动升级为当前版本 + + +#### 子应用运行与停止 +点击 start 按钮,运行子应用(如果创建时勾选了 Start on first visit,在首次访问时自动运行) +点击 View 按钮,会打开新的标签页,查看子应用 +![](https://static-docs.nocobase.com/multi-app/Multi-app-NocoBase-10-16-2025_04_00_PM.png) + + +#### 子应用日志查看 +点击 日志 按钮可以查看子应用的运行日志(某些情况下,比如数据库损坏等,子应用运行了,但是无法访问,可以通过这里进行排查 +) +![](https://static-docs.nocobase.com/multi-app/Multi-app-NocoBase-10-16-2025_04_02_PM.png) + +#### 子应用删除 +点击删除按钮可以删除子应用,可以勾选是否删除子应用的数据库(请谨慎操作,该行为不可逆) + +### 子应用访问 +正常情况下,通过cname访问时,子应用的所有数据将通过主应用进行转发,如果想直接访问子应用,可以通过子应用的端口进行访问 + +### 通过命令行管理子应用 + +在项目根目录,可以通过 `yarn nocobase pm2 [commond]` 管理子应用实例,以下是一些常用命令 +- `yarn nocobase pm2 list`: 查看当前运行实例列表 +- `yarn nocobase pm2 stop [appname]`: 停止某个子应用进程 +- `yarn nocobase pm2 delete [appname]`: 删除某个子应用进程 +- `yarn nocobase pm2 kill`: 强制终止所有启动的进程(可能包含主应用的实例) + + +## 常见问题 + +#### 插件管理 +子应用可以使用的插件和主应用一致(包括版本),但是可以独立配置和使用插件 + +#### 数据库隔离 +子应用可以配置独立的数据库,如果想应用之间进行数据共享,可通过外部数据源实现 + +#### 数据备份和迁移 +目前在主应用上数据备份不支持包含子应用的数据(只包含子应用基本信息),需手动对子应用备份和迁移 + +#### 部署与更新 +子应用的版本将自动跟随主应用进行升级,自动保证主子应用版本一致 + +#### 子应用资源占用 +每个子应用的资源占用和主应用基本一致,目前单个实例内存占用在500-600MB左右,单个应用的基础配置为 2C2G。 + + + +我们的使用场景 +我们是一家保险经纪公司,拥有 600 多个客户,需要: +为多个客户部署定制化的应用程序 +确保每个客户之间的数据完全隔离 +为每个客户提供其专属品牌域名 +从一个管理实例集中管理所有客户应用程序 +关于父子架构的问题 +我希望您能就多应用管理器插件的以下方面提供说明: +1. 数据库隔离与架构 +每个子应用可以使用不同的数据库服务器,还是必须与父级共享数据库服务器? +父应用和子应用之间是否存在任何共享的数据库组件或模式? +多个子应用的备份和迁移策略是什么? +2. 资源管理与可扩展性 +一个专业版许可证下可以创建多少个子应用? +运行多个子应用推荐的服务器配置是什么? +是否有我们需要注意的性能基准或限制? +子应用可以分布在多台服务器上进行负载均衡吗? +3. 部署与更新 +我们可以选择性地更新特定的子应用而不影响其他子应用吗? +在将子应用推送到生产环境之前,是否具备暂存/测试功能? +父应用和子应用的插件更新是如何管理的? +4. 高级配置 +我们可以限制哪些插件可用于特定的子应用吗? +不同的子应用可以运行不同版本的 NocoBase 吗? +我们可以为每个子应用设置资源限制(存储、API 调用等)吗? +5. 客户管理 +如果客户以后想完全接管其应用程序的管理,会发生什么? +子应用可以导出/迁移到独立的实例吗? +在保留数据的情况下,我们如何处理客户下线? +需要补充的信息 +多应用管理器在生产环境中是否有任何已记录的限制或已知问题? +是否有公司成功使用此功能进行多客户部署的案例研究? +是否可以安排技术咨询或访问试用环境来测试这种架构? \ No newline at end of file diff --git a/docs/zh-CN/handbook/multi-space/index.md b/docs/zh-CN/handbook/multi-space/index.md index 87535c3cf3..f91dd54a1e 100644 --- a/docs/zh-CN/handbook/multi-space/index.md +++ b/docs/zh-CN/handbook/multi-space/index.md @@ -1,11 +1,15 @@ # 多空间 - + ## 介绍 **多空间插件**允许在单一应用实例中,通过逻辑隔离实现多个独立的数据空间。 +#### 适用场景 +- **多门店或工厂**:。业务流程和系统配置高度一致,例如统一的库存管理、生产计划、销售策略和报表模板,但需要保证每个业务单元的数据互不干扰。 +- **多组织或子公司管理**:集团公司下属多个组织或子公司共用同一平台,但每个品牌有独立的客户、产品和订单数据。 + ## 安装 From 80fdc5d1294399768cd1dd3582a1b84897db9bc6 Mon Sep 17 00:00:00 2001 From: Jiann Lu Date: Thu, 16 Oct 2025 21:07:27 +0800 Subject: [PATCH 6/8] fix: add multi-spp doc --- docs/zh-CN/handbook/multi-app/index.md | 134 +++++++++++-------------- 1 file changed, 61 insertions(+), 73 deletions(-) diff --git a/docs/zh-CN/handbook/multi-app/index.md b/docs/zh-CN/handbook/multi-app/index.md index 9947038fb6..101660a5e3 100644 --- a/docs/zh-CN/handbook/multi-app/index.md +++ b/docs/zh-CN/handbook/multi-app/index.md @@ -1,70 +1,94 @@ -# 多应用 +# 多应用(Multi-App) ## 介绍 -无需单独部署即可动态管理多个应用,每个应用都是独立的实例。 +**多应用插件(Multi-App)** 允许在同一个实例中动态创建和管理多个独立应用,而无需单独部署。 +每个子应用都是完全独立的实例,拥有自己的数据库、插件和配置。 :::warning -多应用管理插件并不提供用户共享的能力,可以通过「[认证插件](/handbook/auth)」打通。 +多应用管理插件本身不提供用户共享能力。 +如需多应用间的用户打通,可结合 **[认证插件](/handbook/auth)** 使用。 ::: +--- ## 安装 -在插件管理中找到 多空间(Multi-Space) 插件,并启用。 - +在插件管理中找到 **多应用(Multi-app)** 插件并启用。 ![](https://static-docs.nocobase.com/multi-app/Plugin-manager-NocoBase-10-16-2025_03_07_PM.png) +--- + ## 使用手册 -### 子应用管理 +### 一、子应用管理 + +在系统设置菜单中点击「多应用」,进入多应用管理页面: -点击设置菜单中 多应用条目,进入到 多应用 管理页面 ![](https://static-docs.nocobase.com/multi-app/Multi-app-NocoBase-10-16-2025_03_48_PM.png) -#### 子应用创建 +--- + +### 二、子应用创建 + +点击「新增」按钮,创建一个新的子应用: -点击新增按钮,创建子应用 ![](https://static-docs.nocobase.com/multi-app/Multi-app-NocoBase-10-16-2025_03_50_PM.png) -表单中部分字段说明 -* 名称为子应用标识,全局唯一 -* 端口为子应用运行时使用的端口 -* 固定到菜单:将子应用的打开入口放置到顶栏左侧 -* 数据库连接 - * 新数据库:使用当前的数据服务,配置独立的数据库, - * 使用新的数据连接:配置独立的数据服务 - * 使用Schema:在PostgreSQL 中创建Schema -* 升级:数据库连接时如果库中已存在老版本的nocobase数据库,将自动升级为当前版本 +#### 表单字段说明 + +* **名称**: 子应用标识,全局唯一 +* **端口**: 子应用运行时使用的端口 +* **固定到菜单**: 将子应用的入口固定在顶部导航栏左侧 +* **数据库连接**: 子应用的数据源配置,支持三种方式:
• **新数据库**:使用当前数据服务,创建独立数据库
• **新的数据连接**:配置全新的数据库连接
• **Schema 模式**:在 PostgreSQL 中使用独立的 Schema +* **升级**: 若数据库中已有旧版本数据,会自动升级到当前版本 + +--- + +### 三、子应用运行与停止 + +点击 **Start** 按钮可启动子应用; +> 如果在创建时勾选了 *“Start on first visit”*,则首次访问时会自动启动。 +点击 **View** 按钮,会在新标签页中打开该子应用。 -#### 子应用运行与停止 -点击 start 按钮,运行子应用(如果创建时勾选了 Start on first visit,在首次访问时自动运行) -点击 View 按钮,会打开新的标签页,查看子应用 ![](https://static-docs.nocobase.com/multi-app/Multi-app-NocoBase-10-16-2025_04_00_PM.png) +--- + +### 四、子应用日志查看 + +点击 **日志(Logs)** 按钮,可查看子应用的运行日志。 +> 若子应用启动后无法访问(如数据库损坏等情况),可通过日志进行排查。 -#### 子应用日志查看 -点击 日志 按钮可以查看子应用的运行日志(某些情况下,比如数据库损坏等,子应用运行了,但是无法访问,可以通过这里进行排查 -) ![](https://static-docs.nocobase.com/multi-app/Multi-app-NocoBase-10-16-2025_04_02_PM.png) -#### 子应用删除 -点击删除按钮可以删除子应用,可以勾选是否删除子应用的数据库(请谨慎操作,该行为不可逆) +--- + +### 五、子应用删除 + +点击 **删除** 按钮可移除子应用。 +> 删除时可选择是否一并删除数据库,请谨慎操作,该操作不可恢复。 + +--- + +### 六、子应用访问 + +默认情况下,通过 **CNAME** 方式访问时,所有子应用的数据请求将通过主应用转发。 +如果希望直接访问子应用,可使用其端口直接访问。 + +--- -### 子应用访问 -正常情况下,通过cname访问时,子应用的所有数据将通过主应用进行转发,如果想直接访问子应用,可以通过子应用的端口进行访问 +### 七、命令行管理子应用 -### 通过命令行管理子应用 +在项目根目录下,可以使用命令行通过 **PM2** 管理子应用实例: -在项目根目录,可以通过 `yarn nocobase pm2 [commond]` 管理子应用实例,以下是一些常用命令 -- `yarn nocobase pm2 list`: 查看当前运行实例列表 -- `yarn nocobase pm2 stop [appname]`: 停止某个子应用进程 -- `yarn nocobase pm2 delete [appname]`: 删除某个子应用进程 -- `yarn nocobase pm2 kill`: 强制终止所有启动的进程(可能包含主应用的实例) +```bash +yarn nocobase pm2 [command] +``` ## 常见问题 @@ -76,46 +100,10 @@ 子应用可以配置独立的数据库,如果想应用之间进行数据共享,可通过外部数据源实现 #### 数据备份和迁移 -目前在主应用上数据备份不支持包含子应用的数据(只包含子应用基本信息),需手动对子应用备份和迁移 +目前在主应用上数据备份不支持包含子应用的数据(只包含子应用基本信息),需手动在子应用内备份和迁移 #### 部署与更新 子应用的版本将自动跟随主应用进行升级,自动保证主子应用版本一致 -#### 子应用资源占用 -每个子应用的资源占用和主应用基本一致,目前单个实例内存占用在500-600MB左右,单个应用的基础配置为 2C2G。 - - - -我们的使用场景 -我们是一家保险经纪公司,拥有 600 多个客户,需要: -为多个客户部署定制化的应用程序 -确保每个客户之间的数据完全隔离 -为每个客户提供其专属品牌域名 -从一个管理实例集中管理所有客户应用程序 -关于父子架构的问题 -我希望您能就多应用管理器插件的以下方面提供说明: -1. 数据库隔离与架构 -每个子应用可以使用不同的数据库服务器,还是必须与父级共享数据库服务器? -父应用和子应用之间是否存在任何共享的数据库组件或模式? -多个子应用的备份和迁移策略是什么? -2. 资源管理与可扩展性 -一个专业版许可证下可以创建多少个子应用? -运行多个子应用推荐的服务器配置是什么? -是否有我们需要注意的性能基准或限制? -子应用可以分布在多台服务器上进行负载均衡吗? -3. 部署与更新 -我们可以选择性地更新特定的子应用而不影响其他子应用吗? -在将子应用推送到生产环境之前,是否具备暂存/测试功能? -父应用和子应用的插件更新是如何管理的? -4. 高级配置 -我们可以限制哪些插件可用于特定的子应用吗? -不同的子应用可以运行不同版本的 NocoBase 吗? -我们可以为每个子应用设置资源限制(存储、API 调用等)吗? -5. 客户管理 -如果客户以后想完全接管其应用程序的管理,会发生什么? -子应用可以导出/迁移到独立的实例吗? -在保留数据的情况下,我们如何处理客户下线? -需要补充的信息 -多应用管理器在生产环境中是否有任何已记录的限制或已知问题? -是否有公司成功使用此功能进行多客户部署的案例研究? -是否可以安排技术咨询或访问试用环境来测试这种架构? \ No newline at end of file +#### 资源管理 +每个子应用的资源占用和主应用基本一致,目前单个应用内存占用在500-600MB左右。 From 5d1d992c19c756986400246ed88bfebb32a22dab Mon Sep 17 00:00:00 2001 From: Jiann Lu Date: Sun, 19 Oct 2025 20:59:34 +0800 Subject: [PATCH 7/8] fix: multi-app-doc --- docs/zh-CN/handbook/multi-app/index.md | 80 ++++++++++++++------------ 1 file changed, 44 insertions(+), 36 deletions(-) diff --git a/docs/zh-CN/handbook/multi-app/index.md b/docs/zh-CN/handbook/multi-app/index.md index 101660a5e3..a52c0e9c41 100644 --- a/docs/zh-CN/handbook/multi-app/index.md +++ b/docs/zh-CN/handbook/multi-app/index.md @@ -7,12 +7,16 @@ **多应用插件(Multi-App)** 允许在同一个实例中动态创建和管理多个独立应用,而无需单独部署。 每个子应用都是完全独立的实例,拥有自己的数据库、插件和配置。 +#### 适用场景 +- **多租户**:提供独立的应用实例,每个客户拥有自己的数据、插件配置和权限体系。 +- **不同业务域的主子系统**:一个大型系统由多个独立部署的小型应用组成 + + :::warning -多应用管理插件本身不提供用户共享能力。 +多应用插件本身不提供用户共享能力。 如需多应用间的用户打通,可结合 **[认证插件](/handbook/auth)** 使用。 ::: ---- ## 安装 @@ -20,90 +24,94 @@ ![](https://static-docs.nocobase.com/multi-app/Plugin-manager-NocoBase-10-16-2025_03_07_PM.png) ---- ## 使用手册 -### 一、子应用管理 + +### 子应用创建 在系统设置菜单中点击「多应用」,进入多应用管理页面: ![](https://static-docs.nocobase.com/multi-app/Multi-app-NocoBase-10-16-2025_03_48_PM.png) ---- - -### 二、子应用创建 - 点击「新增」按钮,创建一个新的子应用: ![](https://static-docs.nocobase.com/multi-app/Multi-app-NocoBase-10-16-2025_03_50_PM.png) #### 表单字段说明 -* **名称**: 子应用标识,全局唯一 -* **端口**: 子应用运行时使用的端口 -* **固定到菜单**: 将子应用的入口固定在顶部导航栏左侧 -* **数据库连接**: 子应用的数据源配置,支持三种方式:
• **新数据库**:使用当前数据服务,创建独立数据库
• **新的数据连接**:配置全新的数据库连接
• **Schema 模式**:在 PostgreSQL 中使用独立的 Schema -* **升级**: 若数据库中已有旧版本数据,会自动升级到当前版本 +* **名称**:子应用标识,全局唯一 +* **显示名称**:子应用在界面中显示的名称 +* **启动方式**: + * **首次访问时启动**:当用户首次通过 URL 访问该子应用时才启动; + * **随主应用一同启动**:在主应用启动时同时启动子应用(会增加主应用启动时间)。 +* **端口**:子应用运行时使用的端口号 +* **自定义域名**:为子应用配置独立的子域名 +* **固定到菜单**:将子应用入口固定显示在顶部导航栏左侧 +* **数据库连接**:用于配置子应用的数据源,支持以下三种方式: + * **新数据库**:复用当前数据服务,创建独立数据库; + * **新的数据连接**:配置全新的数据库服务; + * **Schema 模式**:在 PostgreSQL 中为子应用创建独立的 Schema。 +* **升级**:若连接的数据库中存在旧版本的 NocoBase 数据结构,将自动升级到当前版本。 ---- -### 三、子应用运行与停止 +### 子应用运行与停止 -点击 **Start** 按钮可启动子应用; -> 如果在创建时勾选了 *“Start on first visit”*,则首次访问时会自动启动。 +点击 **q启动** 按钮可启动子应用; +> 如果在创建时勾选了 *“首次访问时启动”*,则首次访问时会自动启动。 -点击 **View** 按钮,会在新标签页中打开该子应用。 +点击 **查看** 按钮,会在新标签页中打开该子应用。 ![](https://static-docs.nocobase.com/multi-app/Multi-app-NocoBase-10-16-2025_04_00_PM.png) ---- -### 四、子应用日志查看 +### 子应用日志查看 -点击 **日志(Logs)** 按钮,可查看子应用的运行日志。 +点击 **日志** 按钮,可查看子应用的运行日志。 > 若子应用启动后无法访问(如数据库损坏等情况),可通过日志进行排查。 ![](https://static-docs.nocobase.com/multi-app/Multi-app-NocoBase-10-16-2025_04_02_PM.png) ---- -### 五、子应用删除 +### 子应用删除 点击 **删除** 按钮可移除子应用。 > 删除时可选择是否一并删除数据库,请谨慎操作,该操作不可恢复。 ---- - -### 六、子应用访问 -默认情况下,通过 **CNAME** 方式访问时,所有子应用的数据请求将通过主应用转发。 -如果希望直接访问子应用,可使用其端口直接访问。 +### 子应用访问 +默认使用 `/_app/:appName/admin/` 访问子应用,例如 +``` +http://localhost:13000/_app/a_7zkxoarusnx/admin/ +``` +同时,也可以为子应用配置独立的子域名,需要将域名解析到当前 ip,如果使用了 nginx,也需要在 nginx 配置里添加域名。 ---- -### 七、命令行管理子应用 +### 命令行管理子应用 在项目根目录下,可以使用命令行通过 **PM2** 管理子应用实例: ```bash -yarn nocobase pm2 [command] +yarn nocobase pm2 list # 查看当前运行实例列表 +yarn nocobase pm2 stop [appname] # 停止某个子应用进程 +yarn nocobase pm2 delete [appname] # 删除某个子应用进程 +yarn nocobase pm2 kill # 强制终止所有启动的进程(可能包含主应用的实例) ``` ## 常见问题 -#### 插件管理 +#### 1. 插件管理 子应用可以使用的插件和主应用一致(包括版本),但是可以独立配置和使用插件 -#### 数据库隔离 +#### 2. 数据库隔离 子应用可以配置独立的数据库,如果想应用之间进行数据共享,可通过外部数据源实现 -#### 数据备份和迁移 +#### 3. 数据备份和迁移 目前在主应用上数据备份不支持包含子应用的数据(只包含子应用基本信息),需手动在子应用内备份和迁移 -#### 部署与更新 +#### 4. 部署与更新 子应用的版本将自动跟随主应用进行升级,自动保证主子应用版本一致 -#### 资源管理 +#### 5. 资源管理 每个子应用的资源占用和主应用基本一致,目前单个应用内存占用在500-600MB左右。 From a1dd0122ad92c7a2a8ff17412fff4eedd299e4a2 Mon Sep 17 00:00:00 2001 From: Jiann Lu Date: Tue, 21 Oct 2025 10:35:38 +0800 Subject: [PATCH 8/8] fix: adjust multi-app --- docs/zh-CN/handbook/multi-app/index.md | 17 +++++++++++++---- 1 file changed, 13 insertions(+), 4 deletions(-) diff --git a/docs/zh-CN/handbook/multi-app/index.md b/docs/zh-CN/handbook/multi-app/index.md index a52c0e9c41..5b570908f5 100644 --- a/docs/zh-CN/handbook/multi-app/index.md +++ b/docs/zh-CN/handbook/multi-app/index.md @@ -4,8 +4,7 @@ ## 介绍 -**多应用插件(Multi-App)** 允许在同一个实例中动态创建和管理多个独立应用,而无需单独部署。 -每个子应用都是完全独立的实例,拥有自己的数据库、插件和配置。 +**多应用插件(Multi-App)** 允许动态创建和管理多个独立应用,而无需单独部署。每个子应用都是完全独立的实例,拥有自己的数据库、插件和配置。 #### 适用场景 - **多租户**:提供独立的应用实例,每个客户拥有自己的数据、插件配置和权限体系。 @@ -57,7 +56,7 @@ ### 子应用运行与停止 -点击 **q启动** 按钮可启动子应用; +点击 **启动** 按钮可启动子应用; > 如果在创建时勾选了 *“首次访问时启动”*,则首次访问时会自动启动。 点击 **查看** 按钮,会在新标签页中打开该子应用。 @@ -65,7 +64,11 @@ ![](https://static-docs.nocobase.com/multi-app/Multi-app-NocoBase-10-16-2025_04_00_PM.png) -### 子应用日志查看 +### 子应用运行状态与日志 + +在列表中可以查看每个应用占用的内存和CPU + +![](https://static-docs.nocobase.com/multi-app/Multi-app-NocoBase-10-21-2025_10_31_AM.png) 点击 **日志** 按钮,可查看子应用的运行日志。 > 若子应用启动后无法访问(如数据库损坏等情况),可通过日志进行排查。 @@ -98,6 +101,12 @@ yarn nocobase pm2 delete [appname] # 删除某个子应用进程 yarn nocobase pm2 kill # 强制终止所有启动的进程(可能包含主应用的实例) ``` +### 老多应用数据迁移 + +进入到老的多应用管理页面,点击 **迁移数据至新多应用** 按钮进行数据迁移 + +![](https://static-docs.nocobase.com/multi-app/Multi-app-manager-deprecated-NocoBase-10-21-2025_10_32_AM.png) + ## 常见问题