Instalar sakai trunk (desde las fuentes)

Estoy preparando a mi niño para el intenso verano que nos viene y es que estaré desarrollando un proyecto para el Gsoc (!). Y hay tanto (¡TANTO!) que hacer que la verdad es que estoy un poco aturdida, así que como antídoto voy a aplicar el mantra “Divide y vencerás” que tan buen resultado le da a todo el mundo. Y mi primera etapa va a consistir en crear un entorno de trabajo listo para la acción.

Mi mac, en adelante Noam, es un macbook de 13″, (es chiquitico, sí, pero ya vereís desde que sitios acabaré trabajando ya que voy siempre con él), corriendo mac os x 10.3.6. Así que este va a ser mi estación de trabajo y todas las cosicas que explique pues como es lógico “funcionaran” con estos requisitos técnicos.

Instalar Sakai es un infierno y eso es así, (espero que mi mentor no lea esto). Y por más veces que lo haga no es que mejore mucho el proceso, eso sí, cada vez soy más paciente y poquito a poquito los errores me van sonando, pero en definitiva algo va a fallar, no tengas miedo, al menos la comunidad es grande y ayuda a las pobre hormiguitas como yo.  Allá vamos pues…

1 .Verificar / Instalar Java 1.5

Pirmer paso de la guía y primer paso que me voy a saltar (luego me quejo de que no vayan las cosas). En mi sistema operativo java viene preinstalado por defecto. Simplemente lo comprobamos escribiendo en la terminal:

noam:~ ada$ java -version
java version "1.6.0_17"
Java(TM) SE Runtime Environment (build 1.6.0_17-b04-248-10M3025)
Java HotSpot(TM) 64-Bit Server VM (build 14.3-b01-101, mixed mode)

Y efectivamente ahí esta Java, pero es Java 6.0. con sus 64 bits más chulo que un ocho. Vale, como la experiencia es la madre de la ciencia, aunque la comunidad recomiende instalar Java 5.0. a mi esta versión no me da ningún problema, y Steve también dice que le funciona, así que al siguiente paso.

2. Instalar/Verificar mysql 4.1

Segun pone en la guía al parecer con mysql 5.0.x funciona también bien, y como soy una personita valiente he decidido bajarme la úlima versión que estaba en el respositorio: la versión 5.1.46. Me he bajado un fichero dmg desde la página oficial de mysql. Lo pero es que hay que pasar por el aburrido proceso de registrarnos.

Vale ya  tenemos el .dmg , lo montamos y e instalamos los dos paqueticos que tiene la imagen, como es un proceso de siguiente siguiente es fácil a más no poder. Y en un periquete tenemos mysql instalado. La ruta de acceso es /usr/local/mysql, pero como es un rollo acceder así vamos a ponerlo en el fichero .bash_profile añadiendo la siguiente línea:

export PATH=$PATH:/usr/local/mysql/bin

Vamos a poner la contraseña de root para poder empezar a jugar con nuestra base de datos. Para ello tecleamos:

$ ./bin/mysqladmin -u root password new_password

Claro que si lo haces sustituye new_password por tu nueva contraseña :)

Un alidado bueno bueno para trabajar después será el Sequel pro, un estupendo visor/editor para trabajar con nuestra base de datos en mac.

3. Crear la base de datos de Sakai y el usuario

O bien por la teminal o con el programita, accedemos a mysql con el usuario root y su contraseña. Como yo soy más de terminal pongo los comanditos aquí:

$ mysql -u root -p
mysql> create database sakai default character set utf8;
mysql> grant all privileges on sakai.* to 'sakai'@'localhost' identified by 'user';
mysql> flush privileges
mysql> quit

Y con esto ya tenemos nuesta base de datos lista para seguir instalando cositas.

4. Descargar y configurar Maven

Maven es una herramienta de software para la gestión y construcción de proyectos JAva creada por Jason van Zyl, de Sonatype, en 2002. Tiene un modelo de configuración de construcción basado en un formato XML. Maven utiliza un Project Object Model (POM),  para describir el proyecto de software a construir, sus dependencias de otros módulos y componentes externos, y el orden de construcción de los elementos. Viene con objetivos predefinidos para realizar ciertas tareas claramente definidas, como la compilación del código y su empaquetado. [Gracias wikipedia]

Con maven compilaremos todo sakai, así que es una herramienta muy importante.

Desde la página oficial de maven descargamos la versión 2.0.11. Una vez lo tengamos, descomprimimos el fichero que acabamos de bajarnos donde queramos instalarlo en mi caso va a ser en esta ruta ~/Trabajo/Sakai/maven después tendremos que ser consecuentes para establecer las variables de entorno, pero mientras nos acordemos como si lo queremos instalar en la ruta del tour de Francia.

