Liferay 5.2.3 su Ubuntu/Debian
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 !