Manual en formato pdf - Instalación y configuración de la plataforma
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