Instalación y configuración de la plataforma edXedx.asmoz.org/pdf/instalacion.pdf ·...

19
Instalación y configuración de la plataforma edX Juanan Pereira

Transcript of Instalación y configuración de la plataforma edXedx.asmoz.org/pdf/instalacion.pdf ·...

Page 1: Instalación y configuración de la plataforma edXedx.asmoz.org/pdf/instalacion.pdf · aprovisionará (se instalarán las dependencias que requiere edX). Este proceso inicial puede

Instalación y configuración de la plataforma edX

Juanan Pereira

Page 2: Instalación y configuración de la plataforma edXedx.asmoz.org/pdf/instalacion.pdf · aprovisionará (se instalarán las dependencias que requiere edX). Este proceso inicial puede

ÍndiceObjetivo y descripción del proyecto...............................................................................1

Objetivo.....................................................................................................................1Descripción................................................................................................................1

Instalación y configuración de la versión de desarrollo.................................................2Instalación de la versión de desarrollo (DevStack) de edX........................................2Configuración de los servicios de edX (DevStack).....................................................3Cambiar configuración SMTP.....................................................................................4Internacionalización (i18n) y localización (l10n).......................................................5Importar curso de demostración...............................................................................6FAQ.............................................................................................................................8

Instalación y configuración de la versión de producción...............................................9Requerimientos Hardware.........................................................................................9

Instalación de edX en un único servidor Ubuntu 12.04 (Precise)..................................9Sustituir los puertos por defecto por subdominios.................................................11

Cómo gestionar el servidor de Producción..................................................................11Uso de manage.py...................................................................................................11Verificar los servicios en ejecución..........................................................................11Reiniciar servicios....................................................................................................12Actualizar las versiones de los servicios edX...........................................................12Cómo compilar los recursos manualmente.............................................................13

Resolución de problemas.............................................................................................13No es posible conectar con el LMS..........................................................................13

Ficheros Log..................................................................................................................13Theming (Personalización)...........................................................................................14

Page 3: Instalación y configuración de la plataforma edXedx.asmoz.org/pdf/instalacion.pdf · aprovisionará (se instalarán las dependencias que requiere edX). Este proceso inicial puede

Historial de VersionesFecha Autor Cambios

26/12/13 Juanan Pereira Primera versión

Page 4: Instalación y configuración de la plataforma edXedx.asmoz.org/pdf/instalacion.pdf · aprovisionará (se instalarán las dependencias que requiere edX). Este proceso inicial puede

Objetivo y descripción del proyecto

ObjetivoCrear la documentación 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.

DescripciónLa plataforma edX cuenta con varios componentes. En este proyecto instalaremos y probaremos los siguientes:

LMS : Learning Management SystemCMS: Content Management System (también conocido como edX Studio)Forum: foros de discusión

Se instalarán 2 versiones de edX: una para desarrollo (pruebas) y otra para producción (explotación). Inicialmente ambas versiones están en inglés, por lo que se ofrecerán los pasos necesarios para la instalación del soporte de castellano1.

La versión de desarrollo se instala sobre una máquina 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 podría valer una máquina con menos recursos, es recomendable que tenga esa capacidad en memoria debido al alto consumo de RAM de la máquina virtual). Se recomienda disponer al menos de 20GB de espacio en disco (sólo la máquina virtual, sin configurar, requiere de 2GB).

La versión de explotación requiere de una máquina 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 máquina física o bien crear internamente una máquina virtual e instalar la versión de producción sobre dicha máquina virtual.

Una vez instaladas las versiones de desarrollo y prueba, se mostrará, a grandes rasgos, cómo crear un curso online haciendo uso del módulo edX Studio.

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

1

Page 5: Instalación y configuración de la plataforma edXedx.asmoz.org/pdf/instalacion.pdf · aprovisionará (se instalarán las dependencias que requiere edX). Este proceso inicial puede

Instalación y configuración de la versión de desarrollo

