Liferay 5.2.3 su Ubuntu/Debian




en it

Prima di continuare

Questa guida e' rivolta a chi vuole installare Liferay su una debian/ubuntu utilizzando Tomcat come servlet container e Apache come webserver.

Perchè

Non sono mai riuscito a trovare un pacchetto .deb per installare Liferay, quindi ho messo insieme tutta la documentazione che sono riuscito a trovare in rete e ho creato questa guida

Cosa serve

Dovete aver installato Tomcat ( o un servlet container supportato da Liferay, io uso Tomcat ) e un jdk ( io uso il sun JDK ); ambo i pacchetti possono essere installati usando apt-get : io supporrò che li abbiate installati così.

Installare Liferay

La via più breve è quella di scaricare quello che chiamano "bundle" con tomcat, possibilmente la stessa versione di tomcat che avete installato su Ubuntu. La versione che ho installato io è la 6, quindi scaricate questo link da i Sourceforge ; una volta scompattato troverete una struttura come questa :

 ├── data
 │   └── hsql
 ├── deploy
 ├── license
 └── tomcat-6.0.18
     ├── bin
     ├── conf
     │   └── Catalina
     │       └── localhost
     ├── jre1.5.0_17
     ├── lib
     │   └── ext
     ├── logs
     ├── temp
     ├── webapps
     │   ├── chat-portlet
     │   ├── google-maps-portlet
     │   ├── mail-portlet
     │   ├── ROOT
     │   ├── sevencogs-hook
     │   ├── sevencogs-theme
     │   ├── tunnel-web
     │   ├── web-form-portlet
     │   └── wol-portlet
     └── work
         └── Catalina
             └── localhost

La cosa semplice da fare e' copiare la il contenuto di webapps in /usr/share/tomcat6/webapps ; vi consiglio di fare una copia della webapps originale di tomcat, nel caso voleste tornare a una configurazione originale . E' possibile ignorare le due applicazioni sevencogs-hook e sevencogs-theme perche' installano semplicemente degli esempi di contenuto. Una volta copiate le web applications bisogna aggiustare ROOT.xml in /etc/tomcat6/Catalina/localhost in modo che risulti :

 <Context path="" crossContext="true">

        <!-- JAAS -->

        <Realm
                className="org.apache.catalina.realm.JAASRealm"
                appName="PortalRealm"
                userClassNames="com.liferay.portal.kernel.security.jaas.PortalPrincipal"
                roleClassNames="com.liferay.portal.kernel.security.jaas.PortalRole"
        />
 </Context>

