jueves, 15 de abril de 2010

01-Instalación Alfresco 3.3 Community WAR en GNU\Linux Kubuntu Lucid Lynx (Prerrequisitos)

Alfresco es un Gestor de Documentación profesional y Open Source. Tiene dos versiones. Una versión Enterprise (de pago y con servicio técnico, etc.) y Community (gratuita y sin garantía)

Requisitos

Para la instalación de Alfresco 3.3 Community usaremos los ficheros WAR que sirven para desplegar aplicaciones en servidores ya existentes. Necesitamos realizar ciertos pasos con anterioridad.

Yo usaré un GNU\Linux Kubuntu 10.04 LTS Lucid Lynx (versión beta2 actualmente) de 32Bits.

Instalación de Java

En mi caso voy a usar el Java de Sun (Oracle)

$ sudo aptitude install sun-java6-bin sun-java6-jre sun-java6-jdk sun-java6-plugin sun-java6-fonts libcommons-el-java

Cuando nos lo pida en la consola aceptamos la licencia.

$ java -version
java version "1.6.0_20"
Java(TM) SE Runtime Environment (build 1.6.0_20-b02)
Java HotSpot(TM) Server VM (build 16.3-b01, mixed mode)

Si tuviéramos ya instalado otro java podríamos hacer que se use por defecto el de Sun con:

$ sudo update-alternatives --config java
Sólo hay una alternativa en el vínculo de grupo java: /usr/lib/jvm/java-6-sun/jre/bin/java
Nada que configurar.

En mi caso no hay otro pero si lo hubiera este comando es interactivo y podríais elegir. Si lo queréis para un script (no-interactivo)

$ sudo update-alternatives --set java /usr/lib/jvm/java-6-sun/jre/bin/java

Instalación de MySQL

Instalamos el servidor mysql

$ sudo aptitude install mysql-server-5.1 mysql-client-5.1 libmysql-java

y cuando nos lo pida en la consola introducimos la contraseña del usuario root. Posteriormente instalaremos la base de datos de alfresco.

$ mysqladmin -u root -p version
Enter password: 
mysqladmin  Ver 8.42 Distrib 5.1.41, for debian-linux-gnu on i486
Copyright 2000-2008 MySQL AB, 2008 Sun Microsystems, Inc.
This software comes with ABSOLUTELY NO WARRANTY. This is free software,
and you are welcome to modify and redistribute it under the GPL license

Server version          5.1.41-3ubuntu12
Protocol version        10
Connection              Localhost via UNIX socket
UNIX socket             /var/run/mysqld/mysqld.sock
...

libmysql-java es el controlador JDBC de MySQL version 5.1.10. Lo configuramos en la instalación de tomcat6.

Instalación de Tomcat 6

Instalamos el servidor de aplicaciones Tomcat 6. La versión usada es la 6.0.24-2ubuntu1. En la instalación podemos ver lo siguiente.

$ sudo aptitude install tomcat6 tomcat6-admin tomcat6-docs tomcat6-examples tomcat6-user
...
 * Starting Tomcat servlet engine tomcat6
Using CATALINA_BASE:   /var/lib/tomcat6
Using CATALINA_HOME:   /usr/share/tomcat6
Using CATALINA_TMPDIR: /tmp/tomcat6-tmp
Using JRE_HOME:        /usr/lib/jvm/java-6-sun
Using CLASSPATH:       /usr/share/tomcat6/bin/bootstrap.jar
...

Para manejar el gestor de aplicaciones y el gestor de hosts de tomcat desde el explorador web debemos añadir nuestro usuario a los roles manager y admin de tomcat. Para ello configuramos el siguiente fichero y añadimos el usuario a la sección tomcat-users. Sustituimos usuario y contraseña por los nuestros.

$ sudo vim /etc/tomcat6/tomcat-users.xml

<tomcat-users>
   <user username="usuario" password="contraseña" roles="admin,manager"/>
</tomcat-users>

Para configurar el conector AJP y que así el servidor web Apache envíe las peticiones a Tomcat configuramos el siguiente fichero y descomentamos la linea del conector.

$ sudo vim /etc/tomcat6/server.xml