Instalación de la versión de desarrollo (DevStack) de edXEmpezaremos configurando esta versión. Para ello, es necesario instalar previamente en la máquina física (host3) tantoVirtualBox (versión>= 4.2.12) como Vagrant (versión >= 1.3.4).

En el host, es necesario también instalar soporte NFS para poder compartir carpetas entre el host y la máquina virtual (guest):

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

Crear un directorio para la instalación de edX, descargar el fichero Vagrantfile y crear la instancia (máquina virtual):

mkdir devstackcd devstackcurl https://raw.github.com/edx/configuration/master/vagrant/release/devstack/Vagrantfile > Vagrantfilevagrant up

La primera vez que lancemos el comando “vagrant up”, se instalará una máquina virtual y se aprovisionará (se instalarán 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 instalación (Figura 1).

3 Se recomienda que la máquina host use un sistema operativo Linux (a ser posible Ubuntu, aunque podría funcionar también en Debian)

2

Page 6: Instalación y configuración de la plataforma edXedx.asmoz.org/pdf/instalacion.pdf · aprovisionará (se instalarán las dependencias que requiere edX). Este proceso inicial puede

Al lanzar la máquina virtual con el comando vagrant up, es probable que se pida el password del usuario local (usuario de la máquina física) para poder configurar las carpetas compartidas por NFS entre host y guest.

Al arrancar Vagrant, éste puede añadir una nueva entrada al fichero hosts de la máquina física 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 máquina virtual (plataforma edX):

$ vagrant ssh

Configuración 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

Figura 1: Instalación de edX (versión de desarrollo) finalizada sin errores.

Page 7: Instalación y configuración de la plataforma edXedx.asmoz.org/pdf/instalacion.pdf · aprovisionará (se instalarán las dependencias que requiere edX). Este proceso inicial puede

sudo su edxapp./manage.py cms runserver --settings=devstack 0.0.0.0:8001

Lanzamos el foro:sudo su forumruby app.rb

Podremos comprobar que el LMS está online abriendo la dirección http://localhost:8000 en el navegador (Figura 2).

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

4

Figura 2: Pantalla inicial del LMS de edX.

Page 8: Instalación y configuración de la plataforma edXedx.asmoz.org/pdf/instalacion.pdf · aprovisionará (se instalarán las dependencias que requiere edX). Este proceso inicial puede

Cambiar configuración SMTPPor defecto, la versión de desarrollo no envía 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 enviaría al usuario en cuestión (al fin y al cabo, en la versión de desarrollo ¡no debería de haber usuarios externos!)

No obstante, si se quiere comprobar cómo llegarán esos mensajes y qué aspecto tendrán, es posible configurar edX para que la versión de desarrollo también haga uso de un servidor SMTP.

(ejecutar en la máquina virtual)$ sudo su edxapp$ /edx/app/edxapp$ vi lms.env.json

"CONTACT_EMAIL": "[email protected]”, "DEFAULT_FEEDBACK_EMAIL": "[email protected]", "DEFAULT_FROM_EMAIL": "[email protected]", "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 cambiarán en cada instalación. Debes usar tus propios datos SMTP (a no ser que uses también el proveedor Euskaltel, en cuyo caso valdrían estos mismos).

Para el caso del CMS, se deben indicar los mismos datos pero usando el fichero cms.env.json.

5

Figura 3: Página inicial del CMS de edX.

Page 9: Instalación y configuración de la plataforma edXedx.asmoz.org/pdf/instalacion.pdf · aprovisionará (se instalarán las dependencias que requiere edX). Este proceso inicial puede

Internacionalización (i18n) y localización (l10n)edX ofrece soporte para visualizar el LMS y el CMS en distintos idiomas. Las traducciones se gestionan a través de la web www.transifex.com. Existe también un grupo de discusión 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 inglés, por ejemplo en castellano (es_ES), se han de seguir los siguientes pasos en la máquina 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 deberás crear. Al crear tu usuario transifex únete al proyecto edx-platform correspondiente a tu idioma4. El campo token se deja en blanco.

2. Añade 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 = TrueLANGUAGES = ( ('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.

6

Page 10: Instalación y configuración de la plataforma edXedx.asmoz.org/pdf/instalacion.pdf · aprovisionará (se instalarán las dependencias que requiere edX). Este proceso inicial puede

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

Importar curso de demostraciónEl repositorio Git de edX incluye un curso de demostración 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 (sólo indicar los campos básicos: nombre, descripción e identificador) e importar el curso-demo:

1) Seleccionar Tools/Import

2) Pulsar en el botón “Choose a File to Import”

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

7

Figura 4: Página principal del LMS en castellano.

Page 11: Instalación y configuración de la plataforma edXedx.asmoz.org/pdf/instalacion.pdf · aprovisionará (se instalarán las dependencias que requiere edX). Este proceso inicial puede

3) Comprobar que las tareas de importación finalizan correctamente

