lunes, 24 de septiembre de 2012

Alfresco 4.x en un ordenador de 32 bits

La última versión de Alfresco Community solo está disponible para máquinas de 64 bits, por lo que si no tienes un ordenador de esas características solo te queda la opción de, con sudor, lágrimas y un poco de suerte, seguir el excelente tutorial de @tpeelen que se encuentra aquí e intentar instalarlo desde el war. La versión que vamos a emplear es la 4.0.e y se puede descargar desde aquí.


Lo primero de todo instalar Ubuntu Server 12.04, cosa que ya hablamos en el blog y después SSH para poder acceder a él desde otro ordenador. Ya tenemos nuesto Sistema Operativo listo y podemos comenzar con la instalación de todos los componentes necesarios para desplegar Alfresco. Primero tenemos que asegurarnos que tenemos el SO actualizado:
sudo apt-get updatesudo apt-get upgrade
Tras hacer esto comprobará en todos los repositorios la última versión de todos los paquetes que tenemos instalados. Ahora vamos a por el Java. La versión que emplearemos será OpenJDK y para instalarla basta con
sudo apt-get install openjdk-6-jdk
Este proceso tarda un rato pero si todo ha sido correcto podemos ejecutar
java -version
para comprobar que todo ha ido correctamente. Ahora vamos a por MySQL. Tenemos otra entrada en el blog sobre como instalarlo (aquí). El comando que necesitamos es:
sudo apt-get install mysql-server
Aunque según @tpeelen también necesitamos el cliente de MySQL. Lo instalaremos pues:
sudo apt-get install mysql-client
Si todo ha ido de forma correcta podremos loguearnos en MySQL con
mysql -u root -p
Ahora vamos a instalar 3 paquetes que son necesarios para completar la funcionalidad de Alfresco. Estos son ImageMagick para poder redimensionar imágenes, FFMpeg para poder reproducir audio y vídeo directamente desde el plugin integrado de Alfresco y LibreOffice.
También tenemos que instalar SWFTools, pero no está en los repositorios de Ubuntu por lo que tenemos que descargarla desde aquí e instalarla con
sudo dpkg -i swftools_0.9.0-0ubuntu1_i386.deb
Durante la instalación, hay dos paquetes que no están instalados y se tienen que forzar a instalar con
sudo apt-get -f install
Ahora vamos a por el Tomcat, es lo último que nos queda antes de comenzar a desplegar Alfresco. La versión que vamos a instalar es la 6.0.35 y se puede bajar desde aquí. Para descomprimirlo:
tar -xvf apache-tomcat-6.0.35.tar.gz
Pero antes de ponerlo en marcha, tenemos que crearnos una carpeta donde instalaremos Alfresco y Tomcat y tomar la carpeta como propietarios. Para ello:

sudo mkdir /opt/alfresco40e

sudo chown -R usuario /opt/alfresco40e
Ahora movemos y renombramos Tomcat, dejándolo en la carpeta que le corresponde:
mv apache-tomcat-6.0.35 /opt/alfresco40e/tomcat
Ahora ya podemos arrancarlo. Desde el directorio donde está Tomcat tecleamos:
./startup.sh
Y podremos comprobar si arranca correctamente o no. Ahora añadiremos unas carpetas que necesitamos en Tomcat. Estas son:

mkdir /opt/alfresco40e/tomcat/shared

mkdir /opt/alfresco40e/tomcat/shared/classes

mkdir /opt/alfresco40e/tomcat/shared/lib
Tenemos que hacer un par de cambios en Tomcat para indicarle que use los directorios que hemos creado. Para ello editamos el catalina.properties y completamos el valor de shared.loader con:

nano /opt/alfresco40e/tomcat/conf/catalina.properties

