Está en la página 1de 19

Instalacin y configuracin

de la plataforma edX

Juanan Pereira

ndice

Objetivo y descripcin del proyecto...............................................................................1


Objetivo.....................................................................................................................1
Descripcin................................................................................................................1
Instalacin y configuracin de la versin de desarrollo.................................................2
Instalacin de la versin de desarrollo (DevStack) de edX........................................2
Configuracin de los servicios de edX (DevStack).....................................................3
Cambiar configuracin SMTP.....................................................................................4
Internacionalizacin (i18n) y localizacin (l10n).......................................................5
Importar curso de demostracin...............................................................................6
FAQ.............................................................................................................................8
Instalacin y configuracin de la versin de produccin...............................................9
Requerimientos Hardware.........................................................................................9
Instalacin de edX en un nico servidor Ubuntu 12.04 (Precise)..................................9
Sustituir los puertos por defecto por subdominios.................................................11
Cmo gestionar el servidor de Produccin..................................................................11
Uso de manage.py...................................................................................................11
Verificar los servicios en ejecucin..........................................................................11
Reiniciar servicios....................................................................................................12
Actualizar las versiones de los servicios edX...........................................................12
Cmo compilar los recursos manualmente.............................................................13
Resolucin de problemas.............................................................................................13
No es posible conectar con el LMS..........................................................................13
Ficheros Log..................................................................................................................13
Theming (Personalizacin)...........................................................................................14

Historial de Versiones
Fecha

Autor

26/12/13

Juanan Pereira

Cambios
Primera versin

Objetivo y descripcin del proyecto


Objetivo
Crear la documentacin necesaria sobre los pasos a dar para instalar y configurar la plataforma
edX, teniendo en cuent que se quiere usar para lanzar un curso MOOC.

Descripcin
La plataforma edX cuenta con varios componentes. En este proyecto instalaremos y probaremos
los siguientes:
LMS : Learning Management System
CMS: Content Management System (tambin conocido como edX Studio)
Forum: foros de discusin
Se instalarn 2 versiones de edX: una para desarrollo (pruebas) y otra para produccin
(explotacin). Inicialmente ambas versiones estn en ingls, por lo que se ofrecern los pasos
necesarios para la instalacin del soporte de castellano1.
La versin de desarrollo se instala sobre una mquina virtual Ubuntu. Las pruebas realizadas se
han hecho sobre un PC con 4 GB de RAM y una CPU Intel Core 2 Duo CPU a 2.40GHz (aunque para
desarrollo podra valer una mquina con menos recursos, es recomendable que tenga esa
capacidad en memoria debido al alto consumo de RAM de la mquina virtual). Se recomienda
disponer al menos de 20GB de espacio en disco (slo la mquina virtual, sin configurar, requiere de
2GB).
La versin de explotacin requiere de una mquina online, con sistema operativo Ubuntu, similar a
una m1.large en la nube Amazon2 (arquitectura 64 bits, doble procesador Intel Xeon, 7.5 GB RAM,
con unos 50 GB de espacio en disco). Puede instalarse directamente sobre el sistema de archivos
de la mquina fsica o bien crear internamente una mquina virtual e instalar la versin de
produccin sobre dicha mquina virtual.
Una vez instaladas las versiones de desarrollo y prueba, se mostrar, a grandes rasgos, cmo crear
un curso online haciendo uso del mdulo edX Studio.

1 Hay que tener en cuenta que la traduccin al castellano, si bien est bastante avanzada, an no est finalizada por la
comunidad de edX.
2 http://aws.amazon.com/ec2/instance-types/

Instalacin y configuracin de la versin de desarrollo


Instalacin de la versin de desarrollo (DevStack) de edX
Empezaremos configurando esta versin. Para ello, es necesario instalar previamente en la
mquina fsica (host3) tantoVirtualBox (versin>= 4.2.12) como Vagrant (versin >= 1.3.4).
En el host, es necesario tambin instalar soporte NFS para poder compartir carpetas entre el host y
la mquina virtual (guest):
sudo apt-get install nfs-common nfs-kernel-server

Crear un directorio para la instalacin de edX, descargar el fichero Vagrantfile y crear la instancia
(mquina virtual):
mkdir devstack
cd devstack
curl https://raw.github.com/edx/configuration/master/vagrant/release/devstack/Vagrantfile > Vagrantfile
vagrant up