8

Page 12: Instalación y configuración de la plataforma edXedx.asmoz.org/pdf/instalacion.pdf · aprovisionará (se instalarán las dependencias que requiere edX). Este proceso inicial puede

FAQ¿Cómo convierto mi cuenta en una cuenta de administrador?Cuando creas una nueva cuenta en tu entorno de desarrollo, esta obtendrá permisos de usuario

estándar. Puedes cambiar estos permisos para que el usuario adquiera el rol de administrador global, lo que significa que podrá ver automáticamente la pestaña "Instructor" en todos los cursos de edX.

mysql -u root

mysql> use edxapp;

mylsql> update auth_user set is_staff=1 where email = ‘[email protected]

También se puede cambiar el rol de un usuario a super_usuario:

mylsql> update auth_user set is_superuser=1 where email = ‘[email protected]

Un super-usuarios podrá acceder al panel de administración de edX en localhost:8000/admin .

¿Cómo configuro el CMS para que sólo aquellos usuarios del rol is_staff puedan crear cursos?

en /edx/app/edxapp/edx-platform/cms/envs/common.py

añade la siguiente línea:

'DISABLE_COURSE_CREATION': True,

(dentro de la sección FEATURES = { } )

y reinicia el CMS.

9

Page 13: Instalación y configuración de la plataforma edXedx.asmoz.org/pdf/instalacion.pdf · aprovisionará (se instalarán las dependencias que requiere edX). Este proceso inicial puede

Instalación y configuración de la versión de producción

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 producción se recomienda que estos servicios se ejecuten en diferentes máquinas y que se añada un balanceador de carga.

• Ubuntu 12.04• Minimo 2GB de memori RAM (4 GB recomendado para servidores de producción)• Mínimo, CPU a 2.00 GHz (un una unidad de computación EC2)• Mínimo, 25GB libres de disco duro. 50GB recomendados para servidors de producción

Para servidores de producción en Amazon AWS es recomendable el uso de un servidor m1.medium.

Instalación 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 versión de Ubuntu 12.04 recién instalada (sin ninguna configuración ni aplicación adicional).

Lanza una instancia de Ubuntu 12.04 server y conéctate como root o como un usuario con permisos de root.

Actualiza las fuentes de los paquetes que descargará Ubuntu.

sudo apt-get update -ysudo apt-get upgrade -yreboot

Instala los siguientes paquetes en el servidor que estás aprovisionando:

• Instalación 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 (vía sudo).

wget

10

Page 14: Instalación y configuración de la plataforma edXedx.asmoz.org/pdf/instalacion.pdf · aprovisionará (se instalarán las dependencias que requiere edX). Este proceso inicial puede

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

• Instalación manual

Ejecuta los siguientes comandos:

sudo apt-get install -y python-pip python-apt git-core build-essential python-dev libxml2-dev libxslt-dev curlsudo apt-get install software-properties-common python-software-properties

sudo apt-get install python-pip python-dev build-essentialwget https://bitbucket.org/pypa/setuptools/raw/0.8/ez_setup.py -O - | sudo pythonsudo pip install --upgrade pipsudo pip install --upgrade virtualenv

