In questo post vediamo insieme come installare Alfresco Community 4.2.c, l’ultima versione oggi disponibile del diffusissimo Open Source Enterprise Content Management, su Ubuntu 12.04 LTS minimal 64bit con Apache Tomcat 7.0.30 e PostgreSQL 9.0.4. L’installazione proposta non è la “facile” e comoda bundle consigliata da Alfresco per la valutazione del prodotto, ma la versione più “robusta” consigliata per una più affidabile e manutenibile installazione. Come di nostra preferenza vi proponiamo  una descrizione “step by step”, più semplice da capire, provare e sperimentare: spero sarete d’accordo.

Prima di iniziare…

Lancia un terminale (se vuoi con lo shortcut Ctrl+Alt+T) e digita i comandi seguenti:

sudo apt-get update
sudo apt-get upgrade
sudo apt-get purge openjdk-\*
adduser alfresco
Enter new UNIX password: alfresco
adduser postgres
Enter new UNIX password: postgres
su – alfresco
sudo mkdir -p /opt/alfresco
sudo chown alfresco:alfresco /opt/alfresco
sudo mkdir -p /opt/postgresql
sudo chown postgres:postgres /opt/postgresql
sudo adduser alfresco sudo
sudo adduser postgres sudo

L’installazione e l’esecuzione dei processi di alfresco avverranno nell’utente ‘alfresco’ (e non certo ‘root’, come da best practice). Stessa cosa per PostgreSQL che girerà come utente ‘postgres’ (e non certo ‘root’).

Installare il JDK 1.7u7

Scarica il JDK Java 7 e poi su terminale digita:

mkdir -p /opt/alfresco/java

Scarica ‘jdk-7u7-linux-x64.tar.gz’ nella directory ‘/opt/alfresco/java’ con owner alfresco (usa il comando chown descritto di seguito) ed i permessi di ‘execute’ (usa il comando chmod descritto di seguito).

tar xvzf jdk-7u7-linux-x64.tar.gz
chown -R alfresco:alfresco jdk1.7.0_07
rm -rf jdk-7u7-linux-x64.tar.gz
sudo nano /etc/profile.d/java.sh

Aggiungi le linee seguenti salvando le modifiche:

export JAVA_HOME=/opt/alfresco/java/jdk1.7.0_07
export PATH=$PATH:$HOME/bin:$JAVA_HOME/bin

Verifica che l’installazione sia andata a buon fine:

su – alfresco
java -version
javac -version

ImageMagick

ImageMagik è lo strumento (opzionale ma importante) che Alfresco utilizza per creare le anteprime dei documenti. Per installarlo:

sudo apt-get install ghostscript
sudo apt-get install imagemagick
whereis convert
convert –version

Se tutto è installato correttamente vedrai l’help di ImageMagik riportante la versione del prodotto.

FFMpeg

FFMpeg è lo strumento (opzionale ma importante) che Alfresco utilizza per gestire gli stream audio e video. Per installarlo:

sudo apt-get install ffmpeg
whereis ffmpeg
ffmpeg

Se tutto è installato corretamente vedrai l’help di FFMpeg.

LibreOffice

Inutile dire cosa sia LibreOffice e a cosa serva. Alfresco utilizza LibreOffice (ma potrebbe anche utilizzare Apache OpenOffice) per l’anteprima dei documenti nei formati doc, docx, xls, ecc. Lo installiamo con i seguenti comandi:

sudo apt-get install libreoffice
whereis soffice
soffice –version (suggested v3.5)

Se tutto è installato correttamente vedrai l’help di LibreOffice riportante la versione del prodotto.

SWFTools

SWFTools è lo strumento (opzionale ma importante) che Alfresco utilizza per gestire l’anteprima dei documenti tramite un plugin flash che ne permette funzionalità di zooming, preview, ecc. Ecco i comandi per l’installazione:

sudo apt-get install libart-2.0-2 libjpeg62 libgif-dev
wget "http://launchpadlibrarian.net/43569089/swftools_0.9.0-0ubuntu2_i386.deb";
chmod a+x swftools_0.9.0-0ubuntu2_i386.deb
sudo dpkg -i swftools_0.9.0-0ubuntu2_i386.deb
rm -rf swftools_0.9.0-0ubuntu2_i386.deb
pdf2swf –version
whereis pdf2swf

