Come configurare Liferay 6.1 per PostgreSQL

Nel precedente articolo Come configurare Eclipse per Liferay Portal in Mac OS X, pubblicato sul mio blog, abbiamo visto come configurare un ambiente di sviluppo completo per Liferay 6.0 analogamente per la versione successiva di Liferay 6.1. La distribuzione Liferay di default prevede l’utilizzo del data base HSQL (Hypersonic) per la persistenza dei dati. L’utilizzo di questo tipo di data base in ambienti di produzione non è però consigliato.

Nel corso di quest’articolo vedremo Step-by-Step come configurare il data base PostgreSQL per la persistenza dei dati di Liferay. Non saranno affrontanti temi di tuning e performance riguardo questa tipologia di configurazione.

1.   Requisiti

Per terminare con successo la configurazione Liferay/PostgreSQL devono essere soddisfatti una serie di requisiti software:

  • Liferay 6.1
  • PostgreSQL 8 o superiore[1]
  • JDBC Driver per PostgreSQL[2]

La versione Liferay di riferimento è la 6.1.10 nell’edizione Community distribuita con il Servlet Container Tomcat. Il driver JDBC per PostgreSQL è già distribuito con la versione di Liferay e risiede all’interno della directory {liferay-home}/{tomcat}/lib/ext. Il driver JDBC per PostgreSQL fornito con Liferay è un JDBC Type 3[3]. Ho pubblicato sul mio repository Gist JDBC Type Test Class una classe di test per identificare il tipo di driver JDBC.

2.   Scenario di configurazione

Lo scenario affrontato è molto semplice e in linea con quanto previsto da Liferay stessa. Per ragioni di semplicità è stata volutamente scelta la versione di Liferay che include Tomcat (come Servlet Container), lo scenario resta comunque valido per qualunque altro tipo di Servlet Container o Application Server J2EE supportati da Liferay.   

Scenario di configurazione Liferay/PostgreSQL per la persistenza dei dati.

Scenario di configurazione Liferay/PostgreSQL per la persistenza dei dati.

Figura 1 Scenario di configurazione Liferay/PostgreSQL per la persistenza dei dati.

La Figura 1 mostra lo scenario di configurazione desiderato per la nostra installazione di Liferay Portal Server. Nel diagramma sono indicate le configurazioni di rete (che nel vostro caso potrebbero essere anche diverse) a scopo puramente dimostrativo.

La connessione verso il data base sarà eseguita e gestita attraverso un JDBC Connection Pool[4] configurato sul Servlet Container o Application Server. Gli step necessari al completamento della configurazione che vedremo nel resto dei successivi paragrafi sono:

  • Configurazione del data base;
  • Configurazione del Connection Pool;
  • Configurazione di Liferay Portal.

3.   Configurazione di PostgreSQL

Liferay richiede che il data base sui cui si vuol fare la persistenza dei dati sia correttamente configurato, ciò si traduce nell’espletamento dei seguenti punti:

  • Configurazione dei parametri di rete;
  • Creazione dell’utente che accederà al data base;
  • Creazione del data base che ospiterà i dati di Liferay.

Per rispondere al primo punto indicato sopra, è necessario accertarsi che PostgreSQL sia configurato in modo tale che sia in listen sull’interfaccia di rete che sarà poi utilizzata per la connessione da parte di Liferay. La verifica ed eventuale modifica dei parametri di rete è abbastanza semplice.  Attraverso il comando mostrato nel Listato 1 verifichiamo che il data base sia in listen sulla corretta interfaccia di rete, così come indicato in Figura 1.

Listato 1 Comando per la verifica del servizio TCP/IP di PostgreSQL.

Listato 2 Output del comando netstat.

L’output del comando evidenzia che il data base è il listen solamente sull’interfaccia di loopback (127.0.0.1), occorre quindi configurare il servizio TCP/IP del data base in listen sull’interfaccia avente l’indirizzo IP impostato a 192.168.56.101. Il file configurazione interessato alla modifica è mostrato al Listato 3. E’ stato aggiunto l’indirizzo 192.168.56.101 su cui accettare connessioni TCP/IP in ingresso. Affinché la modifica sia applicata, sarà necessario eseguire il restart del data base.

Listato 3 File di configurazione postgresql.conf.

Eseguendo nuovamente il comando mostrato nel Listato 1 vedremo che oltre l’indirizzo di loopback  in listen sulla porta TCP/IP 5432, sarà presente anche il nuovo indirizzo, così come illustrato al Listato 4. La porta TCP/IP assegnata da Internet Assigned Numbers Authority – IANA al servizio del data base è la 5432, sui sistemi Unix/Linux/BSD consultare il file /etc/services.

