Come configurare Liferay 6.0 per PostgreSQL
Upcoming SlideShare
Loading in...5
×
 

Come configurare Liferay 6.0 per PostgreSQL

on

  • 4,280 views

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ò ...

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.

Statistics

Views

Total Views
4,280
Views on SlideShare
3,212
Embed Views
1,068

Actions

Likes
0
Downloads
43
Comments
1

6 Embeds 1,068

http://musarra.wordpress.com 1025
http://www.slideshare.net 21
http://localhost:8080 16
http://www.slashdocs.com 4
url_unknown 1
http://translate.googleusercontent.com 1

Accessibility

Categories

Upload Details

Uploaded via as Adobe PDF

Usage Rights

CC Attribution-NonCommercial-ShareAlike LicenseCC Attribution-NonCommercial-ShareAlike LicenseCC Attribution-NonCommercial-ShareAlike License

Report content

Flagged as inappropriate Flag as inappropriate
Flag as inappropriate

Select your reason for flagging this presentation as inappropriate.

Cancel
  • Full Name Full Name Comment goes here.
    Are you sure you want to
    Your message goes here
    Processing…
Post Comment
Edit your comment

Come configurare Liferay 6.0 per PostgreSQL Come configurare Liferay 6.0 per PostgreSQL Document Transcript

  • Antonio  Musarras  Blog  The  ideal  solution  for  a  problem   Blog:  http://musarra.wordpress.com   Mail:  antonio.musarra@gmail.com    Come  configurare  Liferay  6.0  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.  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.0   • PostgreSQL  8  o  superiore1   • JDBC  Driver  per  PostgreSQL2     La   versione   Liferay   di   riferimento   è   la   6.0.6   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   33.   Ho  pubblicato   sul   mio   repository   Gist   JDBC   Type   Test   Class   una   classe   di   test   per  identificare  il  tipo  di  driver  JDBC.                                                                                                                        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.    16/06/11   1   This  document  is  issued  with  license  Creative  Commons  Attribution-­‐NonCommercial-­‐ShareAlike      
  • Antonio  Musarras  Blog  The  ideal  solution  for  a  problem   Blog:  http://musarra.wordpress.com   Mail:  antonio.musarra@gmail.com     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.   Consiglio   la   lettura   del   documento   ufficiale   Liferay  Portal  6.0  –  Administration  Guide   e   in   particolare   della   sezione   Installing  Liferay  on  an  Existing  Application  Server.            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   Pool4  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.                                                                                                                    4  Consiglio  la  lettura  dei  documenti  Connection  Pool  e  JDBC  Connection  Pooling  Best  Practices  16/06/11   2   This  document  is  issued  with  license  Creative  Commons  Attribution-­‐NonCommercial-­‐ShareAlike      
  • Antonio  Musarras  Blog  The  ideal  solution  for  a  problem   Blog:  http://musarra.wordpress.com   Mail:  antonio.musarra@gmail.com     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.    # netstat -tanp | grep LISTEN | grep 5432Listato  1  Comando  per  la  verifica  del  servizio  TCP/IP  di  PostgreSQL.    tcp 0 0 127.0.0.1:5432 0.0.0.0:* LISTEN 9177/postmasterListato  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.    #----------------------------------------------------------------# CONNECTIONS AND AUTHENTICATION#----------------------------------------------------------------# - Connection Settings -# What IP address(es) to listen on;# Comma-separated list of addresses;# Defaults to localhost,* = alllisten_addresses = 127.0.0.1,192.168.56.101Listato  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.    16/06/11   3   This  document  is  issued  with  license  Creative  Commons  Attribution-­‐NonCommercial-­‐ShareAlike      
  • Antonio  Musarras  Blog  The  ideal  solution  for  a  problem   Blog:  http://musarra.wordpress.com   Mail:  antonio.musarra@gmail.com      tcp 0 0 127.0.0.1:5432 0.0.0.0:* LISTEN 9177/postmastertcp 0 0 192.168.56.101:5432 0.0.0.0:* LISTEN 9177/postmasterListato  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.      $ createuser -D -R -S -e -E -P liferay-1  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.      # PostgreSQL Client Authentication Configuration File# ===================================================# TYPE DATABASE USER CIDR-ADDRESS METHOD# "local" is for Unix domain socket connections onlylocal all all ident# IPv4 local connections:host all all 127.0.0.1/32 identhost all all 127.0.0.1/32 md5host all all 172.16.1.0/24 md5host all all 192.168.56.0/24 md5Listato  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.    $ createdb -e -E UTF-8 -O liferay-1 liferay-1Listato  7  Creazione  del  data  base  liferay-­‐1.    16/06/11   4   This  document  is  issued  with  license  Creative  Commons  Attribution-­‐NonCommercial-­‐ShareAlike      
  • Antonio  Musarras  Blog  The  ideal  solution  for  a  problem   Blog:  http://musarra.wordpress.com   Mail:  antonio.musarra@gmail.com     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.    $ psql -h 192.168.56.101 -U liferay-1 liferay-1Listato  8  Connessione  al  data  base  di  Liferay.      psql (8.4.7)liferay-1=> l List of databases Name | Owner | Encoding | Collation | Ctype | Access privileges-----------+-----------+----------+-------------+-------------+----------------------- liferay-1 | liferay-1 | UTF8 | en_US.UTF-8 | en_US.UTF-8 | postgres | postgres | UTF8 | en_US.UTF-8 | en_US.UTF-8 | template0 | postgres | UTF8 | en_US.UTF-8 | en_US.UTF-8 | =c/postgres : postgres=CTc/postgres template1 | postgres | UTF8 | en_US.UTF-8 | en_US.UTF-8 | =c/postgres : postgres=CTc/postgres(4 rows)liferay-1=>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.    <Resource name="jdbc/LiferayPool" auth="Container" type="javax.sql.DataSource" maxActive="100" maxIdle="30" maxWait="10000" username="liferay-1" password="liferay12345" driverClassName="org.postgresql.Driver" url="jdbc:postgresql://liferay-portal-db-1.local:5432/liferay-1?charSet=UTF-8"/>Listato  10  Parte  del  file  di  configurazione  context.xml.  16/06/11   5   This  document  is  issued  with  license  Creative  Commons  Attribution-­‐NonCommercial-­‐ShareAlike      
  • Antonio  Musarras  Blog  The  ideal  solution  for  a  problem   Blog:  http://musarra.wordpress.com   Mail:  antonio.musarra@gmail.com     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.0   di   Liferay   è   rimasta  uguale  alla  precedente  release  5.2.  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.      jdbc.default.jndi.name=jdbc/LiferayPoolListato  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.    Loading file:/opt/liferay-portal-6.0.6/tomcat-6.0.29/webapps/ROOT/WEB-INF/classes/portal-ext.properties12:45:34,784 INFO [DialectDetector:69] Determining dialect for PostgreSQL 812:45:34,890 INFO [DialectDetector:49] Using dialectorg.hibernate.dialect.PostgreSQLDialectStarting Liferay Portal Community Edition 6.0.6 CE (Bunyan / Build 6006 / February 17,2011)12:45:50,056 ERROR [JDBCExceptionReporter:101] ERROR: relation "lock_" does not exist Position: 40312:45:50,585 WARN [ReleaseLocalServiceImpl:143] ERROR: relation "release_" does notexist Position: 2512:45:50,588 INFO [ReleaseLocalServiceImpl:84] Create tables and populate withdefault data12:45:54,093 INFO [BaseDB:400] Database supports case sensitive queries12:46:06,270 INFO [ServiceComponentLocalServiceImpl:187] Running Chat SQL scripts12:46:13,704 INFO [ServiceComponentLocalServiceImpl:187] Running Kaleo SQL scripts12:46:14,957 INFO [ServiceComponentLocalServiceImpl:187] Running Mail SQL scripts  Listato  12  Estratto  dal  file  log  catalina.out  al  primo  avvio.  16/06/11   6   This  document  is  issued  with  license  Creative  Commons  Attribution-­‐NonCommercial-­‐ShareAlike      
  • Antonio  Musarras  Blog  The  ideal  solution  for  a  problem   Blog:  http://musarra.wordpress.com   Mail:  antonio.musarra@gmail.com     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.   In  Figura  2  è  mostrato  il  pannello  di  controllo  nella  sezione  delle  info  utente.          Figura  2  Pannello  di  controllo  Liferay  dopo  l’avvio.      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.      # netstat -ta | grep ESTABLISHED | grep postgresListato  13  Comando  netstat  per  la  visualizzazione  delle  connessioni  verso  PostgreSQL.    tcp 0 0 liferay-portal-db-:postgres liferay-portal-fe-1.l:49784 ESTABLISHEDtcp 0 0 liferay-portal-db-:postgres liferay-portal-fe-1.l:49737 ESTABLISHEDtcp 0 0 liferay-portal-db-:postgres liferay-portal-fe-1.l:49739 ESTABLISHEDtcp 0 0 liferay-portal-db-:postgres liferay-portal-fe-1.l:49740 ESTABLISHED  Listato  14  Output  del  comando  netstat.    16/06/11   7   This  document  is  issued  with  license  Creative  Commons  Attribution-­‐NonCommercial-­‐ShareAlike      
  • Antonio  Musarras  Blog  The  ideal  solution  for  a  problem   Blog:  http://musarra.wordpress.com   Mail:  antonio.musarra@gmail.com     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.     8. Conclusioni   Sono   appena   al   mio   terzo   giorno   di   convivenza   con   Liferay,   e   proprio   in  questo   giorno   ho   deciso   di   togliere   HSQL   è   mettere   sotto   il   cofano   di   Liferay   il  data   base   PostgreSQL.   L’esperienza   su   questo   tipo   di   configurazione   è   stata  molto   positiva,   riscontrando   semplicità   e   immediatezza   davvero   notevoli,  probabilmente   il   framework   Spring   in   coppia   con   l’ORM   Hibernate   sono   i  “benefattori”.   Non   sarebbe   stato   male   consentire   come   possibilità   la   creazione  automatica  del  data  base.    16/06/11   8   This  document  is  issued  with  license  Creative  Commons  Attribution-­‐NonCommercial-­‐ShareAlike