Se tutto è installato corretamente vedrai l’help di SWFTools riportante la versione del prodotto.

PostgreSQL 9.0.4

Procediamo compilando i sorgenti PostgreSQL ed installandolo separatamente:

su – postgres
cd /opt/postgresql
wget "ftp://ftp.postgresql.org/pub/source/v9.0.4/postgresql-9.0.4.tar.gz";
chmod a+x postgresql-9.0.4.tar.gz
gunzip postgresql-9.0.4.tar.gz
tar xvf postgresql-9.0.4.tar
rm -rf postgresql-9.0.4.tar
sudo apt-get install gcc libreadline-dev bison flex zlib1g-dev make
mkdir /opt/postgresql/9.0.4
cd /opt/postgresql/postgresql-9.0.4/
./configure exec_prefix=/opt/postgresql/9.0.4
make exec_prefix=/opt/postgresql/9.0.4
sudo make install exec_prefix=/opt/postgresql/9.0.4
sudo chown -R postgres:postgres /opt/postgresql/9.0.4
mkdir /opt/postgresql/9.0.4/data
mkdir /opt/postgresql/9.0.4/log
nano /home/postgres/.environment-9.0.4
#!/bin/sh

export POSTGRESQL_VERSION=9.0.4
export LD_LIBRARY_PATH=/opt/postgresql/${POSTGRESQL_VERSION}/lib
export PATH=/opt/postgresql/${POSTGRESQL_VERSION}/bin:${PATH}
chmod a+x /home/postgres/.environment-9.0.4
/home/postgres/.environment-9.0.4
/opt/postgresql/9.0.4/bin/initdb -D /opt/postgresql/9.0.4/data/ –encoding=UNICODE
nano /home/postgres/postgresql-9.0.4
#!/bin/sh -e

# Parameters: start or stop.
export POSTGRESQL_VERSION=9.0.4

# Check parameter.
if [ "$1" != "start" ] && [ "$1" != "stop" ]; then
echo "Specify start or stop as first parameter."
exit
fi

# Add stop switch.
__STOP_SWITCH=""
if [ "$1" = "stop" ]; then
__STOP_MODE="smart"
__STOP_SWITCH="-m $__STOP_MODE"
echo "Stop switch is: $__STOP_SWITCH"
fi

# Do it.
export LD_LIBRARY_PATH=/opt/postgresql/${POSTGRESQL_VERSION}/lib

~/.environment-${POSTGRESQL_VERSION}
/opt/postgresql/${POSTGRESQL_VERSION}/bin/pg_ctl -D /opt/postgresql/${POSTGRESQL_VERSION}/data -l /opt/postgresql/${POSTGRESQL_VERSION}/log/postgresql.log $1 $__STOP_SWITCH

Il comando ‘~/.environment-${POSTGRESQL_VERSION}’ potrebbe non funzionare. In quel caso usa al suo posto ‘. .environment-${POSTGRESQL_VERSION}’.

chmod a+x /home/postgres/postgresql-9.0.4
exit
sudo nano /etc/init.d/postgresql.9.0.4
#!/bin/sh -e

case "$1" in

 start)
  echo "Starting postgres"
  /bin/su - postgres -c "/home/postgres/postgresql-9.0.4 start"
  ;;
 stop)
  echo "Stopping postgres"
  /bin/su - postgres -c "/home/postgres/postgresql-9.0.4 stop"
  ;;
 * )
  echo "Usage: service postgresql-9.0.4 {start|stop}"
  exit 1

esac

exit 0
sudo chmod a+x /etc/init.d/postgresql.9.0.4
service postgresql.9.0.4 start

Creazione del database di funzionamento di Alfresco (user: alfresco, password: alfresco, schema: alfresco):

su – postgres
. .environment-9.0.4
psql
CREATE ROLE alfresco WITH PASSWORD ‘alfresco’ LOGIN;
CREATE DATABASE alfresco WITH OWNER alfresco;
 + d