• En el nuevo servidor, clona el repositorio de configuración:

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”,añade la siguiente línea al fichero /usr/share/npm/npmrc y vuelve a intentar la instalación:

registry = "http://registry.npmjs.org/"

• Si ansible se para en algún punto de la instalación, analiza los ficheros log en busca de la razón. La localización de los ficheros LOG se describe en una sección posterior de este mismo documento.

Tras la instalación, conecta con tu navegador a los siguientes puertos:

• LMS - 80

11

Page 15: Instalación y configuración de la plataforma edXedx.asmoz.org/pdf/instalacion.pdf · aprovisionará (se instalarán las dependencias que requiere edX). Este proceso inicial puede

• Studio - 18010

Sustituir los puertos por defecto por subdominios

Podrías 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 redirección 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 '

Cómo gestionar el servidor de ProducciónNota: estas instrucciones NO son aplicables al servidor de desarrollo (sólo lo son al de Producción)

Uso de manage.pyConéctate al servidor y sitúate en el directorio /edx/app/edxapp/edx-platform directory para usar

manage.py

• Listar todos los comandos de gestión

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

• Crear un nuevo usuario

sudo /edx/bin/python.edxapp ./manage.py lms --settings aws create_user -e [email protected]

Ver help y help <cmd> para más información.

12

Page 16: Instalación y configuración de la plataforma edXedx.asmoz.org/pdf/instalacion.pdf · aprovisionará (se instalarán las dependencias que requiere edX). Este proceso inicial puede

Verificar los servicios en ejecución

sudo /edx/bin/supervisorctl -c /edx/etc/supervisord.conf

Deberías 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 RUNNING pid 19897, uptime 0:00:03

edxapp_worker:lms_high_4 RUNNING pid 19922, uptime 0:00:03

edxapp_worker:lms_high_mem_2 RUNNING pid 19894, uptime 0:00:03

edxapp_worker:lms_low_1 RUNNING pid 19908, uptime 0:00:03

forum RUNNING pid 19855, uptime 0:00:04

ora RUNNING pid 19875, uptime 0:00:04

ora_celery RUNNING pid 19866, uptime 0:00:04

xqueue RUNNING pid 19853, uptime 0:00:04

xqueue_consumer RUNNING pid 19860, uptime 0:00:04

xserver 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

Page 17: Instalación y configuración de la plataforma edXedx.asmoz.org/pdf/instalacion.pdf · aprovisionará (se instalarán las dependencias que requiere edX). Este proceso inicial puede

Ejemplos:

sudo /edx/bin/update edx-platform master - actualiza edx-platform a la versión más moderna del repo (en la rama master)

sudo /edx/bin/update cs_comments_service master - actualiza el servicio de foros a la versión más 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]

Cómo compilar los recursos manualmente

Para compilar los recursos javascript y css fuera del script de actualización, 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

Resolución 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 sitúan en /edx/var/log/nginx . Los ficheros de configuración de nginx se sitúan en /edx/app/nginx/sites-enabled .

Comprueba que el LMS/CMS está en ejecución:

sudo /edx/bin/supervisorctl -c /edx/etc/supervisord.conf status edxapp

Ficheros Log

14

Page 18: Instalación y configuración de la plataforma edXedx.asmoz.org/pdf/instalacion.pdf · aprovisionará (se instalarán las dependencias que requiere edX). Este proceso inicial puede

El servidor de producción envía 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 (Personalización)

Es posible modificar y ajustar el aspecto gráfico del LMS de edX a la imagen gráfica 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 configuración del sitio web que usaremos una personlización gráfica

Editar lms/envs/devstack.py

añadir la siguiente línea

• FEATURES['USE_CUSTOM_THEME'] = True

Indicar que el tema gráfico a usar es el de Stanford

Editar ../lms.env.json

añadir las siguientes líneas

“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

Page 19: Instalación y configuración de la plataforma edXedx.asmoz.org/pdf/instalacion.pdf · aprovisionará (se instalarán las dependencias que requiere edX). Este proceso inicial puede

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

16