Listato 4 Output del comando netstat dopo la modifica della configurazione di PostgreSQL.

Completata la configurazione del servizio TCP/IP del data base, è possibile proseguire con la creazione dell’utenza che sarà utilizzata da Liferay per la connessione e tutte le altre operazioni necessarie (sia DML sia DDL). Il comando a seguire è responsabile della creazione dell’utente liferay-1, per ragioni di sicurezza l’utenza è stata creata con qualche limite, infatti, è consigliabile limitare il raggio d’azione dell’utenza al solo schema di competenza.

Generalmente i comandi che agiscono sul data base devono essere eseguiti con il grado di dba, l’utenza di default del sistema operativo avente il ruolo dba è postgres.

Listato 5 Creazione dell’utente liferay-1.

Il comando chiederà l’immissione di una password a vostra scelta, in questo caso la password assegnata è liferay12345.

Per terminare la configurazione dell’utente, serve istruire il data base affinché consenta connessioni in ingresso da parte dell’utente appena creato dalla rete di classe 192.168.56.0/24, per far ciò bisogna aggiungere una nuova direttiva al file di configurazione pg_hba.conf.

Listato 6 Aggiunta dell’autorizzazione di connessione da reti 192.168.56.0/24.

L’ultima opera di configurazione è quella più importante, la creazione del data base che chiameremo liferay-1, così come l’utente. Sempre con il grado di dba procediamo con il comando illustrato nel Listato 7.

Listato 7 Creazione del data base liferay-1.

Il data base è stato creato con un tipo di encoding UTF-8 e owner l’utente liferay-1 creato in precedenza. Dopo il riavvio del data base, necessario per applicare le nuove regole di connessione, è possibile verificare che la nuova configurazione funzioni correttamente. La verifica è molto semplice, basterebbe eseguire una connessione con un qualunque tipo di client, il comando a seguire mostra una connessione al data base creato in precedenza utilizzando il client pgsql.

Listato 8 Connessione al data base di Liferay.

Listato 9 Vista dei data base dopo la connessione al data base liferay-1.

Con quest’ultima verifica la configurazione di PostgreSQL è ultimata e il data base è pronto per ospitare i dati di Liferay. E’ possibile approfondire la configurazione trattata in questo paragrafo consultando la documentazione ufficiale PostgreSQL 8.4 Server Administration.

4.   Configurazione di Tomcat

Il nostro scenario di configurazione (vedere la Figura 1) prevede che la connessione verso il data base PostgreSQL sia gestita attraverso un Connection Pool. La configurazione di un Database Connection Pool (DBCP) su Tomcat come risorsa Java Naming and Directory Interface (JNDI) è molto semplice. La documentazione Apache Tomcat 6.0 – JNDI Datasource HOW-TO è ben fatta e molto chiara, comprende inoltre anche il caso di configurazione per un RDBMS PostgreSQL. Nel Listato 10 la configurazione della risorsa definita come jdbc/LiferayPool.

Listato 10 Parte del file di configurazione context.xml. Il file di configurazione completo è disponibile sul mio repository Gist all’indirizzo Apache Tomcat 6.0 – JNDI Datasource. Il file di configurazione context.xml è locato in {liferay-home}/{tomcat}/conf.  

5.   Configurazione di Liferay

La configurazione del data base nella versione 6.1 di Liferay è rimasta uguale alla precedente release. Il nostro scenario di configurazione prevede l’utilizzo di un Database Connection Pool (DBCP) configurato in precedenza ed esposto come risorsa JNDI. In maniera molto semplice è possibile indicare a Liferay il nome della risorsa JNDI all’interno del file di properties portal-ext.properties specificando la proprietà indicata al Listato 11.

Listato 11 Configurazione del data base via JNDI.

La directory {liferay-home}/{tomcat}/webapps/ROOT/WEB-INF/classes contiene il file portal-ext.properties. Non è detto che il file sia presente, qualora non fosse presente, occorre crearlo da zero e conterrà la sola riga mostrato nel procedente listato.

 

6.   Start di Liferay con la nuova configurazione

Dopo aver completato tutte le fasi di configurazione, possiamo procedere con l’avvio di Liferay Portal e verificare che la nuova configurazione funzioni in modo corretto.

Il primo avvio è quello più delicato che richiederà un tempo di start-up superiore al normale per via del setup (che include numerose operazioni) richiesto per il nuovo data base PostgreSQL. Al Listato 12 sono mostrate le informazioni più rilevanti estratte dal file di log catalina.out di Tomcat.

