Manual en formato pdf - Instalación y configuración de la plataforma

Comentarios

Transcripción

Manual en formato pdf - Instalación y configuración de la plataforma
Instalación y configuración
de la plataforma edX
Juanan Pereira
Índice
Objetivo y descripción del proyecto...............................................................................1
Objetivo.....................................................................................................................1
Descripción................................................................................................................1
Instalación y configuración de la versión de desarrollo.................................................2
Instalación de la versión de desarrollo (DevStack) de edX........................................2
Configuración de los servicios de edX (DevStack).....................................................3
Cambiar configuración SMTP.....................................................................................4
Internacionalización (i18n) y localización (l10n).......................................................5
Importar curso de demostración...............................................................................6
FAQ.............................................................................................................................8
Instalación y configuración de la versión de producción...............................................9
Requerimientos Hardware.........................................................................................9
Instalación de edX en un único servidor Ubuntu 12.04 (Precise)..................................9
Sustituir los puertos por defecto por subdominios.................................................11
Cómo gestionar el servidor de Producción..................................................................11
Uso de manage.py...................................................................................................11
Verificar los servicios en ejecución..........................................................................11
Reiniciar servicios....................................................................................................12
Actualizar las versiones de los servicios edX...........................................................12
Cómo compilar los recursos manualmente.............................................................13
Resolución de problemas.............................................................................................13
No es posible conectar con el LMS..........................................................................13
Ficheros Log..................................................................................................................13
Theming (Personalización)...........................................................................................14
Historial de Versiones
Fecha
Autor
26/12/13
Juanan Pereira
Cambios
Primera versión
Objetivo y descripción del proyecto
Objetivo
Crear 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ón
La plataforma edX cuenta con varios componentes. En este proyecto instalaremos y probaremos
los siguientes:
LMS : Learning Management System
CMS: 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
Instalación y configuración de la versión de desarrollo
Instalación de la versión de desarrollo (DevStack) de edX
Empezaremos 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 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 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
Figura 1: Instalación de edX (versión de desarrollo) finalizada sin errores.
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
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 dirección 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).
4
Figura 3: Página inicial del CMS de edX.
Cambiar configuración SMTP
Por 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
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 = 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.
6
$ 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
página principal de dichos servicios debe verse con los mensajes en castellano (Figura 4).
Figura 4: Página principal del LMS en castellano.
Importar curso de demostración
El 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
3) Comprobar que las tareas de importación finalizan correctamente
8
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
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 -y
sudo apt-get upgrade -y
reboot
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
https://raw.github.com/edx/configuration/577971d472ffc50f83820d139194dc3b6353f778/util/ins
tall/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 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 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
•
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ón
Nota: estas instrucciones NO son aplicables al servidor de desarrollo (sólo lo son al de Producción)
Uso de manage.py
Coné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
[email protected]
./manage.py
lms
--settings
aws
create_user
-e
Ver help y help <cmd> para más información.
12
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
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 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
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
cp /edx/app/edxapp/themes/stanford/static/saas/_stanford.scss lms/static/saas
16

Documentos relacionados