Libertonia
Portada · Todo · Software Libre · Desarrolladores · Comunidad · Internet · Tecnología · Meta · Diarios
Cómo configurar Jabber para usar MySQL como Base de Datos

m4t1t0's Diary
Por m4t1t0
departamento joutus y similares , Sección Diarios
Puesto a las Mon Sep 27th, 2004 at 10:40:24 AM CET

Antes de nada explicaré los motivos por los que decidí configurar mi servidor Jabber para que usara una base de datos MySQL para almacenaje en vez de ficheros XML.

Los ficheros XML están muy bien, son un estándar y no deben plantear problemas a nadie que conozca el lenguaje. Sin embargo a la hora de automatizar tareas, como dar de alta y baja automática a usuarios en el sistema, organizarlos por grupos... es mucho más cómoda una base de datos. Además si contamos con algún tipo de aplicación para gestionar los datos de nuestros usuarios, integrar esta aplicación con el servidor Jabber mediante un lenguaje de scripts como PHP es muy fácil si utilizamos MySQL, o cualquier otro motor de bases de datos, para almacenar los datos que utilizará el servidor Jabber.

 


  • Introducción.

Antes de nada explicaré los motivos por los que decidí configurar mi servidor Jabber para que usara una base de datos MySQL para almacenaje en vez de ficheros XML.

Los ficheros XML están muy bien, son un estándar y no deben plantear problemas a nadie que conozca el lenguaje. Sin embargo a la hora de automatizar tareas, como dar de alta y baja automática a usuarios en el sistema, organizarlos por grupos... es mucho más cómoda una base de datos. Además si contamos con algún tipo de aplicación para gestionar los datos de nuestros usuarios, integrar esta aplicación con el servidor Jabber mediante un lenguaje de scripts como PHP es muy fácil si utilizamos MySQL, o cualquier otro motor de bases de datos, para almacenar los datos que utilizará el servidor Jabber.

  • Distribución y versiones.

Me gustaría indicar que este artículo no pretende ser una guía exhaustiva de instalación y configuración de Jabber, tan sólo pretendo comentar mi experiencia personal, exitosa hasta ahora, y contar cómo lo conseguí. Quizás esta experiencia pueda ser útil para otros.

La distribución utilizada ha sido Mandrake 9.2, la versión de Jabber la 1.4.3 y la versión de xdb_sql la 1.0. Desconozco si en otras distribuciones o versiones de Jabber o xdb_sql el proceso descrito será el mismo, o si los problemas que me he encontrado serán iguales o distintos. Todos los comentarios en este sentido serán bien recibidos.

  • Instalando Jabber.

Para instalar Jabber necesitaremos el código fuente descargable desde http://www.jabber.org. No podemos utilizar paquetes precompilados pues necesitaremos los fuentes después en la compilación de xdb_sql.

Una vez descargado Jabber lo desempaquetaremos en su ubicación final. En mi caso /usr/local y procederemos a configurarlo. Yo no he usado ninguna opción de configuración, tan solo

[root@server:/usr/local/jabber-1.4.3]# ./configure.

Seguramente se quejará de que no tenemos Gnu Pth instalado, así que procedemos a descargar este software y a instalarlo con la combinación habitual

[root@server:/tmp/pth]# ./configure

....

[root@server:/tmp/pth]# make

....

[root@server:/tmp/pth]# make install

Como no hemos utilizado ningún prefijo en la configuración ésto nos dejará librería libpth.so.20.0.22 junto con un enlace llamado libpth.so.20 en el directorio /usr/local/lib. Como necesitamos esta librería en el directorio /usr/lib lo solucionamos haciendo un enlace simbólico.

[root@server:/usr/lib]# ln -s /usr/local/lib/libpth.so.20.0.22 ./libpth.so.20

Una vez que ya tenemos Gnu Pth instalado y que la configuración de jabber no se queja y termina correctamente hacemos

[root@server:/usr/local/jabber-1.4.3]# make

y ya tenemos compilado nuestro servidor jabber. Para probarlo

[root@server:/usr/local/jabber-1.4.3]# ./jabberd/jabberd -h servidor.dominio

Y no debería dar problemas, para pararlo CTRL+C o bien matar el proceso, pero aseguraros en este caso de borrar el fichero jabber.pid.

  • Instalando xdb_sql.

Descargamos xdb_sql del sitio de jabber y lo colocamos dentro del directorio dónde tenemos Jabber. Editamos el Makefile que trae y descomentamos lo que se nos indica para elegir que motor de bases de datos deseamos utilizar. Nosotros utilizaremos MySQL, así que quitamos los comentarios de todas las líneas que hacen referencia a esto.

Para poder compilar xdb_sql tendremos que variar un poco el Makefile en la sección xdb_sql OBJECTS, dejándolo de la siguiente forma:

# Uncomment the file that corresponds to your DB

xdb_sql_OBJECTS= \

xdb_sql_mysql.o \

xdb_sql.o \

xdb_sql_auth0k.o \

xdb_sql_auth.o \

xdb_sql_offline.o \

xdb_sql_register.o \

xdb_sql_config.o \

xdb_sql_querydef.o \

xdb_sql_roster.o \

xdb_sql_last.o \

xdb_sql_backend.o \

xdb_sql_vcard.o \

xdb_sql_filter.o \

xdb_sql_generic.o \

# xdb_sql_pgsql.o

# xdb_sql_odbc.o


all: xdb_sql.so

Sencillamente he subido la línea xdb_sql_mysql.o arriba y le he añadido una barra al final.

Ahora necesitamos tener instalado el paquete mysql-devel y, al menos en mi caso, cambiar en el fichero xdb_sql_mysql.h la línea:

