Nutmeg 是最新的 Open edX 命名版本。 它于 9 年 2022 月 XNUMX 日发布。在这篇文章中,我们将看看最近对操作员和开发人员体验的变化(即为 Open edX 编写代码或部署 Open edX 实例的人)。 这包括一些最新和最伟大的 Tutor 更改、对 Open edX 事件和过滤器的关注,以及一些关于弃用、删除和安全更新的重要说明。

导师亮点

自 Maple 发布以来对 Tutor 的更改在 导师变更日志 – 版本 13.0.1 至 14.0.0。 一些亮点是:

导师功能和改进

  • 一个新的和扩展的 “版本 1”插件 API 基于以下理念 “钩子”,这些扩展点允许插件对 Tutor 的操作做出反应并使用数据过滤器修改 Tutor 的行为。 老人 “版本 0”插件 API 仍然受支持,尽管鼓励插件开发人员迁移到新的 API。
  • 升级时更全面的说明
  • 多个新命令:
    • `tutor k8s apply`:与`kubectl apply`的直接接口
    • `tutor [dev|local|k8s] status`:提供系统信息状态
    • `tutor dev quickstart`:`tutor local quickstart` 的变体,可减少开发设置过程中的摩擦
    • `tutor [local/dev] copyfrom`:从容器中复制内容
    • -m/–mount`:添加到多个本地和 dev 命令的选项,用于从主机自动绑定挂载文件夹,取代旧的 `bindmount` 命令和 `-volume` 选项。
  • `tutor dev start SERVICE` 现在允许附加到服务以进行断点调试。
  • 启动 `dev` 容器现在会停止 `local` 容器,反之亦然。
  • 能够在 Docker 映像中以 root 身份安装自定义包和运行命令
  • 能够通过 `config.yml` 覆盖 `EDX_PLATFORM_REPOSITORY` 和 `NPM_REGISTRY`,而不是作为 Docker 构建参数。
  • 通过在 Studio 中将课程可见性设置为“无”,能够从 LMS 的/课程搜索页面隐藏课程。
  • 现在默认启用持久成绩。

导师弃用和重大变化

  • `tutor dev runserver` 已弃用,取而代之的是 `tutor dev start`。
  • `导师k8s exec“ ”`(带引号)已弃用; 而是使用`tutor k8s exec `。 这与 `tutor local exec 的语法一致`。
  • 放弃了对“TUTOR_EDX_PLATFORM_SETTINGS”环境变量的支持。 现在建议改为创建插件。
  • lms.env.json & cms.env.json 现在是 `lms.env.yml` & cms.env.yml; 插件开发者必须重新格式化多个补丁以使用 YAML 格式。

以及多个 Tutor 安全性和错误修复; 见 导师变更日志 – 版本 13.0.1 到 14.0.0 更多。

打开 edX 事件和过滤器

打开 edX 事件和过滤器 添加一种扩展核心的新方法,而不必弄乱 edx-platform 的内部(这项工作是 OEP-50:钩子扩展框架).

  • Open edX Events:这个标准化版本的 Django Signals 允许开发人员仅通过监听关键进程完成后发送的事件来扩展平台功能,例如在注册、登录、注册等之后。
  • 打开 edX 过滤器:仅通过配置,扩展开发人员可以设置在关键流程开始之前要执行的功能列表,例如在注册、登录、注册等之前。

有关更多信息,请阅读 欧共体中, 文件,或观看 Felipe Montoya 的 打开 edX 2022 会议演示文稿 关于本产品的背景、架构和用途。

重要的管理命令运行和配置变量设置

称为“学习序列”的内部性能改进已在几个版本中选择加入,但现在对 Nutmeg 来说始终可用。 如果您有任何课程尚未在 Koa 或更高版本上重新发布,在升级之前在您的课程上运行simulate_publish cms django 命令,以填充学习序列数据。

未能设置 CLOSEST_CLIENT_IP_FROM_HEADERS 配置值可能会导致限制合法流量的速率或无法阻止暴力攻击,具体取决于您的代理设置。

弃用和删除

自 Maple 发布以来,已进行了以下弃用和删除:

  • edx-certificates repo 已存档
  • Bok-choy(测试平台)已归档
  • django-ratelimit-backend 库已从 edx-platform 中删除; 现在正在使用标准的 django-ratelimit 后端。 这具有删除默认 Django 管理员登录窗口的副作用; 用户现在必须先通过 LMS 登录。
  • “老 Mongo”课程的访问权限终于被完全删除了。 这意味着学习者无法访问具有 Org/Course/Run 等键而不是 course-v1:Org+Course+run(在任何课程页面的 URL 中可见)的课程运行。

有关这些的更多信息,请参阅 弃用和删除 Nutmeg wiki 页面的部分。

安全增强

有两个主要的安全增强功能需要了解:必须设置的新配置值 (CLOSEST_CLIENT_IP_FROM_HEADERS),以及在升级到 Nutmeg 之前需要注意的 SafeSessionMiddleware 更改。

  • CLOSEST_CLIENT_IP_FROM_HEADERS 是所有部署都应设置的新配置值。
    • 未能设置此选项可能会导致合法流量受到速率限制或无法阻止暴力攻击,具体取决于您的代理设置。
    • 这是一个影响安全的设置,它告诉您的部署如何确定客户端的 IP 地址。 有关如何(以及为什么)配置它的文档(以及 django-rest-framework 的相关 NUM_PROXIES 设置),请参阅 opens.core.djangoapps.util.ip。
  • SafeSessionMiddleware 是一种现有的中间件,它提供了多种保护措施,以防止可能由于缓存错误配置或其他错误导致一个用户获得不同用户的会话而导致的漏洞。
    • 以前,如果在请求或会话与响应之间检测到用户不匹配,中间件会记录警告; 现在,它将使会话无效并发送错误响应。 默认情况下启用切换 ENFORCE_SAFE_SESSIONS,但可以禁用以仅返回日志警告。
    • 在升级到 Nutmeg 之前:检查您的日志是否包含以“SafeCookieData user at request”开头的警告,或者这些警告非常罕见。 如果它们很常见,则可能是由某些需要调用 mark_user_change_as_expected 的自定义登录、伪装或注册码引起的误报。 否则,有效的请求可能会被拒绝。

有关更多信息,请参阅 发行说明 或者 肉豆蔻维基页面.

 总观看次数419