psql -U alfresco -d alfresco
ALTER USER alfresco WITH PASSWORD ‘alfresco’;
 + d
exit

Tomcat 7.0.30

Scaricare l’ultima versione di Tomcat. Di seguito lanciare il terminare e digitare:

cd /opt/alfresco

Scarica ‘Tomcat 7.0′ che trovi nella pagina di download di Tomcat 7.0 tramite la navigazione: Quick Navigation -> Archives -> 7.0.30 -> bin -> apache-tomcat-7.0.30.tar.gz

wget http://archive.apache.org/dist/tomcat/tomcat-7/v7.0.30/bin/apache-tomcat-7.0.30.tar.gz
chmod a+x apache-tomcat-7.0.30.tar.gz
tar -xvf apache-tomcat-7.0.30.tar.gz
rm -rf apache-tomcat-7.0.30.tar.gz
mv apache-tomcat-7.0.30 /opt/alfresco/tomcat
/opt/alfresco/tomcat/bin/startup.sh

A questo punto controlla che il servizio sia avviato correttamente aprendo un browser ed accedendo all’indirizzo http://localhost:8080. In caso la pagina sia accessibile il nostro Tomcat è installato nella sua configurazione standard ed è possibile proseguire con le personalizzazioni richieste da Alfresco:

/opt/alfresco/tomcat/bin/shutdown.sh
cp /opt/alfresco/tomcat/conf/catalina.properties /opt/alfresco/tomcat/conf/catalina.properties.orig
nano /opt/alfresco/tomcat/conf/catalina.properties

Valorizzare ‘shared.loader’ come segue.

