部署 Mendix 应用¶
本文档适用于希望将 Mendix 应用部署到 MindSphere 平台的开发者。
代码块
带有行号的代码块提供了一种简单的复制功能。通过将光标悬停在代码块上并单击右上角的复制图标来使用它。
先决条件¶
- 开发者租户上的 MindSphere 用户账户
- Cloud Foundry Command Line Interface (CF CLI)
- Mendix Desktop Modeler
- 一个 Cloud Foundry 角色允许您去推送应用,例如
SpaceDeveloper
- 一个 MindSphere 开发者角色:
mdsp:core:Developer
或mdsp:core:DeveloperAdmin
为 MindSphere 准备 Mendix 应用¶
选项 A:使用 MindSphere Starter 应用¶
现有的应用
如果您想要将一款现有的应用部署到 MindShpere,跳过这步并跳转到集成 MindSphere 主题包和模块。
当您为 MindSphere 开发一款新的 Mendix 应用时,使用 MindSphMindSphereere Starter 应用。这款应用包含部署应用到 MindShpere 所需的所有构件。
- 打开 Mendix Desktop Modeler。
-
点击菜单栏右上角的图标,打开Mendix App Store。
-
进入 "MindSphere Starter Application" 并按下 Enter。
-
在搜索结果中选择 MindSphere Starter Application。
-
点击**下载**来创建一个新的应用项目,使用这款应用。
-
选择存储这款应用的位置并输入应用名称和项目目录。然后点击**确定**。
应用名称
如果您想要在 Mendix 和 MindSphere 上一直保持您的应用名称,请使用被Developer Cockpit 接受的应用名称。
选项 B:集成 MindSphere 主题包和模块¶
MindSphere Starter 应用
如果您正在使用 MindSphere Starter 应用, 跳过这步并跳转到模块配置。
Mendix 应用必须集成 MindSphere 主题包、MindSphere Single Sign-On 模块和 MindSphere OS Bar Connector。使用以下的链接将它们作为后验集成到现有的 Mendix 应用中,以此来下载这些必需的要素。
- Mendix App Store 中的 MindSphere 主题包
这个主题包调整 Mendix 应用的样式并且包含一个通用的补丁在 MindSphere上来运行 Mendix 应用和 MindSphere 模块中所需的 index.html 的更改。关于主题包的详细信息,请参考 Mendix 文档。 - Mendix App Store 中的 MindSphere Single Sign-On 模块
这个模块允许 Mendix 应用使用 MindSphere 单点登陆,这允许登录 MindSphere 的用户无需再次登录即可访问该应用。除此之外,这允许开发者本地测试他们的应用。关于该模块的详细信息,请参考 Mendix 文档。 -
Mendix App Store 中的 MindSphere OS Bar 模块
这个模块集成 MindSphere OS Bar, 这是对于每个 MindSphere 都必需的。它将所有 MindSphere 应用在 UI 层上连接, 显示应用信息像如下所示、返回到 Launchpad 和将用户从MindSphere 中注销。关于该模块的详细信息,请参考Mendix 文档。
配置模块¶
配置 MindSphere 单点登录¶
-
双击
CockpitApplicationName
常量。 -
在**值**这一部分中,用您将要使用 Developer Cockpit 配置您在 MindSphere 中的应用的名称来替换默认的值
Change me
。信息
请不要改变在这个对话顶端的
Name
字段。在 MindSphere 中注册应用时,应用名称有以下限制:
- 只包含小写字母数字字符和特殊字符,
-
、_
和.
不允许 - 以字母开头
- 长度不超过20个字符
- 在您的租户中唯一
- 只包含小写字母数字字符和特殊字符,
如果您不使用 MindSphere starter 或者示例应用请点击这里!
如果您不使用 MindSphere starter 或者示例应用,RegisterSingleSignOn
必须配置为 启动之后 微流:
- 通过双击 Project Explorer 的 项目 > 设置 来打开项目设置。
- 切换到**运行时间**标签。
- 选择
注册单点登录
如同**启动之后**微流一样。或者,将其添加到您现有的**启动之后**微流。
配置应用信息(可选)¶
如果用户在 MindSphere OS Bar 中单击应用名称,将会显示应用信息。请按照以下说明配置应用信息。
- 双击 MindSphereOSBarConfig 模块的字符串常量
Config
。 - 将应用信息作为 JSON 对象输入**默认**字段:
有关可用配置参数和示例 JSON 对象的描述,请参见 MindSphere OS Bar 文档。
将 Mendix 应用部署到 Cloud Foundry 中¶
信息
Mendix 应用可以托管在 MindSphere 之外。在这种情况下,他们必须提供一种机制来处理访问 MindSphere api 的用户凭证。我们不建议您这样做,本文档也没有涉及相关内容。
创建 Mendix 部署包¶
- 在 Mendix Desktop Modeler 中打开应用。
-
选择 项目 > 创建部署包...。
-
选择所需的**开发行**和**版本**并设置版本号。
- (可选)添加描述并根据需要调整部署包的路径。默认情况下,部署包在项目的**版本**文件夹中创建。
- 单击**确定**。
新部署包的位置将显示在信息窗口中。
通过 CF CLI 将应用部署到 Cloud Foundry 中¶
- 在带有部署包的文件夹中打开命令行接口(CLI)。
-
如果必要,请配置代理设置。
有关代理设置的详细信息请点击这里
如果您在代理背后的公司网络中,您可能必须设置代理才能到达 Cloud Foundry 端点。 如果您遇到超时或连接问题,请与管理员联系。
像如下展示一样,为 Cloud Foundry CLI 设置代理:
```cmd tab="CMD" set http_proxy=http://PROXY_IP:PROXY_PORT set https_proxy=http://PROXY_IP:PROXY_PORT
```bash tab="BASH" export http_proxy=http://PROXY_IP:PROXY_PORT export https_proxy=http://PROXY_IP:PROXY_PORT
-
输入
cf login -a https://api.cf.{region}.{mindsphere-domain} --sso
。 - 打开由 CLI 打印的 URL 并使用您的 WebKey 凭证登陆,以获得一次性代码。
- 在 CLI 中输入一次性代码。
-
使用以下的命令选择你的 Cloud Foundry org 和 space:
cf target -o {org_name} -s {space_name}
无 Cloud Foundry Orgs 显示
如果您没有看见任何 Cloud Foundry orgs,您需要添加您的 org。请参考How Tos for Cloud Foundry。
-
创建一个 PostgreSQL Service 实例。 注意,在实例启动并运行之前需要一些时间。
``` bash tab="Template" cf create-service posgresql10 {service_plan} {instance_name}
``` bash tab="Example" cf create-service posgresql10 postgresql-xs my-postgreSQL
-
使用以下命令检查您的服务实例是否在运行:
cf services
-
在带有部署包的文件夹中创建一个
manifest.yml
并至少含有以下内容:```yml tab="Template" applications: - name: {app_name} disk_quota: {required_quota} memory: {required_memory} services: - {instance_name}
```yml tab="Example" applications: - name: my-app disk_quota: 512M memory: 512M services: - my-postgreSQL
信息
Mendix 应用至少需要
512M
大小的内存和磁盘配额。
有关配置 manifest 文件的更多信息,请参考文档Manifest 文件。 -
使用以下内容推送应用到您的 Cloud Foundry 空间:
cf push -p "{deployment_package_name}"
在 MindSphere 中配置 Mendix 应用¶
在 Developer Cockpit 中配置 Mendix 应用¶
组件
MindSphere 上的应用可能由多个 Cloud Foundry 应用组成,这些应用具有多个端点。为了明确区分,Cloud Foundry 应用被称为**组件**。
- 从 Launchpad 中打开 Developer Cockpit 并选择**仪表盘**选项卡。
- 单击**创建新的应用**。
- 选择 类型 Standard 和 基础设施 MindSphere Cloud Foundry。
-
输入一个任意的**显示名称**和**内部名称**,这将会为成为应用 URL的一部分。初始化创建后,**内部名称**不能被更改!
内部名称
内部名称 必须和配置在MindSphere 单点登录模块中的
CockpitApplicationName
一致。 -
输入版本编号。
- MindSphere 支持
Major.Minor.Patch
方案。 - 版本必须以 >=1 的主号码开头。
- 保存之后版本不能被更改。
- MindSphere 支持
- 为您的应用上传一个图标。
-
输入组件名称。
组件名称
组件名称必须匹配在
manifest.yml
中 Cloud Foundry 应用的名称。否则,生产系统中的自动注册将会失败。 -
为您的组件添加一个端点,并如下所示一样,使用
/**
来匹配您所有的应用路径。信息
更多有关信息请参考运行Cloud Foundry应用。
-
进入您的应用的 Cloud Foundry URL。
- 使用
cf app {app_name}
得到部署应用的URL和前缀https://
。
- 使用
-
设置以下内容安全政策来保证 MindSphere OS Bar 和 Mendix Feedback widget 被正确加载:
default-src 'self' 'unsafe-inline' 'unsafe-eval' static.eu1.mindsphere.io sprintr.home.mendix.com; font-src 'self' static.eu1.mindsphere.io fonts.gstatic.com; style-src * 'unsafe-inline'; script-src 'self' 'unsafe-inline' 'unsafe-eval' static.eu1.mindsphere.io sprintr.home.mendix.com; img-src * data:;
信息
这些内容安全政策设置需要用来保证 MindSphere OS Bar 和 Mendix Feedback widget 被正确加载。如果你从其他域名进行额外的调用,您也许需要进行额外的 CSP 设置(例如, 如果你从
maps.googleapi.com
中使用 Google maps)。 -
点击**保存**。
您将被重定向到应用详情。 您的应用处于 In-Development
状态,并已经准备好注册。
配置 Mendix 应用角色和范围¶
MindSphere 中的每个应用都受到特定角色和范围的保护以防止未经授权的访问。MindSphere 自动为新应用创建两个默认角色:
- admin (
mdsp:{tenant_name}:{app_name}.admin
) - user (
mdsp:{tenant_name}:{app_name}.user
)
关于创建自定义应用角色,请参见保护您的应用。使用 Developer Cockpit 配置这些角色的权限。您可以分配核心角色,该角色授权访问 MindSphere APIs,并定义应用范围:
- 切换到**授权管理**选项卡。
- 选择应用。
-
创建一个应用范围并选择它被分配到哪个 MindSphere 角色。
信息
应用范围必须被命名,目的是它可以通过名称的比较(不区分大小写)将其映射到 Mendix 用户角色。详细信息请参考开发 Mendix 应用的角色和范围信息。
如果您正在使用 starter 应用, 请像以下展示的一样创建用户范围和一个管理范围。
注册 Mendix 应用¶
应用必须在MindSphere Gateway上注册,才能从 Launchpad 访问它。这允许从租户特定的 MindSphere URL 到您的内部 Cloud Foundry 应用的路由。注册过程遵循积极的安全概念,即要求明确注册应用的每个端点。
- 切换到**仪表盘**选项卡。
- 打开应用详情。
- 点击**注册**。
MindSphere 注册应用使用以下方案:{tenant_name}-{app_name}-{tenant_name}.{region}.mindsphere.io
分配 Mendix 应用角色¶
只有当用户的 OAuth 令牌中存在一个应用范围,应用才在 Launchpad 上出现。在这种情况下,如果分配给用户一个应用角色:
- 从 Launchpad 中打开 Settings 应用,并切换到**角色**选项卡。
- 选择一个应用角色并单击**编辑分配**。
- 分配一个或多个用户到应用角色。
- 单击**结束编辑**。
- 登出 MindSphere 并重新登陆。
退出
用户令牌只有在登出和再次登录之后才使用新范围更新。在极少数情况下,可能需要几分钟直到角色分配在系统中传播完毕。
您的应用现在可以在 Launchpad 中使用。您的 OAuth 令牌包含应用角色中定义的所有范围和核心角色。如果没有看到应用,请验证是否已为您自己分配了应用特定角色。