La primera vez que lancemos el comando vagrant up, se instalar una mquina virtual y se
aprovisionar (se instalarn las dependencias que requiere edX). Este proceso inicial puede tardar
entre 1 y 2 horas. Dado que se descargan numerosos paquetes de GitHub y que sta web suele
tener problemas puntuales de sobrecarga, es posible que haya que reintentar el proceso varias
veces hasta conseguir finalizar la instalacin (Figura 1).

Se recomienda que la mquina host use un sistema operativo Linux (a ser posible Ubuntu, aunque podra
funcionar tambin en Debian)

Figura 1: Instalacin de edX (versin de desarrollo) finalizada sin errores.

Al lanzar la mquina virtual con el comando vagrant up, es probable que se pida el password del
usuario local (usuario de la mquina fsica) para poder configurar las carpetas compartidas por NFS
entre host y guest.
Al arrancar Vagrant, ste puede aadir una nueva entrada al fichero hosts de la mquina fsica para
poder acceder a la vista previa de los cursos de forma muy sencilla:
192.168.33.10 preview.localhost
Para que esta entrada en hosts funcione, es necesario instalar el plugin hostsupdater:
$ vagrant plugin install vagrant-hostsupdater
Para acceder a la mquina virtual (plataforma edX):
$ vagrant ssh

Configuracin de los servicios de edX (DevStack)


Lanzamos LMS:
sudo su edxapp
./manage.py lms runserver --settings=devstack 0.0.0.0:8000
Lanzamos CMS (edX Studio):
3

sudo su edxapp
./manage.py cms runserver --settings=devstack 0.0.0.0:8001
Lanzamos el foro:
sudo su forum
ruby app.rb
Podremos comprobar que el LMS est online abriendo la direccin http://localhost:8000 en el
navegador (Figura 2).

Figura 2: Pantalla inicial del LMS de edX.


Igualmente, podremos comprobar que el CMS de edX est funcionando entrando en
http://localhost:8001 (Figura 3).

Figura 3: Pgina inicial del CMS de edX.

Cambiar configuracin SMTP


Por defecto, la versin de desarrollo no enva mensajes de correo a los usuarios cuando stos se
dan de alta. En su lugar, muestra por consola el mensaje de correo que se le enviara al usuario en
cuestin (al fin y al cabo, en la versin de desarrollo no debera de haber usuarios externos!)
No obstante, si se quiere comprobar cmo llegarn esos mensajes y qu aspecto tendrn, es
posible configurar edX para que la versin de desarrollo tambin haga uso de un servidor SMTP.
(ejecutar en la mquina virtual)
$ sudo su edxapp
$ /edx/app/edxapp
$ vi lms.env.json
"CONTACT_EMAIL": "info@asmoz.org,
"DEFAULT_FEEDBACK_EMAIL": "feedback@asmoz.org",
"DEFAULT_FROM_EMAIL": "profesor@asmoz.org",
"EMAIL_BACKEND": "django.core.mail.backends.smtp.EmailBackend",
"EMAIL_HOST": "safemail.euskaltel.net",
"EMAIL_PORT": 587,
"EMAIL_USE_TLS": false,
Los datos resaltados en negrita cambiarn en cada instalacin. Debes usar tus propios datos SMTP
(a no ser que uses tambin el proveedor Euskaltel, en cuyo caso valdran estos mismos).
Para el caso del CMS, se deben indicar los mismos datos pero usando el fichero cms.env.json.

Internacionalizacin (i18n) y localizacin (l10n)