shared.loader=${catalina.base}/shared/classes,${catalina.base}/shared/lib/*.jar

Uscire, salvare e proseguire.

cp /opt/alfresco/tomcat/conf/server.xml /opt/alfresco/tomcat/conf/server.xml.orig
nano /opt/alfresco/tomcat/conf/server.xml

Aggiungere ‘URIEncoding=”UTF-8″‘ a

<Connector port=”8080″ protocol=”HTTP/1.1″…

Uscire, salvare e proseguire come segue:

nano /opt/alfresco/tomcat/conf/context.xml

Aggiungere:

<Valve className="org.apache.catalina.authenticator.SSLAuthenticator" securePagesWithPragma="false" />

Alfresco 4.2.c

mkdir /opt/alfresco/tomcat/shared
mkdir /opt/alfresco/tomcat/shared/classes
mkdir /opt/alfresco/tomcat/shared/lib
mkdir /opt/alfresco/tomcat/endorsed
wget <a href="http://dl.alfresco.com/release/community/build-04576/alfresco-community-4.2.c.zip">http://dl.alfresco.com/release/community/build-04576/alfresco-community-4.2.c.zip</a>
chmod a+x alfresco-community-4.2.c.zip
sudo apt-get install unzip
unzip alfresco-community-4.2.c.zip
mv web-server/endorsed/* /opt/alfresco/tomcat/endorsed
mv web-server/shared/* /opt/alfresco/tomcat/shared
mv web-server/lib/* /opt/alfresco/tomcat/lib
mv web-server/webapps/* /opt/alfresco/tomcat/webapps/
rm -rf README.txt
rm -R web-server/
rm -rf alfresco-community-4.2.c.zip

Per far funzionare la gestione dei documenti con LibreOffice, Alfresco richiede che quest’ultimo sia in esecuzione come processo headless e residente. Durante lo startup poi, Alfresco procederà a “cercare” il processo in esecuzione utilizzandolo quando necessario. Vi accorgerete se qualcosa non è andato a buon fine se Alfresco, dopo il suo avvio, non visualizzerà la preview dei documenti “office”.

nano /opt/alfresco/start_oo.sh
#!/bin/sh -e

SOFFICE_ROOT=/usr/bin
"${SOFFICE_ROOT}/soffice" "--accept=socket,host=localhost,port=8100;urp;StarOffice.ServiceManager" --nologo --headless &
chmod uga+x /opt/alfresco/start_oo.sh
/opt/alfresco/start_oo.sh
killall soffice.bin
nano /opt/alfresco/alfresco.sh
#!/bin/sh -e

# Start or stop Alfresco server

# Set the following to where Tomcat is installed
ALF_HOME=/opt/alfresco
cd "$ALF_HOME"
APPSERVER="${ALF_HOME}/tomcat"
export CATALINA_HOME="$APPSERVER"

# Set any default JVM values
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 ./start_oo.sh ]; then
  "${ALF_HOME}/start_oo.sh"
 fi
elif [ "$1" = "stop" ]; then
 "${APPSERVER}/bin/shutdown.sh"
 killall -u alfresco java
 killall -u alfresco soffice.bin
fi
chmod uga+x /opt/alfresco/alfresco.sh
sudo nano /etc/init.d/alfresco
#!/bin/sh -e

ALFRESCO_SCRIPT="/opt/alfresco/alfresco.sh"

if [ "$1" = "start" ]; then
 su - alfresco "${ALFRESCO_SCRIPT}" "start"
elif [ "$1" = "stop" ]; then
 su - alfresco "${ALFRESCO_SCRIPT}" "stop"
elif [ "$1" = "restart" ]; then
 su - alfresco "${ALFRESCO_SCRIPT}" "stop"
 su - alfresco "${ALFRESCO_SCRIPT}" "start"
else
 echo "Usage: /etc/init.d/alfresco [start|stop|restart]"
fi
sudo chmod uga+x /etc/init.d/alfresco
sudo chown alfresco:alfresco /etc/init.d/alfresco
mkdir /opt/alfresco/alf_data
cp /opt/alfresco/tomcat/shared/classes/alfresco-global.properties.sample /opt/alfresco/tomcat/shared/classes/alfresco-global.properties
nano /opt/alfresco/tomcat/shared/classes/alfresco-global.properties
...
dir.root=/opt/alfresco/alf_data
#IMPORTANT: comment dir.keystore
...
db.username=alfresco
db.password=alfresco
...
db.schema.update=true
...
db.driver=org.postgresql.Driver
db.url=jdbc:postgresql://localhost:5432/alfresco
...
index.recovery.mode=AUTO
...
authentication.chain=alfrescoNtlm1:alfrescoNtlm
...
alfresco.rmi.services.host=0.0.0.0

A questo punto tutto è pronto per il deploy ed il primo avvio…

service alfresco start
tail -f /opt/alfresco/tomcat/logs/catalina.out -c 10000

Apri il broswer all’indirizzo ‘http://localhost:8080/share’.

Servizi opzionali (ma importanti) configurabili dalle proprietà

Come descritto in precedenza Alfresco utilizza diversi servizi opzionali (ma importanti per l’utente) per il suo funzionamento. Di seguito vediamo come attivarli.

service alfresco stop
nano /opt/alfresco/tomcat/shared/classes/alfresco-global.properties
#
# External locations
#-------------
# OpenOffice
ooo.exe=/usr/lib/libreoffice/program/soffice.bin
ooo.enabled=false
jodconverter.officeHome=/usr/lib/libreoffice
jodconverter.portNumbers=8100
jodconverter.enabled=true
# ImageMagick installation
img.root=/usr/share/doc/imagemagick
img.exe=/usr/bin/convert
# SWFTools exe
swf.exe=/usr/bin/pdf2swf

Adesso tutto è completo e possiamo procedere al riavvio.

service alfresco start
tail -f /opt/alfresco/tomcat/logs/catalina.out -c 10000

Buon divertimento con Alfresco!

Conclusioni

In questo post è descritta la modalità di installazione enterprise di Alfresco Community 4.2.c con PostgreSQL su piattaforma Ubuntu. L’installazione, descritta in modalita step by step è alternativa alla distribuzione bundle che viene indicata come installazione semplificata e dichiarata non adatta per essere totalmente controllata e personalizzata.

6 Posts

PreSale Engineer e Senior Developer per soluzioni di Enterprise Content Management e Business Intelligence. Prediligo Alfresco ECM, Hyland OnBase e WebDoc per la conservazione sostitutiva. Business Intelligence con Pentaho Open Source BI, Palo.net, SAP Business Objects, QlikView, Microsoft BI Platform. Enterprise portal and Collaboration con Liferay. Blog - LinkedIn - Gravatar.