<!-- Define an AJP 1.3 Connector on port 8009 -->
<Connector port="8009" protocol="AJP/1.3" redirectPort="8443" />

Creamos el directorio endorsed en catalina.base/common

$ sudo mkdir /var/lib/tomcat6/common/endorsed
$ sudo chown -R tomcat6:tomcat6 /var/lib/tomcat6/common/endorsed

Para que podamos usar alfresco correctamente debemos cambiar unos parámetros en el fichero /etc/default/tomcat6

$ sudo vim /etc/default/tomcat6

# Resuelve el problema de "Out of Memory" que nos puede surgir con alfresco
# lo cambiamos dependiendo de la memoria que tengamos
# -Xms1G: Memoria inicial en megas del heap que asignamos a la maquina virtual
# -Xmx2Gm: Memoria máxima en megas del heap
# Tienen que ser múltiplos de 1024 y mayor a 1MB.
# Se recomienda para 32 bits con al menos 2G de ram disponibles para la JVM esta configuración
JAVA_OPTS="-Djava.awt.headless=true -Xms1Gm -Xmx2G -Xss1024k -XX:MaxPermSize=128m -XX:NewSize512m -Djava.endorsed.dirs=/usr/share/tomcat6/endorsed:/var/lib/tomcat6/common/endorsed"
...
# Lo dejamos como está en Lucid (10.04). En Karmic (9.10) había que desactivarlo
# ya que hay problemas de permisos y alfresco no se iniciaba. También se pueden
# añadir permisos de seguridad mediante java a la aplicación alfresco para que funcione
# Use the Java security manager? (yes/no, default: no)
#TOMCAT6_SECURITY=no

# If you run Tomcat on port numbers that are all higher than 1023, then you
# do not need authbind.  It is used for binding Tomcat to lower port numbers.
# NOTE: authbind works only with IPv4.  Do not enable it when using IPv6.
# (yes/no, default: no)
# Habilitamos esta opción para que tomcat o sus aplicaciónes puedan usar puertos
# por debajo de 1024 con usuarios no privilegiados (como tomcat6). Esto se debe 
# a que la version 10.04 de ubuntu (debian) no usa jsvc para la seguridad (con
# (debido a bugs) sino Authbind
AUTHBIND=yes

libmysql-java es el controlador JDBC de MySQL version 5.1.10 y libcommons-el-java son componentes reusables opensource de java. Esta instalación instala los jar JDBC de mysql y commons en java pero para que funcione correctamente con tomcat debemos incluirlo en el classpath de tomcat. Esto lo hacemos añadiendo un link simbólico al jar de mysql y commons en java en el directorio /usr/share/tomcat6/lib.

$ cd /usr/share/tomcat6/lib
$ sudo ln -s ../../java/mysql.jar mysql.jar
$ sudo ln -s ../../java/commons-el.jar commons-el.jar

En /usr/share/java tenemos un link simbólico llamado mysql.jar que apunta al jdbc de mysql (mysql-connector-java-5.1.10.jar) en el mismo directorio. Por eso apuntamos mysql.jar en el directorio de tomcat a mysql.jar en el directorio de java. Un link a otro link.

Reiniciamos tomcat

$ sudo /etc/init.d/tomcat6 restart

Y vemos que funciona en http://localhost:8080 y que podemos acceder al manager y al hostmanager con el usuario y contraseña que pusimos.

Instalación de Apache 2.2

Instalamos el servidor web de apache. No es necesario en principio pero lo haremos para que sea apache el que se encargue de las peticiones web.

$ sudo aptitude install apache2 apache2-utils
$ apache2ctl -v
Server version: Apache/2.2.14 (Ubuntu)
Server built:   Apr 13 2010 19:28:27

No voy a entrar en la configuración de apache, solo configuraremos el conector de apache a tomcat.

Para conectar el servidor web con el servidor de aplicaciones (contenedor de servlets y JSP) se usa el protocolo AJP. Para configurar esto se pueden usar, o el módulo de apache mod_jk o el módulo mod_proxy. La recomendación es usar el módulo mod_proxy ya que es más moderno y es el que configuraremos. También se puede usar para balanceo de carga, clusters... Por defecto, ya viene instalado con apache2.