Aquí va un aviso importante para navegantes,  al instalar sakai hay que modificar un buen puñadito de variables de entorno, si lo hacemos cada vez es un rollo bastante importante así que lo que haremos será escribir todas las variables en un fichero que se llama .bash_profile y que está en la raíz de nuestro usuario. Vamos a por ello pues. Tecleamos lo siguiente en la terminal:

$ open ~/.bash_profile

y en el fichero añadimos la variable de entorno MAVEN_HOME

export MAVEN_HOME=~/Trabajo/Sakai/maven

Y ahora nos queda añadirla al PATH para que así nuestro unix lo encuentre cuando vayamos a ejecutar maven desde la consola:

export PATH=$PATH:$MAVEN_HOME/bin

Una última pega tiene esto y es que sakai “a veces” se queda sin memoria así que hay que hay que incrementar las opciones de maven. Esto va un poquito a ojo (seguro quien sepa bien hacer esto le parecerá una abominación lo que acabo de escribir),  y estas es la configuración que a mi me funciona. Si se queda sin memoria es cuestión de añadir más:

export MAVEN_OPTS='-Xms256m -Xmx512m -XX:PermSize=64m -XX:MaxPermSize=128m'

En resumen, a nuestro fichero .bash_profile le hemos añadido las siguientes variables de entorno:

# VARIABLE DE ENTORNO DE MAVEN
export MAVEN_HOME=/Users/ada/Trabajo/Sakai/maven
export PATH=$PATH:$MAVEN_HOME/bin
export MAVEN_OPTS='-Xms256m -Xmx512m -XX:PermSize=64m -XX:MaxPermSize=128m'

Vamos a comprobar que todo vaya bien:

$ mvn --version
Apache Maven 2.2.0 (r788681; 2009-06-26 15:04:01+0200)
Java version: 1.6.0_17
Java home: /System/Library/Frameworks/JavaVM.framework/Versions/1.6.0/Home
Default locale: es_ES, platform encoding: MacRoman
OS name: "mac os x" version: "10.6.3" arch: "x86_64" Family: "mac"

Yuhu! Maven ya esta instalado a por el siguiente paso.

5. Instalar/Verificar que tenemos instalado Subversión

Como todo código para el que trabaje más de una persona, Sakai tamibén necesita un sistema de control de versiones, y Sakai hace uso de Svn.

Para comprobar que esta instalado escribimos en la terminal:

$ svn --version
svn, version 1.6.5 (r38866)
compiled Oct 16 2009, 02:54:10
 
Copyright (C) 2000-2009 CollabNet.
Subversion is open source software, see http://subversion.tigris.org/
This product includes software developed by CollabNet (http://www.Collab.Net/).

Y como está :) pasamos a la siguiente.

6. Descargar e instalar tomcat 5.5.17+ (estable)

Este paso es muy simple. Entramos en la web de tomcat, descargamos tomacat 5.5.29, que es la última estable que tienen los señores y señoras de apache. Descomprimimos el paquete (ojo, en una ruta razonable que luego hay que entrar). Entramos en la carpeta de tomcat/bin y le damos permisos de ejecución a los scripts:

sudo chmod ug+x *.sh

A continuación modificamos el fichero server.xml (se encuentra en /tomcat/conf/server.xml) y en la configuración del puerto de conexión, vamos a añadirle la codificación para carácteres utf-8.
Buscaremos, por tanto, la siguiente etiqueta:

Y añadiremos URIEncoding=”UTF-8″. Con lo que nos quedará así:

<Connector port="8080" maxHttpHeaderSize="8192"
maxThreads="150" minSpareThreads="25" maxSpareThreads="75"
enableLookups="false" redirectPort="8443" acceptCount="100"
connectionTimeout="20000" disableUploadTimeout="true" URIEncoding="UTF-8" >

Inculimos las siguientes variables de entorno al fichero .bash_profile:

export CATALINA_HOME=~/sakai/tomcat
export PATH=$PATH:$CATALINA_HOME/bin
export JAVA_OPTS="-server -XX:+UseParallelGC -Xmx876m -XX:MaxPermSize=2160m -Djava.awt.headless=true"

7. Descargar y configurar el conector para Mysql

Descargamos la libreria que permitirá la comunicación entre sakai y la base de datos. Como tengo instalado un mysql 5.x, la libreria que tengo que bajar es la siguiente:
http://dev.mysql.com/downloads/connector/j/5.0.html

Extraemos el zip y copiamos el fichero mysql-connector-java-<version>-bin.jar en $CATALINA_HOME/common/lib, de este modo tomcat lo encontrará cuando despliege.

8. Descargar el código de sakai con svn

¡Por fin! Ya estamos más cerquita del final (por lo menos ya tenemos el código tras este paso). Descargamos el código de aquí:

$ svn checkout https://source.sakaiproject.org/svn/sakai/trunk/ trunk

9. Configurar el fichero de sakai.properties

Debemos crear una carpeta llamada sakai, dentro de $CATALINA_HOME, es decir en la carpeta del tomcat. Tenemos un ejemplo de properties en el código en trunk/reference/docs/sakai.properties, copiamos este fichero a la carpeta que acabamos de crear.

