启动网店

本指南介绍如何启动新的 PWA Kit 网店并使其可以从其官方公共网址访问。您有两种选择来启动和路由流量到您的 PWA Kit 网店:

  1. 使用 CloudFlare 或 Akamai 等第三方 CDN。
  2. 使用 Managed Runtime 提供的 CDN。

在本指南中,我们使用具有以下属性的示例网店:

  • 生产环境 (Production) URL: https://www.example.com
  • 项目 ID:example
  • 环境:stagingproduction

在本指南中,“Mobify”一词出现在几个地方。Mobify 是最初开发 PWA Kit 和 Managed Runtime 的公司。2020 年,Salesforce 收购了 Mobify 及其所有技术。

从 Mobify 到 Salesforce 的品牌重塑过程仍在进行中。Mobify 品牌名称仍出现在用于托管网店的 cloud.mobify.com 域和 Managed Runtime API 使用的 mobify-storefront.com 域中。尽管新的 Salesforce 域最终将取代这些 Mobify 域,但将继续支持 Mobify 域。

Managed Runtime 支持在 PWA Kit 网店前使用第三方 CDN。首先使用默认设置部署您的环境。接下来,添加网店 {{project}}-{{environment}}.mobify-storefront.com 作为您的第三方 CDN 中的源。确保 CDN 配置为转发以下内容:请求方法、路径(包括查询字符串)、标头和正文。还要确保 CDN 设置为遵循 HTTP 缓存标头。

考虑添加一个处理程序来反映 HTTP 请求,以验证 CDN 配置是否正确:

还可以考虑使用 httpbin.org/anything 添加代理来验证传递给代理的标头是否正确发送。

我们分三个阶段介绍如何“上线”:准备、启动准备环境 (Staging) 和启动生产环境 (Production)。

本指南假定您有权访问 Runtime Admin 应用程序和 Managed Runtime API 来执行管理任务。要访问这些工具,请联系 Commerce Cloud 管理员并要求他们使用 Account Manager 将以下任一角色添加到您的帐户:Managed Runtime User(托管运行时用户)或 Managed Runtime Admin(托管运行时管理员)。

要向 Managed Runtime API 发出请求,必须在 HTTP 请求 Authorization 标头中包含一个值为Bearer {{api_key}}的 API 密钥。对于提供的所有示例请求,不要忘记将 {{api_key}} 替换为实际 API 密钥。

要查找 API 密钥,请登录 Runtime Admin并转到帐户设置页面。

重要提示:请将您的 API 密钥视为密码,因为它允许脚本代表您执行操作。

可以随时完成这些步骤,但我们建议在开始使用 PWA Kit 后立即启动它们。

使用 Managed Runtime APIRuntime AdminWeb 应用程序创建一个称为 staging 的环境(也称为目标),从而练习启动网店。

这是使用 Managed Runtime API 的 target 端点创建环境的示例请求。在请求中将 example 替换为实际项目 ID 字符串并将 {{api_key}} 替换为实际 API 密钥。

有关使用 Runtime Admin 创建环境的说明,请参阅我们的 Managed Runtime Administration(托管运行时管理)指南。

网店代码必须能够访问 B2C Commerce 实例,因此 API 必须是公开可用的。

假设www.example.com当前解析为 B2C Commerce 实例。启动后,www.example.com 将解析到 mobify-storefront.com 域。网店代码需要一种处理与 B2C Commerce 实例关联的 API 的方法。可以选择使 API 在 api.example.com 可用并更新环境的代理设置以使用它。有关更多信息,请参阅代理请求指南。

要允许 Salesforce 为您的域颁发 TLS 证书,您必须创建 CNAME 记录。联系 Salesforce 客户支持并要求他们提供必要的详细信息,以便为您的网店创建 CNAME 记录。

您必须在收到详细信息后 24 小时内创建 CNAME 记录。CNAME 记录如下所示:

始终首先在准备环境中测试启动过程。

假设要在 staging.example.com 启动网店,Managed Runtime 中的项目 ID 是 example,并且将捆绑包部署到名为 staging 的环境中。

staging.example.com 上线时间 (TTL) 减少到一分钟。减少 TTL 可以加快 DNS 转换过程,如果出现问题,可以允许快速回滚。

可以使用dig 命令验证 TTL:

配置环境以接收来自主机 staging.example.com 的流量。

使用 Managed Runtime API 更新环境的 ssr_external_domainssr_external_hostname 设置:

重要提示:在此步骤之后,该环境在其 mobify-storefront.com 域中不再可访问。

使用 cURL 命令发出 DNS spoofing 请求,验证新设置是否生效:

Salesforce 支持部门将提供遵循约定 {{project}}-{{environment}}-cdn.mobify-storefront.com 的稳定域,其中 {{project}} 是项目 ID,{{environment}} 是环境 ID。

staging.example.com 的 DNS CNAME 记录更新至 example-staging-cdn.mobify-storefront.com。 打开网络浏览器并导航到 staging.example.com

恭喜,您已完成测试发布! 🥳

准备好启动时,完成与测试启动相同的步骤,但使用 production 环境和域。

从这里开始,Customer Success 小组将协助监控网站的流量,以确保发布成功。目标是确保在发布期间一切都按预期进行!

启动后,拥有“Signature Success 计划”的客户会收到主动的站点监控。要利用这种增加的监控服务,您必须将您的环境标记为生产环境 (Production)。有关更多信息,请参阅 Managed Runtime 概述中的环境

  • ssr_external_domain 目标设置控制目标从哪个主机接收流量。如果请求的 HTTP Host 标头与此值不匹配,则请求将失败。
  • 目前,Salesforce 不支持带有如 example.com 裸域的网店 URL(没有 www 子域)。要使用裸域,必须设置服务器以将请求从裸域重定向到 CNAME。

如果您需要添加根据使用的域改变站点行为的条件逻辑,则当您的本地开发服务器可以使用自定义域时,更容易测试此逻辑。为什么需要添加这种逻辑?例如,考虑需要根据域查找不同的 SLAS 客户端 ID。

要使用自定义域运行本地开发服务器:

  1. 修改本地计算机的 DNS 以将您的自定义域解析为 127.0.0.1 (localhost)。
  2. 编辑 ssr.js
  3. options 传递至 runtime.createHandler 中,将端口设置为 80
  4. 运行 EXTERNAL_DOMAIN_NAME=www.example.com npm start,用您的自定义域代替 example.com 的值。80 端口运行服务器可能需要管理权限。

从您的浏览器到自定义域的请求现在已解析并路由到您的本地开发服务器!

调试愉快!😊