Un caso real de integración de blogs en la docencia

Un blog se trata de un sitio que se actualiza más o menos periódicamente y que se compone de una serie de publicaciones que tratan sobre uno o varios temas y que pueden ser comentadas por otros usuarios.

Independientemente del uso de campus virtuales o plataformas de formación en línea, los blogs son una de las herramientas que se pueden incorporar a la docencia.

En el caso que se plantea, los blogs se incorporaron en la asignatura de Ingeniería del Software I del Grado de Ingeniería Informática para guiar la evaluación continua durante el desarrollo de toda la asignatura.

¿Qué utilizamos?

Configuración

En primer lugar, creamos grupos formados por 3/4 estudiantes. En nuestro caso les permitimos que configuren los grupos como ellos prefieran. Para cada grupo de estudiantes se crea un blog con una única cuenta de usuario por cada blog.

Luego se crea un blog de la asignatura en el cual se configure el plugin FeedWordPress para que recolecte las publicaciones de los blogs de los grupos.

Finalmente, todos los blogs se configuran como privados, es decir, únicamente los usuarios con cuenta en el blog pueden ver los blogs de los grupos y el blog de la asignatura. De esta forma solo pueden ver las aportaciones de los/as compañeros/as aquellos/as estudiantes que participen en la evaluación continua con el uso de los blogs; los/as estudiantes que no asisten a clase, y por tanto no formaban parte de ningún grupo, no pueden beneficiarse de los análisis y el trabajo de sus compañeros/as.

Desarrollo

Durante el desarrollo de la clase el/la docente plantea cuestiones y temas que se debaten durante la clase. Posteriormente, cada grupo debe publicar en su blog el resultado del debate con las respuestas y conclusiones correspondientes.

El objetivo de esta actividad es que durante la clase se pueda profundizar en los contenidos y que los estudiantes utilicen los blogs para asentar dichos contenidos.

El blog de la asignatura tiene dos fines. Por un lado, facilitar al docente la lectura de las reflexiones como elemento de evaluación continua, sin necesidad de visitar cada uno de los blogs de los grupos. Por otro lado, los/as estudiantes pueden consultar las reflexiones de otros compañeros y de esta forma mejorar sus conocimientos relativos a la asignatura.

Integración de Solr y Drupal 7.x

Antes de comenzar la instalación es necesario asegurarse que se tiene instalado Java 5 o superior y como mínimo PHP 5.2.4. Para este caso se ha utilizado un servidor con las siguientes versiones:

  • Ubuntu Server 12.04
  • PHP 5.3.10
  • Apache/2.2.22
  • Java 6

