Introducción a Open edX (III). Devstack

Como dijimos en el anterior post, Devstack es una instancia Vagrant diseñada para facilitar la vida a los desarrolladores de Open edX. Diferenciaremos Devstack de Fullstack en que ésta última es una instancia Vagrant diseñada para tener todos los servicios de edX en un único servidor de producción.

Además, Devstack simplifica algunas características de Fullstack para hacerlo más ligero (y simplificar así el desarrollo en local). Por ejemplo, en lugar de usar el servidor HTTP nginx y gunicorn como hace Fullstack, Devstack usa el runserver de Django, mucho más ligerito.

Devstack incluye los componentes LMS, CMS (Studio), los foros y ORA (Open ResponseAssessor). Este último componente, no obstante, no está configurado en Devstack (y requiere mucha máquina para su ejecución, por lo que no lo recomiendo en modo desarrollo).

Antes de empezar con la instalación, es necesario asegurarse de que tenemos una versión modernita de VirtualBox (4.3.10 o superior) y Vagrant (1.5.3) o superior. En Ubuntu 13.10 (donde he probado este proceso de instalación) tuve que descargar desde la web de cada herramienta la última versión (las versiones que ofrecían los repos APT no eran lo suficientemente modernas). En concreto, he hecho las pruebas con VirtualBox 4.3.12 y Vagrant 1.6.2.

Instalando Devstack

Lo primero, necesitaremos instalar soporte NFS. ¿Para qué? para que nuestra máquina local exporte las carpetas de desarrollo -donde tendremos parte del código fuente de edX- a la instancia vagrant (esto se hace con la ayuda de las VirtualBox Guest Additions, pero por ahora, olvídate de este detalle, simplemente instala el soporte NFS tal y como indico):

sudo apt-get install nfs-common nfs-kernel-server

Vamos a crear ahora un directorio donde trabajar con Devstack:

cd /opt/
mkdir devstack
cd devstack

Descargamos ahora el fichero Vagrant necesario para comenzar la instalación:

curl -L https://raw.github.com/edx/configuration/master/vagrant/release/devstack/Vagrantfile > Vagrantfile

Nota: resumiendo muy mucho, podemos ver el fichero Vagrantfile como una receta sobre cómo montar una máquina virtual desde cero: cuál es la imagen base, qué puertos abrir en dicha máquina virtual, cuánta memoria asociarle, qué carpetas compartir, etc.

Antes de lanzar vagrant, instalaremos un plugin que no va a permitir tener siempre actualizadas las VirtualBox Guest Additions (recordemos, un conjunto de herramientas de VirtualBox que entre otras cosas nos permitirán compartir carpetas entre la máquina física (host) y la máquina virtual (guest).

vagrant plugin install vagrant-vbguest

Procedemos a lanzar vagrant:

vagrant up

Ojo, la primera vez que lancemos este comando Vagrant procederá a descargar la máquina base sobre la que instalar edX. Esta máquina base ocupa 4GB… así que no lo hagas desde tu conexión móvil 😉 A partir de aquí, aunque destruyas la máquina virtual, Vagrant no tendrá que descargarse de nuevo la imagen base.
Durante la instalación, cuando vaya a compartir las carpetas vía NFS, vagrant te pedirá el password de tu usuario con permisos sudo.

vagrant@precise64: ~_098

Si te quieres ahorrar todo este proceso, puedes descargar directamente una máquina virtual edX preconfigurada con Vagrant vía Torrent.

Tras ello, podrás lanzar la máquina usando el siguiente comando:

vagrant box add box-name path-to-box-file

Conectar con Devstack vía SSH

Ok, ya está instalado Devstack. ¿Ahora qué? Lo primero será lanzar el LMS y el CMS. Para ello, nos conectaremos vía ssh con la máquina virtual que acabamos de lanzar. ¿Cómo? Usando vagrant:

vagrant ssh

¿Fácil, no? Pues sí… vagrant es una maravilla 🙂

Ahora tendremos que cargar algunas variables de entorno. El usuario edxapp las tiene configuradas en sus
ficheros de inicio de sesión, así que vamos a decirle a Devstack que queremos trabajar como si fuéramos edxapp:

sudo su edxapp

Además, este usuario tiene su HOME en /edx/app/edxapp/edx-platform (la carpeta raíz de la plataforma edX)
por lo que estaremos ahí situados al lanzar el comando anterior.

Bien, sin más dilación, hagamos una prueba rápida. Vamos a lanzar el LMS con el comando paver:

(edx-platform)$  paver devstack lms

(la primera vez, le va a costar, porque estará actualizando/descargando los requerimientos para lanzar el LMS y compilando los recursos estáticos (css, js y demás). Si ya lanzaste alguna vez el LMS y no quieres actualizar recursos/requerimientos, puedes hacer uso de la opción –fast  (paver devstack –fast lms).

¡Listo! Abrimos un navegador (en la máquina física) y tecleamos: http://localhost:8000/. Deberíamos ver el LMS tal y como indico en la imagen adjunta.

| edX - Google Chrome_099

 

 

Para lanzar el CMS (Studio), procederemos igual:

(edx-platform)$  paver devstack studio

El CMS se abre en el puerto 8001, así que, abrimos un navegador (en la máquina física) y tecleamos: http://localhost:8001/. Si todo va bien, veremos algo como lo de la figura 2.

Welcome | edX Studio - Google Chrome_100

Devstack tiene varias cuentas de usuario creadas por defecto. Para nuestras pruebas, puedes conectarte como profesor usando el login staff@example.com (pass: edx) y como alumno usando el login verified@example.com (pass:edx).

En el siguiente post veremos cómo lanzar los foros y cómo configurar edX para poder crear nuevas cuentas de usuario.

6 comentarios en «Introducción a Open edX (III). Devstack»

  1. Hola, excelente tutorial. Explicas muy bien el paso a paso para instalar esta plataforma, lastima que lo encontre despues de lograr instalarlo pero con numerosos intentos. He intentado instalar el Production Stack pero termina siempre en error. Has tenido exito instalando esta otra version?

  2. Ahh.. lo que ocurre es que trate de instalarlo en mi laptop Ubuntu 13.04. Lo necesito por un dia para un curso de la univ. Y como ya no queda mucho tiempo hare la demo del edx con su version developer.

  3. Hola buenas,

    ¿como paso los avances que haga en devstack a nivel de codigo a una versión final de producción? No encuentro la forma..

    Muchas gracias, y excelente tutorial 🙂

  4. Sería tan gentil de explicarf en detalle el proceso de instalación del fullstack en DigitalOcean, incluido las características de la máquina virtual (droplet).

    Muy agradecido por su asistencia.

    Eduardo

  5. Hola,

    En primer lugar, muchísimas gracias por la información. Al igual que ya han preguntado por ahí, tengo la duda de en qué hosting recomendarías la instalación fullstack de EDX o cómo lo has hecho para el caso de tu web DigitalOcean.

    Muchas gracias de antemano por la respuesta,
    Un saludo.

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *

Este sitio usa Akismet para reducir el spam. Aprende cómo se procesan los datos de tus comentarios.