Editaremos ahora el fichero de propiedades para trabajar con sakai

Comentamos las líneas de configuración de  HSQLDB:

## HSQLDB settings - on by default
#vendor@org.sakaiproject.service.framework.sql.SqlService=hsqldb
#driverClassName@javax.sql.BaseDataSource=org.hsqldb.jdbcDriver
#hibernate.dialect=org.hibernate.dialect.HSQLDialect
#validationQuery@javax.sql.BaseDataSource=select 1 from SYSTEM_USERS
# two hsqldb storage options: first for in-memory (no persistence between runs), second for disk based
#url@javax.sql.BaseDataSource=jdbc:hsqldb:.
#url@javax.sql.BaseDataSource=jdbc:hsqldb:${sakai.home}/db/sakai.db

Indicamos el nombre del usuario y el de la base de datos y la contraseña para acceder:

username@javax.sql.BaseDataSource=sakai
password@javax.sql.BaseDataSource=tu_contraseña

Finalmente descomentamos los datos de configuración de mysql, y se quedará así:

## MySQL settings - make sure to alter as appropriate
vendor@org.sakaiproject.db.api.SqlService=mysql
driverClassName@javax.sql.BaseDataSource=com.mysql.jdbc.Driver
hibernate.dialect=org.hibernate.dialect.MySQLInnoDBDialect
url@javax.sql.BaseDataSource=jdbc:mysql://127.0.0.1:3306/sakai?useUnicode=true&amp;characterEncoding=UTF-8
validationQuery@javax.sql.BaseDataSource=select 1 from DUAL
defaultTransactionIsolationString@javax.sql.BaseDataSource=TRANSACTION_READ_COMMITTED

10. Crear el fichero de configuración de maven:

Ahora creamos en ~ un directorio oculto llamado .m2, aquí esta el repositorio donde maven desplegará. Dentro de este directorio creamos un fichero de configuración llamado settings.xml, con el siguiente contenido:

<settings xmlns="http://maven.apache.org/POM/4.0.0"
   xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
   xsi:schemaLocation="http://maven.apache.org/POM/4.0.0
                      http://maven.apache.org/xsd/settings-1.0.0.xsd">
  <profiles>
    <profile>
      <id>tomcat5x</id> 
      <activation>
        <activeByDefault>true</activeByDefault> 
      </activation>
      <properties>
        <appserver.id>tomcat5x</appserver.id> 
        <appserver.home>${env.CATALINA_HOME}</appserver.home> 
        <maven.tomcat.home>${env.CATALINA_HOME}</maven.tomcat.home> 
        <sakai.appserver.home>${env.CATALINA_HOME}</sakai.appserver.home> 
        <surefire.reportFormat>plain</surefire.reportFormat>
        <surefire.useFile>false</surefire.useFile>
      </properties>
    </profile>
  </profiles>
</settings>

¡Atención a la parametrización! Nos va a facilitar un montón la existencia, aunque ahora no lo podaís ver.

11. Utilizar maven para desplegar sakai

Esto ya casi casi esta. Abrimos una terminal y nos situamos donde tenemos el código fuente de sakai y tecleamos:

mvn clean install sakai:deploy -Dmaven.test.skip=true

Y ahora paciencia infinita, porque la primera vez que arranca tiene que descargarse un montón de librerias y tardará (mucho). Si sois valientes, después de lo dicho, le quitais el “-Dmaven.test.skip=true”, os hará todos los tests y tardará ni se sabe.

[INFO] ------------------------------------------------------------------------
[INFO] BUILD SUCCESSFUL
[INFO] ------------------------------------------------------------------------
[INFO] Total time: 44 minutes 26 seconds
[INFO] Finished at: Fri May 21 13:42:51 CEST 2010
[INFO] Final Memory: 185M/344M
[INFO] ------------------------------------------------------------------------

Yuhu! Ya a compilado, ahora a arrancar el tomcat para poder probar nuestro flamante sakai nuevo, tras 44 minutos, vereís que mentirosa no soy.

~/tomcat/bin/startup
tail -f ~/tomcat/logs/catalina.out

Con estos dos comandos podremos arrancar tomcat y además ver el log, así podremos detectar si algo va mal. (Aunque como casi todos los logs es un poco marciano.)

Y por fin, veremos en la terminal la siguiente línea:

2010-06-08 16:18:13,274  INFO main org.apache.catalina.startup.Catalina – Server startup in 166240 ms

Y con esto y un bizcocho ya tenemos el trunk instalado.  Abrimos nuestro navegador favorito, escribimos: http://localhost:8080/portal y voilá  ya podemos ver la plataforma.

Pantalla de arranque de sakai

Pantalla de arranque de sakai

Como tener dos (o más) fuentes de sakai instalados {instalando sakai 2.7.0} Siguiente

Contestar