En primer lugar se debe instalar el módulo de Drupal Apache Solr Search Integration (http://drupal.org/project/apachesolr). Se ha trabajado con la versión 7.x-1.2 del módulo.

Antes de activar el módulo es necesario realizar la instalación de Solr (http://lucene.apache.org/solr). A pesar de que existan paquetes para Solr en Debian y en Ubuntu, para que la integración funcione con Drupal se ha descargado la última versión de la página oficial (Solr 3.6.2 – http://www.apache.org/dyn/closer.cgi/lucene/solr/3.6.2).

Para instalar el servidor Solr se han seguido los siguientes pasos:

  1. Descomprimir apache-solr-3.6.2.zip en el directorio /opt siempre y cuando este no sea visible para el servidor web.
    cd /opt
    sudo unzip apache-solr-3.6.2.zip
  2. Los ficheros de configuración de Solr se encuentran en apache-solr-3.6.2/example/solr/conf. Se deben sustituir dichos ficheros por los que proporciona el módulo de Drupal:
    cd apache-solr-3.6.2/example/solr/conf
    sudo mv solrconfig.xml solrconfig.xml.bak
    sudo cp [DIR DRUPAL]/sites/all/modules/apachesolr/solr-conf/solr-3.x/solrconfig.xml .
    sudo mv schema.xml schema.xml.bak
    sudo cp [DIR DRUPAL]/sites/all/modules/apachesolr/solr-conf/solr-3.x/schema.xml .
    sudo mv protwords.txt protwords.txt.bak
    sudo cp [DIR DRUPAL]/sites/all/modules/apachesolr/solr-conf/solr-3.x/protwords.txt .
  3. El módulo de Drupal incluye además varios ficheros de configuración adicionales que se deben copiar dentro del directorio de configuración de Solr.
    cd apache-solr-3.6.2/example/solr/conf
    sudo cp [DIR DRUPAL]/sites/all/modules/apachesolr/solr-conf/solr-3.x/solrconf_extra.xml .
    sudo cp [DIR DRUPAL]/sites/all/modules/apachesolr/solr-conf/solr-3.x/solrcore.properties .
  4. Es recomendable incluir una lista de palabras vacías para optimizar la indexación de los contenidos. Se pueden encontrar listas de palabras vacías para una gran número de idiomas en http://code.google.com/p/stop-words/. Para este caso el contenido que se va a indexar está en español por lo que se ha descargado la lista de palabras vacías en español.
    sudo mv stopwords.txt stopwords.txt.bak
  5. Finalmente lanzamos Jetty con Solr.
    sudo java -jar /opt/apache-solr-3.6.2/example/start.jar

Para comprobar que el servidor Solr está funcionando correctamente se debe acceder a la siguiente url http://[TU DOMINIO]:8983/solr/admin. Asegúrate que el puerto 8983 es accesibles. En caso contrario puedes abrirlo o cambiar el puerto en el fichero de configuración de Jetty.

En /opt/apache-solr-3.6.2/example/etc/jetty.xml cambia el puerto por defecto 8983 por otro que no sea el 80:

<Call name="addConnector">
[...]
<Set name="port"><SystemProperty name="jetty.port" default="8983"/></Set>

Servidor Solr con autenticación HTTP

Para proteger la página de administración del servidor Solr mediante autenticación HTTP se han seguido las indicaciones que se encuentran en la siguiente página http://www.shayanderson.com/linux/how-to-password-protect-apache-solr-server-admin-pages.htm. En primer lugar, en el fichero /opt/apache-solr-6.3.2/example/etc/jetty.xml se debe descomentar el siguiente fragmento de código, asegurándose que se sustituye Test Realm por Solr Admin Auth.

[...]
<Set name="UserRealms">
<Array type="org.mortbay.jetty.security.UserRealm">
<Item>
<New>
<Set name="name">Solr Admin Auth</Set>
<Set name="config"><SystemProperty name="jetty.home" default="."/>/etc/realm.properties</Set>
<Set name="refreshInterval">0</Set>
</New>
</Item>
</Array>
</Set>
[...]

Después se edita /opt/apache-solr-6.3.2/example/etc/webdefault.xml y se añade al final del fichero el siguiente fragmento de código:

[...]
</locale-encoding-mapping-list>
<login-config>
<auth-method>BASIC</auth-method>
<realm-name>Solr Admin Auth</realm-name>
</login-config>
<security-constraint>
<web-resource-collection>
<web-resource-name>Solr Admin Auth</web-resource-name>
<url-pattern>/admin/*</url-pattern>
<url-pattern>/update/*</url-pattern>
</web-resource-collection>
<auth-constraint>
<role-name>admin</role-name>
</auth-constraint>
</security-constraint>
</web-app>

A continuación se crea el fichero realm.properties en /opt/apache-solr-6.3.2/example/etc en el que se debe indicar el nombre de usuario, la contraseña y el identificador (role-name) que en este caso es admin:

username: password, admin

Para que el módulo de Drupal funcione con autenticación HTTP se debe indicar el usuario y la contraseña en el campo de la URL del servidor Solr:

http://username:password@localhost:8983/solr

Script en init.d

Para terminar, creamos un script en init.d para iniciar y parar el servidor Solr:

#!/bin/sh -e

# Starts, stops, and restarts solr

SOLR_DIR="/opt/apache-solr-3.6.2/example"
JAVA_OPTIONS="-Xmx1024m -DSTOP.PORT=8079 -DSTOP.KEY=stopkey -jar start.jar"
LOG_FILE="/var/log/solr.log"
JAVA="/usr/bin/java"

case $1 in
start)
echo "Starting Solr"
cd $SOLR_DIR
$JAVA $JAVA_OPTIONS 2> $LOG_FILE &
;;
stop)
echo "Stopping Solr"
cd $SOLR_DIR
$JAVA $JAVA_OPTIONS --stop
;;
restart)
$0 stop
sleep 1
$0 start
;;
*)
echo "Usage: $0 {start|stop|restart}" >&2
exit 1
;;
esac

(fuente: http://lucene.472066.n3.nabble.com/solr-init-d-script-td1867519.html)

 

Cómo instalar Community-ID en Linux 2.0.0 RC3

En el sitio oficial de Community-ID existen una serie de sencillos tutoriales para realizar la instalación de la herramienta pero a partir de la versión 2.0.0 el proceso de instalación ha cambiado un poco. Este pequeño howto está construido a partir del tutorial original realizando algunas modificaciones y traduciéndolo al español.

Requerimientos

  • Web Server Se recomienda la versión 1.3 o superior de Apache Server. Pueden usarse alternativas de servidores HTTP como lighttpd, Cherokee HTTP server, nginx o cualquier otro servidor con el que estés familiarizado.
  • PHP Se require la versión 5.2.4 o superior de PHP, con la extensión MySQLi instalada.
  • MySQL Se requiere la versión 4.1 o superior de MySQL.

Base de datos

Community-ID necesita la creación de una base de datos en MySQL. Para ello se puede utilizar cualquiera de las herramientas de administración que existen para manejar MySQL

create database communityid;

Instalar los fuentes de Community-ID

Descargar en el siguiente enlace la versión 2.0.0 RC3 y descomprimirla en el directorio del servidor web.

cd /var/www
tar xvfz cid-2.0.0-RC3.tar.gz
mv communityid openid

o

cd /var/www
unzip cid-2.0.0-RC3.zip
mv communityid openid

Instalamos la aplicación a través de un navegador web indicando la siguiente URL:

http://mydomain.com/openid

El proceso de instalación solicitará el nombre de la base de datos previamente creada así como los datos de acceso para acceder a la misma. También se debe indicar el nombre de usuario y la contraseña para la cuenta de administrador. Dicha cuenta no dispondrá de un identificador OpenID por lo que sólo puede utilizarse para labores administrativas.

Fichero de configuración

El fichero de configuración, config.php, contiene una serie de variables que permiten configurar el funcionamiento de la aplicación. A continuación se listan algunos de los parámetros más relevantes.

# Activar (true) o desactivar (false) el formulario de registro de usuarios.
$config['environment']['registrations_enabled'] = false;
# Mantener un log del sistema. El fichero indicado debe crearse previamente y ser modificable por el usuarios del servidor web.
$config['logging']['location']              = '/var/log/communityid.log';

La sección de PASSWORDS contiene una serie de variables que permiten definir los requisitos mínimos que deben cumplir las contraseñas de los usuarios.

# Contraseña distinta al nombre de usuario
$config['security']['passwords']['username_different'] = true;
# Longitud mínima de la contraseña
$config['security']['passwords']['minimum_length'] = 6;
# true si la contraseña debe contener algún carácter numérico
$config['security']['passwords']['include_numbers'] = false;
# true si la contraseña debe contener caracteres no alfanuméricos
$config['security']['passwords']['include_symbols'] = false;
# true si la contraseña debe contener caracteres en minúsculas y mayúsculas
$config['security']['passwords']['lowercase_and_uppercase'] = false;

Permisos de acceso

Cambiamos los permisos de acceso a los ficheros de la aplicación.

cd /var/www
chown -R webserveruser:webserveruser  openid
find openid -type d -exec chmod 550 {} \;
find openid -type f -exec chmod 440 {} \;
cd openid
chmod u+w captchas

Configurar correo SMTP con Gmail en Community-ID

Community-ID viene configurado para realizar el envío de correo a través de Sendmail. Si lo que deseamos es que el envío se realice a través del servidor SMTP de Gmail hay que realizar unas pequeñas modificaciones en el fichero de configuración config.php.

Por defecto los campos correspondientes al email son:

$config['email']['transport']               = 'sendmail';
$config['email']['host']                    = '';
$config['email']['auth']                    = '';
$config['email']['username']                = '';
$config['email']['password']                = '';

En primer lugar debemos indicar smtp como tipo de transporte, todo en minúsculas, y en host smtp.gmail.com. El servidor SMTP de Gmail funciona mediante conexión ssl por el puerto 465 por lo que añadiremos a nuestro fichero de configuración dos nuevas opciones, $config[‘email’][‘ssl’] y $config[‘email’][‘port’]. Por último el tipo de autenticación debe ser login, indicando como usuario y contraseña una cuenta válida de Gmail y la contraseña correspondiente a la misma.

Después de estos cambios el fichero de configuración deberá tener una apariencia parecida a la siguiente:

$config['email']['transport']               = 'smtp';
$config['email']['host']                    = 'smtp.gmail.com';
$config['email']['ssl']                     = 'ssl';
$config['email']['port']                    = '465';
$config['email']['auth']                    = 'login';
$config['email']['username']                = 'tu-usuario-de-gmail@gmail.com';
$config['email']['password']                = 'tu-contraseña-de-gmail';

Instalar varias instancias de DSpace

Una de las fases de mi proyecto es proporcionar un repositorio de documentos para el grupo de investigación. He utilizado DSpace porque, en su momento, fue la herramienta elegida para montar Gredos, el repositorio institucional de la USAL.

Me ha costado bastante lograr que funcionara ya que a mi falta de experiencia con Tomcat se ha unido la necesidad de hacer la instalación en el mismo servidor en el que ya había otro DSpace. Esto último también ha sido una ventaja porque no he tenido que preocuparme de los requisitos de instalación, evitando así tener que instalar Tomcat, Postgres y Java.

Voy a explicar brevemente los pasos que he seguido basándome en este tutorial. He utilizado la versión 1.6.2 de DSpace y la 6.0.20 de Tomcat. [dspace-source] se refiere a /opt/dspace-1.6.2-src-release.

– Crear el usuario ‘dspace’ si no existe ya.

sudo useradd -M dspace
sudo passwd dspace

– Crear un directorio por cada instancia de DSpace que vayamos a instalar. En mi caso ya había una así que sólo tuve que crear un directorio. No es necesario que nuestras instancias se encuentren en /opt, vale cualquier otro directorio donde tengamos permisos de escritura.

sudo mkdir /opt/dspace-2
sudo chown dspace /opt/dspace-2
sudo chmod 777 /opt/dspace-2

– Creamos el usuario ‘dspace’ en ‘Postgres’ y una base de datos por cada instancia que vayamos a instalar.

sudo su postgres
createuser -U postgres -d -A -P dspace
createdb -U dspace -E UNICODE dspace-2

– Para cada instancia debemos definir un fichero de configuración en [dspace-source]/dspace/config. Para ello duplicamos el fichero por defecto dspace.cfg.

sudo cp [dspace-source]/config/dspace.cfg [dspace-source]/config/dspace-2.cfg

– Ahora editamos cada fichero de configuración y cambiamos las siguientes línea. Debe indicarse el puerto en el que esté configurado Tomcat.

dspace.dir = /opt/dspace-2
dspace.hostname = http://your-dspace-url
dspace.baseUrl = http://your-dspace-url:443
dspace.url = http://your-dspace-url:443/dspace-2
db.url = jdbc:postgresql://localhost:5432/dspace-2
db.username = dspace
db.password = contraseña-usuario-postgres-dspace

– Si se desea configurar el envío de correo hay que editar las siguientes líneas del fichero de configuración. En el ejemplo se muestran los parámetros que deben utilizarse para el envío a través de Gmail.

mail.server=smtp.gmail.com
mail.server.username = usuario-de-gmail
mail.server.password = contraseña-de-gmail
mail.from.address = dirección-de-email
feedback.recipient = dirección-de-email
mail.admin = dirección-de-email
# Descomentar las siguientes líneas
mail.extraproperties = mail.smtp.socketFactory.port=465, \
mail.smtp.socketFactory.class=javax.net.ssl.SSLSocketFactory, \
mail.smtp.socketFactory.fallback=false

– Otras opciones interesantes son las siguientes:

# Idioma por defecto
default.locale = es
# Idiomas que el usuario puede seleccionar
webui.supported.locales = es, en
# Si se desea evitar que cualquier usuario pueda registrarse
authentication.shib.autoregister = false
# En mi caso la opción anterior no realizaba bien su cometido así que habilité el siguiente parámetro e indiqué un dominio que no existe
# Este parámetro restringe el registro únicamente a aquellos emails que terminan en los dominios indicados.
authentication.password.domain.valid = xxx.xxx

– Accedemos al sistema como el usuario ‘dspace’ y generamos los paquetes de la instalación con maven.

cd [dspace-source]/dspace/
sudo su dspace
mvn package

-Instalamos cada una de las instancias utilizando los ficheros de configuración definidos anteriormente.

cd [dspace-source]/dspace/target/dspace-[version].dir/
sudo su dspace
ant -Dconfig=[dspace-source]/config/dspace-2.cfg fresh_install

– Añadimos una cuenta de administrador.

sudo -u dspace [dspace-instances]/dspace-2/bin/create-administrator

– Configuramos Tomcat.

sudo vim [TOMCAT_HOME]/conf/server.xml
<!-- DEFINE A CONTEXT PATH FOR DSpace JSP User Interface  -->
<Context path="/dspace-2" docBase="[dspace-instances]/dspace-2/webapps/jspui/"
debug="0" reloadable="true" cachingAllowed="false" allowLinking="true"/>

– Por último reiniciamos Tomcat y listo.Para comprobar que funciona correctamente basta acceder a la url que se indicó en el fichero de configuración: http://your-dspace-url:443/dspace-2

sudo /etc/init.d/tomcat start