项目简介
Open edX Platform 原名 edx-platform,是 Open edX 在线教育平台的核心代码仓库。它提供两项主要服务:CMS 内容管理服务支撑 Studio 课程制作环境,LMS 学习管理服务负责向学习者交付内容。
项目使用 Python 和 JavaScript,并广泛采用 Django 框架。整个 Open edX 平台还包含可独立部署的应用,以及基于 ReactJS 的微前端,即需要单独运行的界面应用。本仓库代码除另有说明外采用 AGPL v3 许可,具体以原始仓库的 LICENSE 文件为准。
项目使用场景
适合需要建立在线课程网站、制作和交付学习内容的团队,也适合需要修改、测试或扩展 Open edX 核心服务的开发者。
生产使用可以选择服务商运行平台,也可以由具备相关经验的人员自行管理。README 推荐自行部署时采用基于 Docker 的 Tutor;开发者也可以使用 Tutor 的开发模式。直接在 Linux 主机上部署属于高级方案,文档和社区支持有限,不适合作为零基础用户的起步方式。
项目作用与解决的问题
Studio 为课程内容制作提供环境,LMS 负责将学习内容交付给学习者,使课程制作与学习服务能够在同一平台体系内配合使用。
本仓库提供核心服务,但不能仅凭启动这些服务就获得完整网站界面。大部分界面已迁移到独立前端应用,至少还需要 Authoring MFE、Learner Home MFE 和 Learning MFE,才能进行有实际意义的界面操作。
ENHE 当前仅收录仓库入口,未验证可运行包或核心业务流程,不能据此判断项目已经可以直接使用。
项目使用方法
1. 从页面下方的原始仓库入口查看 README 和文档,根据目标选择生产运行或开发修改路线。平台尚未部署时,先按下一节准备安装。
2. 完成部署及相关前端配置后,课程制作人员使用 Studio 制作学习内容,学习者通过 LMS 及对应学习界面访问内容。所给资料未提供具体的界面点击、账号创建或课程发布步骤,需要查阅原始仓库指向的文档。
3. 若采用直接部署方式,先确认 MySQL、Mongo 和 Memcached 已运行,再分别运行 `./manage.py lms runserver 18000` 和 `./manage.py cms runserver 18010`,启动 LMS 与 CMS。
4. 单独安装并启动 Authoring MFE、Learner Home MFE 和 Learning MFE。它们的安装命令未在所给资料中提供,应从原始仓库中的对应项目入口查看说明。
5. 如果需要修改或测试平台,按照原始仓库提供的 Tutor 开发模式文档操作。新的 development.py 开发方式仍属实验方案,并非默认推荐方式。
项目安装方法
1. 先选择部署路线。零基础用户可从原始仓库查看服务商运行方案;自行管理生产环境或开展开发工作时,README 推荐 Tutor。所给资料没有提供 Tutor 的完整安装命令、配置或启动步骤,需要继续查阅原始仓库指向的 Tutor 和站点运维文档。
2. 如由有经验的人员选择直接部署,按 README 准备 Ubuntu 24.04、Python 3.12、MySQL 8.0、Mongo 7.x 和 Memcached。Node 版本需查看仓库的 `.nvmrc` 文件。通过页面下方原始仓库获取代码的克隆地址或下载入口。
3. 安装依赖。README 给出的部分 Python 包系统依赖命令为 `sudo apt install python3-dev default-libmysqlclient-dev build-essential pkg-config`。生产前端依赖使用 `npm clean-install`,开发前端依赖使用 `npm clean-install --dev`;后端构建依赖使用 `uv sync --no-default-groups --only-group assets`;后端应用依赖在生产环境使用 `uv sync --no-default-groups --group bundled`,开发环境使用 `uv sync --group development --group ci`。资料未提供 uv 的安装步骤。
4. 按原始仓库引用的 codejail 安装说明完成其系统配置。创建两个 MySQL 数据库,以及一个对这两个数据库具有写入权限的用户,再修改 Django 的 `DATABASES` 设置。数据库创建命令和完整配置值未在资料中提供。
5. 依次运行数据库结构更新命令:`./manage.py lms migrate`、`./manage.py lms migrate --database=student_module_history`、`./manage.py cms migrate`。随后运行 `npm run build` 构建静态资源;开发环境可使用 README 提到的 `build-dev` 选项。
6. 如需下载翻译并收集静态资源,依次运行 `make pull_translations`、`./manage.py lms collectstatic` 和 `./manage.py cms collectstatic`。README 说明开发站点可以跳过此步骤。
7. 根据原始仓库说明配置 LMS 与 Studio 之间的单点登录,即让两个服务衔接登录状态。生产环境应使用其专门的配置流程,将客户端密钥保存在私有配置中,不要套用开发示例中的固定密钥。
8. 按上一节启动核心服务,并依照各自文档单独部署必要的前端应用。自定义或直接部署还需核对共享缓存与登录设置:多 LMS 节点使用 LTI Provider 时需要共享 Redis 或 Memcached;跨站登录所需的 SameSite=None Cookie 还要求安全 Cookie 和 HTTPS。所给资料不足以组成完整的生产部署教程,实际安装应以原始仓库及其引用文档为准。