Open edX 部署教程:四步在本地跑起完整在线学习平台
【免费下载链接】openedx-platformThe Open edX LMS & Studio, powering education sites around the world!项目地址: https://gitcode.com/GitHub_Trending/ed/openedx-platform
Open edX 是开源在线教育系统,LMS(学生用来上课的系统)和 Studio(老师建课的系统)分工协作。这篇 Open edX 部署教程把完整流程拆成四步,跟着做完,你就能在本地跑起一套 LMS + Studio 组合。
先认识这个项目:三大块分别干什么
README 说得很直白:平台由一个 Django 单体核心、若干可独立部署的应用(IDA)和一批 React 微前端(MFE,独立开发部署的前端页面)组成。核心单体提供两个服务:
| 组件 | 目录 | 职责 |
|---|---|---|
| LMS | lms/ | 学生学习系统:课程交付、学习记录、成绩与证书 |
| CMS(即 Studio) | cms/ | 建课系统:课程结构、内容组件、学习单元管理 |
| XBlock / XModule | xmodule/ | 内置内容组件层:章节、单元、题目、视频等块类型 |
图上展示的是系统整体分工。要注意:你浏览到的大部分页面其实是独立部署的 MFE,靠 AJAX 和后端通信——所以核心服务起来之后,还需要单独启动 MFE 才能获得完整界面。
动手前自查清单:逐项确认再开始
官方 README 明确列出了裸机(直接在 Linux 主机上安装)环境要求,逐项打勾:
- Ubuntu 24.04
- Python 3.12
- Node 24(仓库
.nvmrc文件锁定的版本) - MySQL 8.0、MongoDB 7.x 已安装并启动
- Memcached 缓存服务可用
- 磁盘留足空间放源码、依赖与数据库文件
- 需要
mysqlclient时,先装系统依赖:sudo apt install python3-dev default-libmysqlclient-dev build-essential pkg-config
⚠️ 官方同时建议:开发和生产都优先用 Tutor(基于 Docker 的发行版),裸机方式社区支持有限,没有运维经验请先上 Tutor。
实战:四步跑起来
第 1 步:获取源码。克隆仓库并进入目录:
git clone https://gitcode.com/GitHub_Trending/ed/openedx-platform cd openedx-platform第 2 步:安装依赖。前端走 npm,后端走 uv(Python 包管理器),在仓库根目录执行:
npm clean-install --dev uv sync --group development --group ci第 3 步:初始化数据库。先建两个 MySQL 库(LMS、CMS 各一个),在DATABASES配置里指向它们;然后跑迁移建表:
./manage.py lms migrate ./manage.py lms migrate --database=student_module_history ./manage.py cms migrate注意 LMS 要跑两次:第二条命令针对独立的学习行为历史库。
第 4 步:构建前端资产并启动服务。
npm run build ./manage.py lms runserver 18000 ./manage.py cms runserver 18010npm run build用 webpack 打包 JS/CSS;之后在两个终端分别把 LMS 起在 18000 端口、CMS 起在 18010 端口。README 特别提醒:此时平台还是"基本无头"状态,要完整操作界面,需再单独启动 Authoring(2001)、Learning(2000)、Learner Home(1996)等 MFE。
功能与模块导览:定制平台的三条路
Open edX 遵循开闭原则,扩展点都有文档记录,见 扩展点说明:
- XBlock:Python 插件,定义一种新的交互式组件类型;运营者先装进实例,教师才能在课程里使用。内置块都在 xmodule/ 下。
- LTI:学习工具互操作标准,通过 iframe 嵌入第三方内容,平台既当消费方也当提供方。
- REST API:外部系统对接平台,访问
/api-docs/可看自动生成的 OpenAPI 文档。
外观定制也开箱即用:themes/ 目录自带 dark-theme、red-theme 等主题,构建时通过COMPREHENSIVE_THEME_DIRS指向你自己的主题目录即可生效。
调优与加固建议:按场景逐条处理
- 多节点部署 LMS:把
CACHES['default']指向共享的 Redis 或 Memcached,否则 LTI Provider 的 OAuth 防重放等安全特性跨节点会失效。 - 生产环境开 HTTPS:
lms/envs/production.py会自动设置SESSION_COOKIE_SAMESITE='None'以支持 LMS 与 Studio 跨站登录,需同时满足SESSION_COOKIE_SECURE=True和 HTTPS;纯 HTTP 环境请改用Lax,代价是 Studio SSO 等跨站流程不可用。 - 静态资源加速:CDN 路径与 webpack 配置的调法见 静态资源文档。
- 翻译与静态文件:
make pull_translations拉取翻译,./manage.py lms collectstatic/./manage.py cms collectstatic收集静态文件,开发环境可跳过。 - 更贴近生产的域名:实验性的
development.py配置用 local.openedx.io 子域名跑服务,玩法见 该配置使用教程。
排坑与自检:启动后常见问题排查
- 迁移或启动报数据库连不上:先确认 MySQL、Mongo、Memcached 三个服务真的在跑,再核对
DATABASES是否配了两个库、MySQL 用户是否有写权限。 - 依赖安装失败:
mysqlclient等包需要 C 编译环境,先执行自查清单里的 apt 安装命令再重试。 - 页面一片空白:属正常现象。前端已迁到 MFE,需单独把 Authoring、Learning、Learner Home 三个 MFE 跑起来。
- 端口冲突:核心服务占 18000、18010,MFE 占 1995–2001,改
runserver的端口号或对应的*_MICROFRONTEND_URL设置即可。
走向生产:三句话讲清
生产环境请用社区官方的 Tutor 做容器化部署,安装、定制、升级、扩容一条龙,还自带开发模式;备份重点盯住 MySQL 和 Mongo 两份数据;如果不想自己运维,官网提供的托管服务可以先用免费试用评估。
写在最后
对照清单自查、跑完四步,你就有了第一个可用的 Open edX 实例。进阶配置建议翻官方文档站 docs.openedx.org,卡住就去社区论坛 discuss.openedx.org 提问——大概率有人踩过一模一样的坑。
【免费下载链接】openedx-platformThe Open edX LMS & Studio, powering education sites around the world!项目地址: https://gitcode.com/GitHub_Trending/ed/openedx-platform
创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考