#include <mysql.h>

por

#include "/usr/include/mysql/mysql.h"

Bien, con todo esto cruzamos los dedos de las manos y de los pies y hacemos:

[root@server:/usr/local/jabber-1.4.3/xdb_sql]# make

Si todo ha ido bien ya tendremos nuestra librería xdb_sql.so lista.

  • Creando la base de datos.

Para crear la base de datos tenemos un fichero llamado sample_dabase.sql. Un simple

[root@server:/usr/local/jabber-1.4.3/xdb_sql]# mysql -u root -p < sample_dabase.sql

debería ser suficiente. Ahora con un cliente de MySQL, como mysqlcc comprobamos que tenemos una nueva base de datos llamada Jabber con unas cuantas tablas y un usuario homónimo que tiene algunos permisos sobre esta base de datos. Yo le dí todos los permisos (si tiene que fallar que no sea por falta de permisos) y le cambié la clave (secret es demasiado evidente).

  • Editando los ficheros de configuración

Pasaremos a configurar primero xdb_sql. Editamos el fichero xdb_sql.xml

[root@server:/usr/local/jabber-1.4.3/xdb_sql]# vi xdb_sql.xml

Sólo tenemos que variar la sección connection para dejarla de la siguiente forma:

<!-- Configure information about the SQL connection -->

<connection>

<host>servidor.dominio</host>

<db>jabber</db>

<user>jabber</user>

<pass>tuclave</pass>

</connection>

Además en este fichero nos indican lo que tenemos que variar en el fichero de jabber.xml, que pasaremos a editar ahora.

[root@server:/usr/local/jabber-1.4.3]# vi jabber.xml

Tan sólo hay que cambiar la sección xdb, que debería ser similar a la siguiente:

<xdb id="xdb">

<host/>

<ns>jabber:iq:roster</ns>

<ns>jabber:x:offline</ns>

<ns>jabber:iq:filter</ns>

<ns>jabber:iq:last</ns>

<ns>jabber:iq:auth</ns>

<ns>jabber:iq:auth:0k</ns>

<ns>jabber:iq:register</ns>

<ns>vcard-temp</ns>

<load>

<xdb_sql>/usr/local/jabber-1.4.3/xdb_sql/xdb_sql.so</xdb_sql>

</load>

<jabberd:include>/usr/local/jabber-1.4.3/xdb_sql/xdb_sql.xml</jabberd:include>

<load>

<xdb_file>./xdb_file/xdb_file.so</xdb_file>

</load>

<xdb_file xmlns="jabber:config:xdb_file">

<spool><jabberd:cmdline flag= s >./spool</jabberd:cmdline></spool>

</xdb_file>

</xdb>

  • Probando que todo funciona

Iniciamos el servidor (en el sitio de jabber existen scripts para arrancarlo al inicio y poder utilizar el comando service)

[root@server:/usr/local/jabber-1.4.3]# ./jabberd/jabberd -h servidor.dominio &

Probamos con un cliente de jabber (gaim o kopete por ejemplo) y observamos como los datos se almacenan en las tablas de la base de datos.

Bueno, y eso es todo, espero que a alguien le pueda ser útil.

< Liberados FacturaLUX Lite 1.3 y módulos de Contabilidad (0 comments) | Cómo configurar Jabber para usar MySQL como Base de Datos (7 comments) >
Enlaces Relacionados
· http://www.jabber.org
· More on m4t1t0's Diary
· Also by m4t1t0

Menu
· crear cuenta
· FAQ
· búsqueda
· Fuentes de Noticias

Login
Nueva cuenta
Usuario:
Contraseña:

Ver: Modo: Orden:
Cómo configurar Jabber para usar MySQL como Base de Datos | 2 comentarios (2 temáticos, editoriales, 0 ocultos)
+1 a portada (5.00 / 1) (#1)
por melenas a las Mon Sep 27th, 2004 at 09:46:16 PM CET
(Información Usuario)

¿Donde leche está el menú para puntuarlo?. Ah, que está en el diario, ¿a qué esperas para enviarlo a la cola de envío?, realmente se merece pasarlo a portada :-)


FDO. ER_MELENAS No te preguntes sólo que puede hacer el S.L. por ti sino también que puedes hacer tú por él.


A sus ordenes (none / 0) (#2)
por m4t1t0 (rafa.matito -at- gmail -dot- com) a las Tue Sep 28th, 2004 at 09:21:15 AM CET
(Información Usuario)

Siempre había pensado que estas experiencias personales, aunque puedan ser útil para otros, deberían estar en un diario, pero como la cola de envíos está últimamente muy vacía contribuiré un poquito a llenarla.

Muchas gracias por tu comentario, melenas.

------------------------------
Un egoísta es una persona que se preocupa más de sí misma que de mí.
[ Padre ]


 
Cómo configurar Jabber para usar MySQL como Base de Datos | 2 comentarios (2 temáticos, editoriales, 0 ocultos)
Ver: Modo: Orden:

ecol Logo Powered by Scoop
Todas las Marcas Registradas y copyrights de esta página son propiedad de sus respectivos dueños.
Los comentarios son propiedad del que los escribe.
Los iconos de las noticias y el logotipo son propiedad de Javier Malonda.
El Resto © 2002 Escomposlinux.org y aledaños.

Puedes sindicar los contenidos de libertonia en formato RSS 1.0 y RDF 0.9. También se puede sindicar la cola de envíos pendientes de moderación.

El proyecto escomposlinux.org está dedicado a la memoria de tas

crear cuenta | faq | búsqueda