L'équipe DevOps d'edX s'est occupée de travailler avec la communauté pour rendre Open edX accessible à tous dans le monde. Presque tout le code derrière edx.org is mis à la disposition du public sous une licence GPL. En plus du code source de la plateforme edx, les scripts de configuration qui installent et mettent à jour la plateforme sont disponibles dans notre référentiel de configuration. L'outil que nous utilisons pour la configuration s'appelle Ansible, un outil de gestion de configuration basé sur Python qui offre le juste équilibre entre flexibilité et simplicité pour notre équipe d'exploitation.
Périodiquement edX publie des images Vagrant si vous souhaitez installer edX sur votre PC. Voir notre documentation pour configurer la plate-forme localement dans une machine virtuelle.
Alors que nous nous concentrons généralement sur le déploiement d'edX sur de grands serveurs de production basés sur le cloud, cet article couvre un défi très différent : une preuve de concept pour exécuter le cours edX et créer un logiciel sur le Raspberry Pi.
Raspberry Pi est un ordinateur ARM/Linux à bas prix qui peut être acheté pour environ 35 $. L'exécution du site Web edX sur un appareil à faible coût tel que le Pi pourrait potentiellement permettre des salles de classe portables dans des zones qui ont un accès limité à Internet. Cela peut être fait avec le Pi pour moins d'argent qu'un ordinateur portable ou de bureau.
Une configuration de site minimale est fonctionnelle sur le Raspberry Pi mais elle n'est pas encore assez performante pour être utilisée dans de vrais cours destinés à plusieurs étudiants. La plate-forme, cependant, est fonctionnelle pour un seul étudiant, avec une marge d'amélioration potentielle.
Télécharger et installer
- Étape 1: Téléchargez l'image Raspberry Pi prédéfinie : edx-raspberrypi-20131228.img.gz
- Étape 2: Flashez la carte SD
Vous pouvez utiliser le nom d'utilisateur et le mot de passe par défaut pour ssh - user : pi mot de passe:framboise - Étape 3: Assurez-vous que le superviseur est en cours d'exécution et que le LMS et le CMS sont en cours d'exécution :
sudo service supervisor start
sudo /edx/bin/supervisorctl -c /edx/etc/supervisord.conf - Étape 4: Avec votre navigateur, connectez-vous au LMS et au Studio :
LMS on port 18000 - `http://[ip address]:18000 `
Studio on port 18010 - `http://[ip address]:18010`
username: staff@example.com password: edx
Ce qui fonctionne et ce qui ne fonctionne pas
- Créer un nouveau cours à l'aide de Studio
- Accéder aux cours en tant qu'étudiant
Mesurer le temps de rendu des pages à l'aide des outils de développement Chrome :
- Page du didacticiel de démonstration LMS ~ 5 secondes
- Page du tableau de bord des étudiants ~ 5 secondes
Les fonctionnalités suivantes ne sont pas encore prises en charge :
- Forums ne sont pas activés et ne sont probablement pas compatibles avec la version actuelle de Mongo.
- Les évaluateurs de code personnalisés ne sont pas activés.
- ORA / Discerner pour l'apprentissage automatique ne sont pas activés.
Configuration edX sur le Raspberry Pi
Matériel Raspberry Pi
- Raspberry Pi 700 MHz / 500 Mo
- Carte SD de 8 Go
Configuration du service
Les services suivants seront exécutés sur le Raspberry Pi après l'installation :
- Nginx/Gunicorne
- Python/Django et toutes les bibliothèques Python qui en dépendent
- MySQL
- Mongo
- Memcached
Tout ce dont edX a besoin se trouve sous /edx et est complètement autonome dans plusieurs environnements virtuels Python. Mongo est installé dans /edx/mongo, qui est le port non x86 compilé pour ARM. Étant donné que tout compiler pour le Raspberry Pi à partir de zéro prend des jours, il existe une image publique disponible qui servira de bon point de départ.
Certaines mises en garde et améliorations sont nécessaires avant de pouvoir l'utiliser sérieusement :
- La journalisation superflue doit être éliminée : le niveau de journalisation est défini sur CRITICAL, mais les journaux de suivi sont actuellement écrits sur la carte SD.
- Les performances globales ne sont pas idéales et il sera difficile de les améliorer sans mettre en place une mise en cache plus agressive ou apporter des modifications de code supplémentaires.
- La mise à jour du dépôt de la plateforme edx prend environ une heure.
Configurer avec Ansible
Nous utilisons la Ansible comme outil de gestion de configuration edX pour les systèmes de production. Les mêmes scripts avec quelques petites modifications fonctionneront pour le Raspberry Pi.
Ansible est configuré sur le Raspberry Pi, ce qui facilite sa mise à jour pour les nouvelles versions de la plate-forme edx et la modification de la configuration. Les mises à jour prennent environ une heure en raison de la compilation des actifs (Coffeescript et Sass), bien que cette étape puisse être effectuée hors ligne car elle n'est pas spécifique à l'architecture.
Comment mettre à jour le Raspberry Pi avec le dernier commit de la plate-forme edx
Les commandes suivantes peuvent être exécutées directement sur le Raspberry Pi pour mettre à jour sa configuration ou sa version de dépôt de la plate-forme edx :
# Ensure that the configuration repo is on the Raspberry Pi branchsudo /edx/bin/mettre à jour la configuration jarv/raspberrypi
# Exécutez le playbook Raspberry Pi Ansible
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"Aide et dépannage
Si vous avez besoin d'aide avec edX, veuillez rejoindre notre liste de diffusion communautaire. Si vous avez des questions spécifiques sur l'exécution d'edX sur le Raspberry Pi, veuillez garder à l'esprit qu'il ne s'agit que d'un prototype et qu'il n'est pas officiellement maintenu et pris en charge. Si vous le faites fonctionner sur le Raspberry Pi ou une autre plate-forme, s'il vous plaît laissez-moi savoir — J'aimerais avoir de vos nouvelles !


