En este tutorial se explica cómo emplear PostgreSQL al configurar Liferay Portal 7 CE.
Índice de contenidos
- 1. Introducción
- 2. Entorno
- 3. Establecer PostgreSQL durante el asistente de configuración
- 4. Volver a mostrar el asistente de configuración
- 5. Error al conectar con base de datos
- 6. Conclusiones
- 7. Referencias
1. Introducción
En su tutorial Introducción a Liferay 7, César explicó qué es Liferay Portal, cómo se instala y cuál es su configuración por defecto. Durante el asistente de configuración, la base de datos preseleccionada es Hypersonic, pero Liferay recomienda cambiarla. En este tutorial, vamos a ver cómo hacerlo para emplear PostgreSQL.
2. Entorno
Este tutorial se ha desarrollado en el siguiente entorno:
- Portátil MacBook Pro (Retina, 15′, mediados 2015), macOS Sierra 10.12.3
- Liferay Community Edition Portal 7.0.2 GA3 (Wilberforce / Build 7002 / August 5, 2016)
- Java 1.8.0_112
- PostgreSQL 9.6.2
3. Establecer PostgreSQL durante el asistente de configuración
Una vez descargado el paquete de Liferay Portal CE con Tomcat y extraído, procedemos a ejecutar la aplicación web a través de terminal con el comando ./startup.sh; este ejecutable se encuentra en el directorio liferay-ce-portal-7.0-ga3/tomcat-8.0.32/bin/ (salvando las diferencias por tema de versiones). Tendremos que esperar un poco —un par de minutos, incluso— para que automáticamente se nos abra en nuestro navegador una nueva pestaña a localhost:8080.
Como vemos, Hypersonic es la base de datos por defecto, pero desde Liferay nos recomiendan no utilizarla en producción. Procedemos a cambiarla y elegimos PostgreSQL. Tendremos que cambiar la URL de JDBC para que apunte a una base de datos vacía que hayamos creado, ya que por defecto espera que exista y se llame lportal. Además, tendremos que rellenar el nombre de usuario y contraseña para poder realizar la conexión.
Pulsamos en Finalizar Configuración y, si la conexión a base de datos es correcta, la aplicación nos pedirá que reiniciemos. Para esto paramos el servicio con ./shutdown.sh y lo volvemos a lanzar con ./startup.sh. Se nos abrirá la aplicación, aceptaremos los términos de uso y estableceremos la contraseña del usuario administrador.
Si accedemos a la base de datos —por ejemplo con pgAdmin—, veremos que ya no está vacía y que se ha llenado con las tablas que Liferay Portal necesita.
4. Volver a mostrar el asistente de configuración
Es posible que al lanzar la aplicación por primera vez, durante el asistente de configuración eligiéramos sin querer la base de datos por defecto —Hypersonic—. No pasa nada, podemos volver a ejecutar el asistente para enmendar nuestro desliz y elegir PostgreSQL. Para ello empezamos parando el servicio con ./shutdown.sh. Luego abrimos el archivo portal-setup-wizard.properties, que se encuentra en el directorio raíz de nuestra carpeta de Liferay Portal extraída, y cambiamos la línea:
setup.wizard.enabled=false
a:
setup.wizard.enabled=true
Arrancamos la aplicación con ./startup.sh y ya veremos el asistente, donde podremos elegir PostgreSQL como base de datos.
5. Error al conectar con base de datos
Es posible que, durante el asistente de configuración, nos diese error al intentar conectar con la base de datos: «Se ha producido un error inesperado al conectarse a la base de datos» («An unexpected error occurred while connecting to the database»).
Esto puede ser por múltiples razones: PostgreSQL no está ejecutándose, el puerto en el que escucha no es el que has indicado en la URL a JDBC, la base de datos no está creada o no has escrito bien su nombre en la URL de JDBC, etc.
Podemos empezar intentando acceder a la base de datos con pgAdmin. Si desde este programa la conexión es correcta, pasamos a ver si el fallo en Liferay Portal se debe a la conexión con base de datos. Para ello accedemos a los logs: vamos a la carpeta liferay-ce-portal-7.0-ga3/tomcat-8.0.32/logs/ y abrimos el archivo catalina.out.
Si en este archivos vemos que nos ha saltado la excepción org.postgresql.util.PSQLException: Connection to localhost:5432 refused. Check that the hostname and port are correct and that the postmaster is accepting TCP/IP connections, tendremos que revisar que PostgreSQL está escuchando en ese puerto, pues desde el pgAdmin no hubo problemas a la hora de conectarse a la base de datos. Una herramienta para comprobar rápidamente el puerto es telnet. Podemos ejecutar por terminal el comando telnet localhost 5432 y ver si la salida es satisfactoria:
$ telnet localhost 5432 Trying ::1... Connected to localhost. Escape character is '^]'.
o si se están rechazando las conexiones:
$ telnet localhost 5432 Trying ::1... telnet: connect to address ::1: Connection refused Trying 127.0.0.1... telnet: connect to address 127.0.0.1: Connection refused telnet: Unable to connect to remote host
En caso de error, vamos a asegurarnos de que el puerto es correcto. En nuestro caso, que instalamos PostgreSQL en macOS con el paquete EnterpriseDB, podemos ver el archivo de configuración /Library/PostgreSQL/9.6/data/postgresql.conf.
En este archivo encontraremos, entre otras cosas, el puerto en el que está escuchando:
port = 5432 # (change requires restart)
Si el puerto es distinto, simplemente tendremos que indicarlo en el asistente de Liferay Portal, en la URL a la JDBC. Por ejemplo, si el puerto es 5433 y la base de datos lportal, entonces será jdbc:postgresql://localhost:5433/lportal.
6. Conclusiones
Indicar en el asistente de Liferay Portal que deseamos emplear una base de datos distinta a Hypersonic es tarea sencilla, pues ya viene preparado para integrarse con varias de ellas, como PostgreSQL. El problema puede venir por despistes nuestros de mala configuración, pero si se identifica rápidamente su causa, entonces la solución no debería ser complicada.
7. Referencias
- Setup Liferay PostgreSQL Database | Roufid
- Postgresql : Connection refused. Check that the hostname and port are correct and that the postmaster is accepting TCP/IP connections [duplicate] | Stack Overflow
[…] Aprende a generar tu código de persistencia con la herramienta que los propios chicos de Liferay utilizan: Service Builder. […]
Holaaaaa…. buenos días. Una pregunta tu tienes información de los costos de licenciamiento y si es obligatorio usar este???
Hola, Omar. No tengo tal información, pero desde la página oficial de Liferay (https://www.liferay.com/es/home) tienes un apartado para contactar con ventas. Saludos.