Contexto
En ambientes en producción es una buena práctica hacer que liferay guarde sus datos en una base con mejores prestaciones que hypersonic. La misma no es adecuado por temas de seguridad, perdida de datos, etc. Su finalidad es tener una base que nos sirva para cuando instalamos tener algo disponible.
Podemos distinguir 2 situaciones:
- Ya tenemos armado un sitio usando hypersonic y queremos migra a otra base
- No tenemos nada armado y queremos desde el vamos usar otra base
Ambas situaciones tienen pasos en común que detallaremos primero y luego los pasos específicos para cada situación
Elección de la base de datos
Liferay funciona con varias bases de datos, nostros la hemos probado con exito en:
*MS-SQL
*MySQL
*Postgres
pero hay otras posibildades de Bases, en http://downloads.sourceforge.net/lportal/liferay-portal-sql-5.1.2.zip se puede ver los tipos soportado de acuerdo a los scripts de creación de bases.
Una vez que hayamos elegido la base, deberemos crear un base nueva y un usuario que sea dueño de la base o con permisos suficientes.
A los efectos de este HowTo supondremos que usaremos MySQL, que creamos una base que se llamará liferay y un usario liferay con una password liferaykey
el usuario liferay tiene solo derechos de
SELECT, INSERT, UPDATE, DELETE, CREATE, DROP, INDEX, ALTER, CREATE TEMPORARY TABLES, CREATE VIEW, SHOW VIEW, CREATE ROUTINE, ALTER ROUTINE, EXECUTE sobre la base liferay
Cambiando el datasource de liferay
Es necesario indicarle a liferay que usar para conectarse, para ello copiamos del directorio de ejemplos el datasource correspondiente a mysql.
cp <o3>/jboss/docs/examples/jca/mysql-ds.xml <o3>/jboss/server/default/deploy/liferay-mysql-ds.xml
Luego borramos el archivo <o3>/jboss/server/default/deploy/liferay-hsqldb-ds.xml y editamos <o3>/jboss/server/default/deploy/liferay-mysql-ds.xml
Veremos algo como esto:
<datasources> <local-tx-datasource> <jndi-name>MySqlDS</jndi-name> <connection-url>jdbc:mysql://mysql-hostname:3306/jbossdb</connection-url> <driver-class>com.mysql.jdbc.Driver</driver-class> <user-name>x</user-name> <password>y</password> <exception-sorter-class-name>org.jboss.resource.adapter.jdbc.vendor.MySQLExceptionSorter</exception-sorter-class-name> <!-- should only be used on drivers after 3.22.1 with "ping" support <valid-connection-checker-class-name>org.jboss.resource.adapter.jdbc.vendor.MySQLValidConnectionChecker</valid-connection-checker-class-name> --> <!-- sql to call when connection is created <new-connection-sql>some arbitrary sql</new-connection-sql> --> <!-- sql to call on an existing pooled connection when it is obtained from pool - MySQLValidConnectionChecker is preferred for newer drivers <check-valid-connection-sql>some arbitrary sql</check-valid-connection-sql> --> <!-- corresponding type-mapping in the standardjbosscmp-jdbc.xml --> <metadata> <type-mapping>mySQL</type-mapping> </metadata> </local-tx-datasource> </datasources>
cambiamos
<jndi-name>MySqlDS</jndi-name> <connection-url>jdbc:mysql://mysql-hostname:3306/jbossdb</connection-url> <driver-class>com.mysql.jdbc.Driver</driver-class> <user-name>x</user-name> <password>y</password>
por
Recordar que usamos una base que se llama liferay, un usuario liferay
<jndi-name>jdbc/LiferayPool</jndi-name> <connection-url>jdbc:mysql://localhost:3306/liferay</connection-url> <driver-class>com.mysql.jdbc.Driver</driver-class> <user-name>liferay</user-name> <password>liferaykey</password>