Das DevOps-Team von edX war damit beschäftigt, mit der Community zusammenzuarbeiten, um Open edX für alle auf der Welt verfügbar zu machen. Fast der gesamte Code dahinter edx.org is der Öffentlichkeit zugänglich gemacht unter einer GPL-Lizenz. Zusätzlich zum Quellcode der edx-Plattform sind die Konfigurationsskripte, die die Plattform installieren und aktualisieren, in unserem verfügbar Konfigurations-Repository. Das Tool, das wir zur Konfiguration verwenden, heißt Ansible, ein Python-basiertes Konfigurationsmanagement-Tool, das unserem Betriebsteam die richtige Balance zwischen Flexibilität und Einfachheit bietet.
Regelmäßig edX veröffentlicht Vagrant-Images wenn Sie edX auf Ihrem PC installieren möchten. Sehen unsere Dokumentation zum lokalen Einrichten der Plattform in einer virtuellen Maschine.
Während wir uns normalerweise auf die Bereitstellung von edX auf großen Cloud-basierten Produktionsservern konzentrieren, befasst sich dieser Beitrag mit einer ganz anderen Herausforderung: einem Proof of Concept für die Ausführung des edX-Kurses und der Autorensoftware auf dem Raspberry Pi.
Die Raspberry Pi ist ein kostengünstiger ARM/Linux-Computer, der für etwa 35 $ erworben werden kann. Das Ausführen der edX-Website auf einem kostengünstigen Gerät wie dem Pi könnte möglicherweise tragbare Klassenzimmer in Gebieten mit eingeschränktem Zugang zum Internet ermöglichen. Dies kann mit dem Pi für weniger Geld als mit einem Laptop oder Desktop-Computer durchgeführt werden.
Eine minimale Site-Konfiguration ist auf dem Raspberry Pi funktionsfähig, aber sie funktioniert noch nicht gut genug, um in echten Kursen für mehrere Studenten verwendet zu werden. Die Plattform ist jedoch für einen einzelnen Schüler funktionsfähig und bietet Raum für potenzielle Verbesserungen.
Lade und installiere
- Schritt 1: Laden Sie das vorgefertigte Raspberry Pi-Image herunter: edx-raspberrypi-20131228.img.gz
- Schritt 2: Flashen Sie die SD-Karte
Sie können den Standardbenutzernamen und das Standardpasswort für ssh – user verwenden: pi Passwort:Himbeere - Schritt 3: Stellen Sie sicher, dass Supervisor ausgeführt wird und dass sowohl LMS als auch CMS ausgeführt werden:
sudo service supervisor start
sudo /edx/bin/supervisorctl -c /edx/etc/supervisord.conf - Schritt 4: Stellen Sie mit Ihrem Browser eine Verbindung zum LMS und Studio her:
LMS on port 18000 - `http://[ip address]:18000 `
Studio on port 18010 - `http://[ip address]:18010`
username: staff@example.com password: edx
Was funktioniert und was nicht
- Erstellen Sie mit Studio einen neuen Kurs
- Greifen Sie als Student auf Kurse zu
Messen der Seitenrenderzeit mit Chrome-Entwicklungstools:
- LMS-Demo-Kursunterlagenseite ~ 5 Sekunden
- Schüler-Dashboard-Seite ~ 5 Sekunden
Die folgenden Funktionen werden noch nicht unterstützt:
- Foren sind nicht aktiviert und wahrscheinlich nicht mit der aktuellen Version von Mongo kompatibel.
- Benutzerdefinierte Codegrader sind nicht aktiviert.
- ORA / Erkennen für maschinelles Lernen sind nicht aktiviert.
edX-Konfiguration auf dem Raspberry Pi
Raspberry Pi-Hardware
- 700 MHz Raspberry Pi / 500 MB
- 8 GB SD-Karte
Service Configuration
Die folgenden Dienste werden nach der Installation auf dem Raspberry Pi ausgeführt:
- Nginx/Gunicorn
- Python/Django und alle davon abhängigen Python-Bibliotheken
- MySQL
- Mongo
- Memcached
Alles, was edX benötigt, befindet sich unter /edx und ist in mehreren virtuellen Python-Umgebungen vollständig eigenständig. Mongo wird in /edx/mongo installiert, das ist die Nicht-x86-Port für ARM kompiliert. Da es Tage dauert, alles für den Raspberry Pi von Grund auf neu zu kompilieren, gibt es ein öffentliches Image, das als guter Ausgangspunkt dient.
Einige Vorbehalte und Verbesserungen sind erforderlich, bevor es ernsthaft verwendet werden kann:
- Überflüssige Protokollierung muss eliminiert werden: Loglevel ist auf CRITICAL gesetzt, aber Tracking-Protokolle werden derzeit auf die SD-Karte geschrieben.
- Die Gesamtleistung ist nicht ideal und es wird schwierig sein, sie zu verbessern, ohne ein aggressiveres Caching einzurichten oder zusätzliche Codeänderungen vorzunehmen.
- Die Aktualisierung des edx-platform-Repos dauert etwa eine Stunde.
Konfiguration mit Ansible
Wir verwenden Ansible als edX-Konfigurationsmanagement-Tool für Produktionssysteme. Die gleichen Skripte mit einigen kleinen Modifikationen funktionieren für den Raspberry Pi.
Ansible wird auf dem Raspberry Pi eingerichtet, was es einfach macht, es für neue Versionen der edx-Plattform zu aktualisieren und Konfigurationsänderungen vorzunehmen. Aktualisierungen dauern aufgrund der Asset-Kompilierung (Coffeescript und Sass) etwa eine Stunde, obwohl dieser Schritt offline durchgeführt werden könnte, da er nicht architekturspezifisch ist.
So aktualisieren Sie den Raspberry Pi auf den neuesten edx-Plattform-Commit
Die folgenden Befehle können direkt auf dem Raspberry Pi ausgeführt werden, um seine Konfiguration oder Repo-Version der edx-Plattform zu aktualisieren:
# Ensure that the configuration repo is on the Raspberry Pi branchsudo /edx/bin/updatekonfiguration jarv/raspberrypi
# Führen Sie das Raspberry Pi Ansible-Playbook aus
cd /edx/app/edx_ansible/edx_ansible/playbooks/edx-east
/edx/app/edx_ansible/venvs/edx_ansible/bin/ansible-playbook -i localhost, -c local --tags deploy raspberrypi.yml -e "edx_platform_version=master"Hilfe und Fehlerbehebung
Wenn Sie Hilfe mit edX benötigen, treten Sie bitte unserem bei Community-Mailingliste. Wenn Sie spezielle Fragen zum Ausführen von edX auf dem Raspberry Pi haben, denken Sie bitte daran, dass dies nur ein Prototyp ist und nicht offiziell gewartet und unterstützt wird. Wenn es auf dem Raspberry Pi oder einer anderen Plattform funktioniert, lass es mich wissen - I würde es lieben von dir zu hören!