shared.loader=${catalina.base}/shared/classes,${catalina.base}/shared/lib/*.jar
Nos falta otro cambio en el Tomcat relacionado con el encoding. Por defecto, Tomcat viene configurado con ISO-8859-1 y tenemos que cambiarlo por UTF-8 para que no haya problemas con archivos que van escritos en caracteres internacionales. Para ello tenemos que editar el archivo server.xml:
nano /opt/alfresco40e/tomcat/conf/server.xml
buscar la sección Connector y añadir URIEncoding=”UTF-8″
<Connector port="80" protocol="HTTP/1.1" URIEncoding="UTF-8" connectionTimeout="20000" redirectPort="8443" />
A continuación tenemos que bajarnos el conector de MySQL y ponerlo en la carpeta lib del Tomcat. Lo bajamos de aquí y una vez que lo hayamos descomprimido lo movemos a Tomcat:

tar -xvf mysql-connector-java-5.1.22.tar.gz

cp mysql-connector-java-5.1.22/mysql-connector-java-5.1.22-bin.jar /opt/alfresco40e/tomcat/lib
Ya podemos bajar Alfresco, descomprimirlo y llevarlo hasta el servidor donde va a ser instalado. Para bajarlo tenemos que ir al siguiente enlace. Ahora ya podemos descomprimirlo y mediante SCP o WinSCP llevarlo a nuestro servidor. 

Dentro de Alfresco veremos tres carpetas que tenemos que mover de la siguiente manera:
mv bin /opt/alfresco40e/
mv licenses /opt/alfresco40e/
mv web-server/endorsed/* /opt/alfresco40e/tomcat/endorsed
mv web-server/shared/* /opt/alfresco40e/tomcat/shared
mv web-server/lib/* /opt/alfresco40e/tomcat/lib
mv web-server/webapps/* /opt/alfresco40e/tomcat/webapps/
A continuación nos vamos a crear un archivo para la creación de la base de datos. Se llamará db_setup.sql y contendrá:
create database alfresco default character set utf8 collate utf8_bin;grant all on alfresco.* to 'alfresco'@'localhost' identified by 'alfresco' with grant option;grant all on alfresco.* to 'alfresco'@'localhost.localdomain' identified by 'alfresco' with grant option;
Lo guardaremos en la ruta /opt/alfresco40e/extras/ una vez que nos hayamos creado el directorio. Hecho esto nos crearemos la base de datos y el usuarios que utilizaremos para conectarnos a la aplicación ejecutando el archivo anterior:
mysql -u root -p </opt/alfresco40e/extras/bb_setup.sql
Ya estamos casi terminando, ya queda poco ;-) Ahora nos faltaría crear el archivo alfresco.sh que usaremos para parar y arrancar nuestro Alfresco. El archivo tenemos que crearlo en /opt/alfresco4oe/ y tendrá el siguiente contenido:
#!/bin/sh
# Start or stop Alfresco server
# Set the following to where Tomcat is installed
ALF_HOME=/opt/alfresco40e
cd "$ALF_HOME"
APPSERVER="${ALF_HOME}/tomcat"
export CATALINA_HOME="$APPSERVER"
# Set any default JVM values
#export JAVA_OPTS='-Xms512m -Xmx1024m -Xss1024k -XX:MaxPermSize=256m -XX:NewSize=256m -server'
export JAVA_OPTS='-Xms512m -Xmx768m -Xss768k -XX:MaxPermSize=256m -XX:NewSize=256m -server'
export JAVA_OPTS="${JAVA_OPTS} -Dalfresco.home=${ALF_HOME} -Dcom.sun.management.jmxremote"
#
if [ "$1" = "start" ]; then
"${APPSERVER}/bin/startup.sh"
# if [ -r ./virtual_start.sh ]; then
# sh ./virtual_start.sh
# fi
# if [ -r ./start_oo.sh ]; then
# sh ./start_oo.sh
# fi
elif [ "$1" = "stop" ]; then
"${APPSERVER}/bin/shutdown.sh"
# if [ -r ./virtual_start.sh ]; then
# sh ./virtual_stop.sh
# fi
# if [ -r ./start_oo.sh ]; then
# killall soffice.bin
# fi
fi

Y para terminar solamente nos falta crear el archivo alfresco-global.properties. Este lo guardaremos en: /tomcat/shared/classes/alfresco-global.properties. El contenido del fichero será:
###############################
## Common Alfresco Properties #
###############################
#
# Sample custom content and index data location # dir.root=/opt/alfresco40e/alf_data
#
# Sample database connection properties
# db.name=alfresco
db.username=alfresco
db.password=alfresco
db.host=localhost
db.port=3306
#
# External locations
#-------------
ooo.exe=/usr/bin/soffice
ooo.enabled=true
jodconverter.officeHome=/usr/lib/libreoffice
jodconverter.portNumbers=8101
jodconverter.enabled=true img.root=/usr
swf.exe=/usr/bin/pdf2swf
ffmpeg.exe=/usr/bin/ffmpeg
#
# Property to control whether schema updates are performed automatically.
# Updates must be enabled during upgrades as, apart from the static upgrade scripts,
# there are also auto-generated update scripts that will need to be executed. After
# upgrading to a new version, this can be disabled.
# db.schema.update=true
#
# MySQL connection
# db.driver=org.gjt.mm.mysql.Driver db.url=jdbc:mysql://${db.host}:${db.port}/${db.name} #db.driver=org.gjt.mm.mysql.Driver #db.url=jdbc:mysql://localhost/alfresco340?useUnicode=yes&characterEncoding=UTF-8
#
# Oracle connection
#
#db.driver=oracle.jdbc.OracleDriver
#db.url=jdbc:oracle:thin:@localhost:1521:alfresco
#
 # SQLServer connection
# Requires jTDS driver version 1.2.5 and SNAPSHOT isolation mode
# Enable TCP protocol on fixed port 1433
# Prepare the database with:
# ALTER DATABASE alfresco SET ALLOW_SNAPSHOT_ISOLATION ON;
#
#db.driver=net.sourceforge.jtds.jdbc.Driver
#db.url=jdbc:jtds:sqlserver://localhost:1433/alfresco #db.txn.isolation=4096
#
# PostgreSQL connection (requires postgresql-8.2-504.jdbc3.jar or equivalent)
#
#db.driver=org.postgresql.Driver
#db.url=jdbc:postgresql://localhost:5432/alfresco
#
# Index Recovery Mode
#------------- index.recovery.mode=AUTO
#
# Outbound Email Configuration
#-------------
#mail.host=
#mail.port=25
#mail.username=anonymous
#mail.password=
#mail.encoding=UTF-8
#mail.from.default=alfresco@alfresco.org #mail.smtp.auth=false
#
# Alfresco Email Service and Email Server
#-------------
# Enable/Disable the inbound email service. The service could be used by processes other than
# the Email Server (e.g. direct RMI access) so this flag is independentof the Email Service.
#-------------
#email.inbound.enabled=true
# Email Server properties
#-------------
#email.server.enabled=true
#email.server.port=25
#email.server.domain=alfresco.com
#email.inbound.unknownUser=anonymous
# A comma separated list of email REGEX patterns of allowed senders.
# If there are any values in the list then all sender email addresses
# must match. For example:
# .*\@alfresco\.com, .*\@alfresco\.org
# Allow anyone:
#-------------
#email.server.allowed.senders=.*
#
# The default authentication chain
# To configure external authentication subsystems see:
# http://wiki.alfresco.com/wiki/Alfresco_Authentication_Subsystems
#-------------
authentication.chain=alfrescoNtlm1:alfrescoNtlm
# The password for the default principal (only used for LDAP sync) #ldap.synchronization.java.naming.security.credentials=secret
#
# URL Generation Parameters (The ${localname} token is replaced by the local server name)
#-------------
#alfresco.context=alfresco #alfresco.host=${localname}
#alfresco.port=8080
#alfresco.protocol=http
#
#share.context=share
#share.host=${localname}
#share.port=8080
#share.protocol=http
cifs.enabled=true
ftp.enabled=true
cifs.serverName=${localname}
cifs.hostannounce=true
imap.server.enabled=false
#imap.server.port=143
#imap.server.host=
# Default value of alfresco.rmi.services.host is 0.0.0.0 which means 'listen on all adapters'.
# This allows connections to JMX both remotely and locally.
# alfresco.rmi.services.host=0.0.0.0
#
# RMI service ports for the individual services.
# These seven services are available remotely.
#
# Assign individual ports for each service for best performance
# or run several services on the same port. You can even run everythingon 50500 if needed.
#
# Select 0 to use a random unused port.
#
#avm.rmi.service.port=50501
#avmsync.rmi.service.port=50502
#attribute.rmi.service.port=50503
#authentication.rmi.service.port=50504
#repo.rmi.service.port=50505
#action.rmi.service.port=50506
#wcm-deployment-receiver.rmi.service.port=50507
#monitor.rmi.service.port=50508

Pues listo, si no tenemos ningún problema ya podemos ir a /opt/alfresco40e/ y arrancar Alfresco con:
sudo sh alfresco.sh start
El usuario: admin y el pass: admin y ya podremos ver la última versión de Alfresco funcionando en ordenadores de 32 bits. De nuevo gracias a @tpeelen que es el verdadero creador de este post.


2 comentarios :

  1. Jose, excelente post, me fue de mucha ayuda para instalar mi Alfresco.

    Te dejo algunas cosas para corregir del post:

    A la hora de crear alfresco.sh pusiste:

    - ALF_HOME=/opt/alfresco40c

    Debería ser:

    - ALF_HOME=/opt/alfresco40e

    En el mismo paso cuando se cierra el IF, te quedo:

    - # fifi

    Debería ir:

    - # fi
    fi

    Otra cosa que tuve que modificar en mi caso fue a la hora de crear alfresco-global.properties, modifique lo siguiente:

    En dir.root dice:

    - dir.root=/opt/alfresco40/alf_data

    Debería ir:

    - dir.root=/opt/alfresco40e/alf_data


    En db.url dice:

    - db.url=jdbc:mysql://${db.host}:${db.port}/${db.name}

    En mi caso coloque:

    - db.url=jdbc:mysql://${db.host}:${db.port}/${db.name}?useUnicode=yes&characterEncoding=UTF-8

    Un gran aporte este post.

    Abrazos.

    ResponderEliminar
    Respuestas
    1. Me alegro que te haya servido y muchas gracias por las correcciones. Lo cambio ahora mismo.

      Saludos

      Eliminar