edX ofrece soporte para visualizar el LMS y el CMS en distintos idiomas. Las traducciones se
gestionan a travs de la web www.transifex.com. Existe tambin un grupo de discusin en Google
Groups, bajo el nombre de openedx-translation, donde se tratan los asuntos relacionados con la
i18n y l10n de la plataforma.
Para que edX funcione en otro idioma distinto al ingls, por ejemplo en castellano (es_ES), se han
de seguir los siguientes pasos en la mquina virtual:
0. chmod -R 777 /edx/app/edxapp/edx-platform/conf/locale/
sudo su edxapp
1. Crear el fichero /edx/app/edxapp/.transifexrc con el siguiente contenido:
[https://www.transifex.com]
hostname = https://www.transifex.com
username = user
password = pass
token =
El username y el password son las credenciales de tu usuario en transifex.com, que debers crear.
Al crear tu usuario transifex nete al proyecto edx-platform correspondiente a tu idioma4. El
campo token se deja en blanco.
2. Aade el idioma que quieras usar en el fichero conf/locale/config . Para nuestro ejemplo, es_ES :
{
"locales" : ["en", "es_ES"],
"dummy-locale" : "eo"
}
3. Configura los datos i18n en lms/env/common.py :
(haz lo mismo en cms/env/common.py)
# Busca las siguientes variables y sustituye su valor por el que aparece aqu
USE_I18N = True
LANGUAGES = ( ('es_ES', 'Spanish'), )
TIME_ZONE = 'Europe/Madrid'
LANGUAGE_CODE = 'es_ES'
4. Ejecuta los siguientes comandos en tu directorio edx-platform:
$ cd /edx/app/edxapp/edx-platform/
$ tx pull -l en_US
$ tx pull -l es_ES
4

https://www.transifex.com/projects/p/edx-platform/language/es_ES/ para el ejemplo.

$ cp /edx/app/edxapp/edx-platform/conf/locale/en_US/LC_MESSAGES/* /edx/app/edxapp/edxplatform/conf/locale/en/LC_MESSAGES/
$ rake i18n:generate -t
Tras ejecutar los comandos anteriores, es necesario reiniciar los servicios LMS y CMS. Ahora, la
pgina principal de dichos servicios debe verse con los mensajes en castellano (Figura 4).

Figura 4: Pgina principal del LMS en castellano.

Importar curso de demostracin


El repositorio Git de edX incluye un curso de demostracin para que el profesorado pueda ver y
practicar sin crear un curso desde cero. Paa instalar este curso-demo, deberemos bajar el fichero
.tar.gz del repositorio oficial5, crear un curso nuevo (slo indicar los campos bsicos: nombre,
descripcin e identificador) e importar el curso-demo:
1) Seleccionar Tools/Import

2) Pulsar en el botn Choose a File to Import

https://github.com/edx/edx-demo-course

3) Comprobar que las tareas de importacin finalizan correctamente

FAQ
Cmo convierto mi cuenta en una cuenta de administrador?
Cuando creas una nueva cuenta en tu entorno de desarrollo, esta obtendr permisos de usuario
estndar. Puedes cambiar estos permisos para que el usuario adquiera el rol de
administrador global, lo que significa que podr ver automticamente la pestaa "Instructor"
en todos los cursos de edX.
mysql -u root
mysql> use edxapp;
mylsql> update auth_user set is_staff=1 where email = usuario@email.com
Tambin se puede cambiar el rol de un usuario a super_usuario:
mylsql> update auth_user set is_superuser=1 where email = usuario@email.com
Un super-usuarios podr acceder al panel de administracin de edX en localhost:8000/admin .
Cmo configuro el CMS para que slo aquellos usuarios del rol is_staff puedan crear
cursos?
en /edx/app/edxapp/edx-platform/cms/envs/common.py
aade la siguiente lnea:
'DISABLE_COURSE_CREATION': True,
(dentro de la seccin FEATURES = { } )
y reinicia el CMS.

Instalacin y configuracin de la versin de produccin


Requerimientos Hardware
El hardware necesario para soportar cientos de usuarios registrados en un nico servidor es el
siguiente.
Nota: eso ejecutar mysql, memcache, mongo, y todos los servicios edX (lms, studio, foro,
ora/discern) en un nico servidor. En configuraciones de produccin se recomienda que estos
servicios se ejecuten en diferentes mquinas y que se aada un balanceador de carga.

Ubuntu 12.04
Minimo 2GB de memori RAM (4 GB recomendado para servidores de produccin)
Mnimo, CPU a 2.00 GHz (un una unidad de computacin EC2)
Mnimo, 25GB libres de disco duro. 50GB recomendados para servidors de produccin

Para servidores de produccin en Amazon AWS es recomendable el uso de un servidor


m1.medium.

Instalacin de edX en un nico servidor Ubuntu 12.04


(Precise)
Advertencia: las siguientes instrucciones asumen que el servidor en el que las ejecutes es una
versin de Ubuntu 12.04 recin instalada (sin ninguna configuracin ni aplicacin adicional).
Lanza una instancia de Ubuntu 12.04 server y conctate como root o como un usuario con
permisos de root.
Actualiza las fuentes de los paquetes que descargar Ubuntu.
sudo apt-get update -y
sudo apt-get upgrade -y
reboot
Instala los siguientes paquetes en el servidor que ests aprovisionando:

Instalacin en un solo paso:

Por favor, lee el contenido del script antes de ejecutarlo para asegurarte de que entiendes todo lo
que hace. El script reqire que el usuario que lo ejecute tenga permisos de root (va sudo).
wget
10

https://raw.github.com/edx/configuration/577971d472ffc50f83820d139194dc3b6353f778/util/ins
tall/vagrant.sh -O - | bash

Instalacin manual

Ejecuta los siguientes comandos:


sudo apt-get install -y python-pip python-apt git-core build-essential python-dev libxml2-dev
libxslt-dev curl
sudo apt-get install software-properties-common python-software-properties
sudo apt-get install python-pip python-dev build-essential
wget https://bitbucket.org/pypa/setuptools/raw/0.8/ez_setup.py -O - | sudo python
sudo pip install --upgrade pip
sudo pip install --upgrade virtualenv

En el nuevo servidor, clona el repositorio de configuracin:

cd /var/tmp
git clone https://github.com/edx/configuration

Instala los requerimientos de ansible

cd /var/tmp/configuration
sudo pip install -r requirements.txt

Ejecuta el playbook asible edx_sandbox.yml del directorio configuration/playbooks

cd /var/tmp/configuration/playbooks
sudo ansible-playbook -c local ./edx_sandbox.yml -i "localhost,"
Nota: si recibes el siguiente error: npm Error: failed to fetch from registry: coffee-script,
aade la siguiente lnea al fichero /usr/share/npm/npmrc y vuelve a intentar la instalacin:
registry = "http://registry.npmjs.org/"

Si ansible se para en algn punto de la instalacin, analiza los ficheros log en busca de la
razn. La localizacin de los ficheros LOG se describe en una seccin posterior de este
mismo documento.

Tras la instalacin, conecta con tu navegador a los siguientes puertos:

LMS - 80
11

Studio - 18010

Sustituir los puertos por defecto por subdominios


Podras querer cambiar los puertos que usa edX por defecto para Studio y para la vista Preview del
LMS por subdominios. Por defecto, nginx har una redireccin de studio.* al proceso studio de
gunicorn.
Un ejemplo, donde preview.example.com, example.com y studio.example.com apuntan todos al
mismo servidor (y donde quieres desplegar la rama master del repositorio edx-platform).
cd /var/tmp/configuration/playbooks/edx-east

ansible-playbook -c local --limit "localhost:127.0.0.1" edx_sandbox.yml -i "localhost,"


-e
'EDXAPP_PREVIEW_LMS_BASE=preview.example.com
EDXAPP_LMS_BASE=example.com
EDXAPP_LMS_PREVIEW_NGINX_PORT=80
EDXAPP_CMS_NGINX_PORT=80
EDXAPP_LMS_NGINX_PORT=80
edx_platform_version=master '

Cmo gestionar el servidor de Produccin


Nota: estas instrucciones NO son aplicables al servidor de desarrollo (slo lo son al de Produccin)

Uso de manage.py
Conctate al servidor y sitate en el directorio /edx/app/edxapp/edx-platform directory para usar
manage.py

Listar todos los comandos de gestin


sudo /edx/bin/python.edxapp ./manage.py lms --settings aws help

Crear un nuevo usuario


sudo /edx/bin/python.edxapp
user@example.com

./manage.py

lms

--settings

aws

create_user

-e

Ver help y help <cmd> para ms informacin.

12

Verificar los servicios en ejecucin


sudo /edx/bin/supervisorctl -c /edx/etc/supervisord.conf
Deberas ver algo como lo siguiente:
certs

RUNNING pid 19862, uptime 0:00:04

discern

RUNNING pid 19926, uptime 0:00:02

discern_celery

RUNNING pid 19857, uptime 0:00:04

edxapp:cms

RUNNING pid 19884, uptime 0:00:03

edxapp:lms

RUNNING pid 19879, uptime 0:00:03

edxapp_worker:cms_default_4

RUNNING pid 19915, uptime 0:00:03

edxapp_worker:cms_high_1

RUNNING pid 19901, uptime 0:00:03

edxapp_worker:cms_low_3

RUNNING pid 19890, uptime 0:00:03

edxapp_worker:lms_default_3
edxapp_worker:lms_high_4

RUNNING pid 19897, uptime 0:00:03


RUNNING pid 19922, uptime 0:00:03

edxapp_worker:lms_high_mem_2
edxapp_worker:lms_low_1
forum

RUNNING pid 19894, uptime 0:00:03

RUNNING pid 19908, uptime 0:00:03

RUNNING pid 19855, uptime 0:00:04

ora

RUNNING pid 19875, uptime 0:00:04

ora_celery
xqueue

RUNNING pid 19866, uptime 0:00:04


RUNNING pid 19853, uptime 0:00:04

xqueue_consumer
xserver

RUNNING pid 19860, uptime 0:00:04


RUNNING pid 19854, uptime 0:00:04

Reiniciar servicios

LMS/CMS - sudo /edx/bin/supervisorctl -c /edx/etc/supervisord.conf restart edxapp

Workers - sudo /edx/bin/supervisorctl -c /edx/etc/supervisord.conf restart edxapp_worker

Actualizar las versiones de los servicios edX


Puedes usar el script /edx/bin/update para actualizar las versiones edX a las ltimas que existan en
el repositorio git.
13

Ejemplos:
sudo /edx/bin/update edx-platform master - actualiza edx-platform a la versin ms moderna del
repo (en la rama master)
sudo /edx/bin/update cs_comments_service master - actualiza el servicio de foros a la versin ms
moderna del repo (en la rama master)
Los nombres de los servicios actualizables son:
[cs_comments_service,ease,discern,xqueue,xserver,edx-platform,configuration,edx-ora]

Cmo compilar los recursos manualmente


Para compilar los recursos javascript y css fuera del script de actualizacin, ejecuta los siguientes
comandos:
sudo -u edxapp bash
source /edx/app/edxapp/edxapp_env
cd /edx/app/edxapp/edx-platform
rake lms:gather_assets:aws
rake cms:gather_assets:aws

Resolucin de problemas
No es posible conectar con el LMS
Comprueba que nginx se est ejecutando:
sudo service nginx status
sudo service nginx start
Los logs de nginx se sitan en /edx/var/log/nginx . Los ficheros de configuracin de nginx se sitan
en /edx/app/nginx/sites-enabled .
Comprueba que el LMS/CMS est en ejecucin:
sudo /edx/bin/supervisorctl -c /edx/etc/supervisord.conf status edxapp

Ficheros Log

14

El servidor de produccin enva los logs de las aplicaciones a rsyslog y ste los guarda en
/edx/var/log .
Los logs de Supervisor (stderr y stdout), se localizan en /edx/var/log/supervisor .

Theming (Personalizacin)
Es posible modificar y ajustar el aspecto grfico del LMS de edX a la imagen grfica de la entidad
educativa que ofrece los cursos. Para ello, podremos usar como ejemplo base el tema (theme)
preparado para edX por la universidad de Stanford.

Descargar el tema de la universidad de Stanford desde GitHub

cd /edx/app/edxapp
mkdir themes
cd themes
git clone https://github.com/Stanford-Online/edx-theme.git Stanford

Indicar al fichero de configuracin del sitio web que usaremos una personlizacin grfica
Editar lms/envs/devstack.py
aadir la siguiente lnea

FEATURES['USE_CUSTOM_THEME'] = True

Indicar que el tema grfico a usar es el de Stanford


Editar ../lms.env.json
aadir las siguientes lneas
THEME_NAME : stanford,
TIME_ZONE: Europe/Madrid,
MKTG_URL_LINK_MAP : {
CONTACT: null,
FAQ: null,
HONOR : null,
PRIVACY: null
},

Copiar el fichero _stanford.scss a lms/static/


15

cp /edx/app/edxapp/themes/stanford/static/saas/_stanford.scss lms/static/saas

16