Listato 12 Estratto dal file log catalina.out al primo avvio.

Non appena il server avrà completato la fase di start-up, sarà possibile accedere a Liferay puntando all’indirizzo http://liferay-portal-fe-1.local:8080. L’esecuzione del comando netstat (così come indicato nel Listato 13) su una delle due macchine, mostra le connessioni attive verso la base dati. Nel comando è stato volutamente omesso il parametro n in modo che sia eseguito il lookup degli indirizzi IP nei rispettivi nomi.

Listato 13 Comando netstat per la visualizzazione delle connessioni verso PostgreSQL.

Listato 14 Output del comando netstat.

7.   Risorse

A seguire una breve lista delle risorse disponibili in rete che possono essere rilevanti come approfondimento del tema trattato da quest’articolo.

Item Nome risorsa Descrizione
1 Installing Liferay for an Enterprise Questo documento descrive l’installazione di Liferay in ambienti di tipo Enterprise e le pratiche più comuni.
2 Installing a Bundle Questo documento descrive la struttura del bundle e la relativa installazione.
3 Liferay Wiki Guide Wiki di raccolta articoli forniti dallo staff di Liferay e dalla comunità.
4 Database Configuration Questo documento contiene informazioni su come cambiare l’RDBMS di default.


[1] La versione utilizzata per la stesura di quest’articolo è la 8.4 installata con una configurazione di default sul sistema operativo CentOS 5.6 (virtualizzato).

[2] I driver JDBC per PostgreSQL e tutta la documentazione relativa sono disponibili all’indirizzo http://jdbc.postgresql.org/index.html

[3] I driver di tipo 3 sono i cosiddetti net driver: in questo caso il driver è diviso in due parti come il tipo 2, ma i due strati adesso comunicano tramite un protocollo proprietario o alle volte anche via TCP/IP o HTTP.

[4] Consiglio la lettura dei documenti Connection Pool e JDBC Connection Pooling Best Practices

0 Condivisioni

Antonio Musarra

I began my journey into the world of computing from an Olivetti M24 PC (http://it.wikipedia.org/wiki/Olivetti_M24) bought by my father for his work. Day after day, quickly taking control until … Now doing business consulting for projects in the enterprise application development using web-oriented technologies such as J2EE, Web Services, ESB, TIBCO, PHP.

Potrebbero interessarti anche...

Cos'è il progetto CIE/CNS Apache Docker - Developers Italia

In questo video https://youtu.be/TcAzn1POhsM introdurrò il progetto CIE/CNS Apache Docker di Developers Italia (https://developers.italia.it/it/cie/#resourcecontent-3) nato circa due anni fa.

L'obiettivo di questo progetto è quello di fornire un template pronto all'uso che realizza un sistema di autenticazione tramite la Smart Card TS-CNS (o CNS) e la CIE (Carta d'Identità Elettronica) basato su Apache HTTP. Ognuno può poi modificare o specializzare questo progetto sulla base delle proprie esigenze Si tratta di un progetto docker per la creazione di un container che implementa un sistema di mutua autenticazione o autenticazione bilaterale SSL/TLS.

Questo meccanismo di autenticazione richiede anche il certificato digitale da parte del client, certificato che in questo caso risiede all'interno della TS-CNS o della CIE. La particolarità del sistema implementato (attraverso questo container) è quella di consentire l'autenticazione tramite:

  • La TS-CNS (Tessera Sanitaria - Carta Nazionale Servizi), rilasciata dalla regione di appartenenza;
  • La CIE (Carta d'Identità Elettronica), rilasciata dal comune di residenza.

Nella versione 2.0.0 il progetto è stato aggiornato per essere uniforme alle linee guida di Bootstrap Italia. A seguire alcune risorse che possono essere utili.

  • Cos’è il progetto CIE/CNS Apache Docker (http://bit.ly/3aJ5Gbl)
  • CIE Carta d'Identità Elettronica (https://developers.italia.it/it/cie/)
  • Carta Nazionale dei Servizi (https://www.agid.gov.it/it/piattaforme/carta-nazionale-servizi)
  • Raspberry Pi – Un esempio di applicazione della TS-CNS (https://bit.ly/3hkJ8Aj)
  • Pubblicare il servizio CIE/CNS Apache Docker su Azure Cloud (http://bit.ly/3aPoq8V)
  • Come accedere al portale VETINFO tramite TS-CNS e Mac OS (http://bit.ly/2VFMKq7)