Se c'e' bisogno di disabilitare le sessioni persistenti ( vengono mantenute le sessioni in corso tra un reboot e l'altro ) aggiungere prima di </Context>

 <Manager pathname="" />

Fatto questo bisogna assicurarsi che tomcat abbia abbastanza risorse per far girare il portale : si devono passare alla JVM i parametri -Xms (configura la dimensione iniziale dell'heap) e -Xmx ( configura la memoria massima per l'heap ); questi sono parametri che dipendono molto dalla configurazione della macchina e dal numero di deployment che vengono fatti . Nel mio server di sviluppo ( ci lavoriamo in 7 persone ) i valori sono -Xms1024m -Xmx3072m ; un altro parametro da passare a tomcat e' -server : rallenta lo startup ma rende tomcat molto piu stabile e performante nel lungo periodo . Editate il file /usr/share/tomcat6/bin/catalina.sh ed aggiungete la riga

 CATALINA_OPTS="-server -Xms512m -Xmx1024m -XX:MaxPermSize=256m "

subito dopo la fine dei commenti. Questo fa si che tomcat parta

 1. in modalita' server
 2. con 512m RAM di Heap iniziale
 3. con 1 Gig RAM di Heap massimo
 4. con 256m RAM riservati per i deployment

i parametri 2 e 3 sono da aumentare se ricevete un java.lang.OutOfMemoryError: Java heap space il parametro 4 e' da aumentare se ricevete un java.lang.OutOfMemoryError: PermGen space

Adesso, create una directory ext in /usr/share/tomcat6/lib, assegnate l'ownership all'utente tomcat6 e copiateci il contenuto della directory del bundle /tomcat-6.0.18/lib/ext : queste sono le librerie che servono per far girare il portale all'interno di Tomcat. Bisogna, pero', fare in modo che Tomcat carichi il contenuto di questa directory all'avvio; editate il file /etc/tomcat6/catalina.properties e cambiate la riga

 common.loader=${catalina.base}/lib,${catalina.base}/lib/*.jar,${catalina.home}/lib,${catalina.home}/lib/*.jar,/var/lib/tomcat6/common/classes,/var/lib/tomcat6/common/*.jar,

in

 common.loader=${catalina.base}/lib,${catalina.base}/lib/*.jar,${catalina.home}/lib,${catalina.home}/lib/*.jar,/var/lib/tomcat6/common/classes,/var/lib/tomcat6/common/*.jar,${catalina.home}/lib/ext/*.jar,${catalina.base}/lib/ext/*.jar

Parametri di configurazione

I parametri di configurazione di Liferay stanno tutti in un file che si chiama portal.properties e che vive pacchettizzato in un jar di Liferay. Il modo per fare l'override dei parametri di default e' quello di scriverli in un file che si chiama portal-ext.properties. Questo file, nella versione bundle, viene cercato in liferay.home che e' la root della directory che viene creata quando scompattate il file . Se non viene trovato in liferay.home, viene comunque cercato nel classpath e quindi potete tranquillamente metterlo in in WEB-INF/classes.

Il primo parametro che dovete impostare e' quello dei path dei dati di Liferay resource.repositories.root ; personalmente, ho creato la directory /data e ho dato i permessi all'utente tomcat e ho settato il parametro

 resource.repositories.root=/data/liferay  

Il secondo parametro da impostare per avere un portale che funiziona e' il database. Questo si configura utilizzando i parametri :

 jdbc.default.driverClassName=nome del driver
 jdbc.default.url=jdbc connection string
 jdbc.default.username=username
 jdbc.default.password=password

Se non viene impostato un database, liferay lavora con HSQL : e' ok per lo sviluppo, ma ve lo sconsiglio per la produzione . Liferay e' compatibile con tutti i maggiori database opensource e closed source ( incluso Oracle ), quindi potete usare quello che piu' vi aggrada.

Altro parametro comodo e' auto.deploy.deploy.dir : una directory che viene tenuta d'occhio da Liferay in cui si possono copiare i WAR files delle applicazioni che vogliamo installare in tomcat; in un ambiente in cui ci sono piu' attori che possono installare una applicazione, e' comodo poter fare dei symlinks a semplicemente copiare un war . Un parametro possibile ( almeno se teniamo la struttura proposta prima ) e'

 auto.deploy.deploy.dir=/data/liferay/deploy

La lista di tutti i parametri configurabili da portal-ext.properties e' reperibile qui

Servire il tutto attraverso Apache

Se fate partire il servizio tomcat6 avrete il vostro portale che gira all'indirizzo http://localhost:8080 e tutte le richieste saranno gestite da Tomcat. Potreste anche cambiare la porta in cui tomcat sta in ascolto da 8080 a 80 ma c'e' una soluzione migliore e si chiama mod_proxy_ajp. Prima di tutto dovete abilitare il modulo :

 a2enmod proxy_ajp

Poi dovete configurare un host in modo che le richieste vengano girate a Tomcat; creeremo un dev-server nel dominio company.com. Create il file dev-server in /etc/apache2/sites-available in modo che contenga :

 #LoadModule proxy_ajp_module modules/mod_proxy_ajp.so
 NameVirtualHost dev-server.company.com:80
 ErrorLog /var/log/apache2/ajp.error.log
 CustomLog /var/log/apache2/ajp.log combined

 <VirtualHost dev-server.company.com:80>  
         <Proxy *>
                 AddDefaultCharset off
                 Order deny,allow
                 Deny from none
                 #Allow from .example.com
         </Proxy>
         ProxyPass / ajp://localhost:8009/
         ProxyPassReverse / ajp://localhost:8009/
 </VirtualHost>

e abilitate la configurazione del sito in Apache :

 a2ensite dev-server

Poi, sulla macchina client, editate il file hosts ( se usate un sistema *nix il file si trova in /etc/hosts ) e aggiungete la linea

 xxx.xxx.xxx.xxx  dev-server.company.com

dove xxx.xxx.xxx.xxx e' l'indirizzo ip della macchina su cui avete installato Liferay. Aprite il browser e andate all'indirizzo http://dev-server.company.com e dovreste vedere il vostro Liferay felice e contento di girare dietro Apache !

Referenze