En la instalación de Tomcat ya configuramos el conector AJP para que funcinara correctamente. Ahora nos ocupamos de la parte de configuración de apache.

Para configurar el conector editamos el fichero de configuración de mod proxy y lo dejamos así:

$ sudo vim /etc/apache2/mods-available/proxy.conf

<IfModule mod_proxy.c>
        #turning ProxyRequests on and allowing proxying from all may allow
        #spammers to use your proxy to send email.
        # Con esta directiva en Off hacemos que se deshabilite la redirección del
        # proxy excepto para las entradas que nosotros pongamos con ProxyPass
        ProxyRequests Off

        # Hace que las peticiones originales de información de host se mantengan a 
        # través de la conexión del conector AJP. Es útil para aplicaciones que
        # necesitan mantener esta información.
        ProxyPreserveHost On


        # Indica que todos los hosts (*) pueden acceder a traves del proxy
        <Proxy *>
                AddDefaultCharset off
                Order deny,allow
                Allow from all
                #Allow from .example.com
        </Proxy>

        # Enable/disable the handling of HTTP/1.1 "Via:" headers.
        # ("Full" adds the server version; "Block" removes all outgoing Via: headers)
        # Set to one of: Off | On | Full | Block
        ProxyVia On

        # Indica que las peticiones a apache para /alfresco se pasen por el protocolo AJP 
        # a la dirección IP y puerto donde Tomcat está escuchando mediante el protocolo
        # AJP con un conector.
        ProxyPass /alfresco ajp://192.168.1.35:8009/alfresco

        # Indica que cualquier peticion de cabeceras (request headers) del reverse proxy 
        # debería ser reescrita de forma adecuada para asegurar que las redirecciones que
        # haga el servidor Tomcat sean manejadas de forma correcta.
        ProxyPassReverse /alfresco ajp://192.168.1.35:8009/alfresco

        # Permitimos el acceso a la aplicación alfresco
        <Location /alfresco >
                Order allow,deny
                Allow from all
        </Location>

        # Bloque para share.war. Con cada aplicación desplegada que queramos incluir en
        # el conector deberemos poner el bloque siguiente.
        ProxyPass /share ajp://192.168.1.35:8009/share
        ProxyPassReverse /share ajp://192.168.1.35:8009/share
        <Location /share>
                Order allow,deny
                Allow from all
        </Location>


</IfModule>

Activamos los módulos proxy (se configuran en el mismo archivo anterior)

$ sudo a2enmod proxy_balancer proxy_ajp proxy
Considering dependency proxy for proxy_balancer:
Enabling module proxy.
Enabling module proxy_balancer.
Considering dependency proxy for proxy_ajp:
Module proxy already enabled
Enabling module proxy_ajp.
Module proxy already enabled
Run '/etc/init.d/apache2 restart' to activate new configuration!

Vemos si se han cargado los módulos

$ apache2ctl -M
Loaded Modules:
 core_module (static)
 log_config_module (static)
 ...
 proxy_module (shared)
 proxy_ajp_module (shared)
 proxy_balancer_module (shared)
 ...
Syntax OK

Y reiniciamos apache2

$ sudo /etc/init.d/apache2 restart
[sudo] password for casa: 
 * Restarting web server apache2
... waiting

En la siguiente imagen vemos como el conector, apache y tomcat están funcionando. No usamos directamente el puerto 8080 de tomcat si no el 80 de apache. El error de Alfresco es simplemente debido a que todavía no lo hemos instalado en su sitio, lo que veremos en el siguiente post.


Instalación de herramientas adicionales

Para un correcto funcionamiento necesitamos instalar las siguientes herramientas.
  • Flash 10.x: Kubuntu trae la 10.0.45.
  • SWF Tools: para la conversion de pdf y swf usar la vista previa de pdfs. Kubuntu usa la 0.9.0.
  • OpenOffice.org: Kubuntu trae la 3.2.0.
  • Imagemagick: Para manipulación de imágenes. Ya viene por defecto, pero por si acaso lo incluimos.
Por tanto las instalamos si no lo tenemos ya

$ sudo aptitude install swftools flashplugin-installer openoffice.org imagemagick
Related Posts with Thumbnails