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

Ayuda
Por m4t1t0
departamento Joutus y similares , Sección Software Libre
Puesto a las Tue Sep 28th, 2004 at 10:49:48 PM 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) | Nuevo record de velocidad. (8 comments) >
Enlaces Relacionados
· http://www.jabber.org
· More on Ayuda
· 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 | 7 comentarios (7 temáticos, editoriales, 0 ocultos)
Eso pensaba yo... (4.00 / 1) (#1)
por gonzotba a las Tue Sep 28th, 2004 at 11:04:12 AM CET
(Información Usuario)

..que ya que el artículo estaba tan cuidado y currado, y que podía ser interesante para muchos, bien podría estar en portada ;)



 
Comentario y pregunta (4.00 / 2) (#2)
por badlop a las Thu Sep 30th, 2004 at 12:07:19 AM CET
(Información Usuario)

Interesante tutorial, procuraré enlazarlo en la sección de administación de jabberes.org, que por cierto la vas a inaugurar :) .

Solo hacer un comentario y una pregunta.

Comentario: Jabber no se puede configurar para usar MySQL como Base de Datos porque Jabber no se puede configurar, ni usa base de datos, ni almacena datos. Jabber es un conjunto de protocolos, no una aplicación. Por la misma razón Jabber no tiene versión 1.4.3. Evidentemente, te refieres al servidor Jabber Jabberd1.

Hay otros servidores tanto libres como privativos. Jabberd1 fue el primer servidor Jabber, y el único durante años, pero hoy dia ni es el más potente, ni el más estable, ni, en general, el mejor. La confusión probablemente se agrave porque Debian y quizá otras distros siguen empaquetando jabberd1 con el nombre 'jabber' a secas.

Pregunta: justo hace un par de semanas estube considerando instalar xdb_sql en un jabberd1 de prueba, para compararlo con jabberd2 y ejabberd en igualdad de condiciones, pero la ausencia de un buen tutorial (como el tuyo :) me hizo desistir. Como ahora ya me da pereza instalarlo, te pregunto: ¿has notado mejora en el rendimiento respecto a no usar xdb_sql? ¿Has hecho pruebas de estrés? Si no has hecho ninguna ¿estás interesado en hacerlas?



Respuestas (4.00 / 1) (#3)
por m4t1t0 (rafa.matito -at- gmail -dot- com) a las Thu Sep 30th, 2004 at 10:25:04 AM CET
(Información Usuario)

Antes de nada gracias por enlazarlo, gracias por que te haya parecido interesante y gracias por las aclaraciones. Tienes toda la razón del mundo, "jabber" es el protocolo y "jabberd1" es el servidor.Mandrake lo empaqueta como jabber-1.4.3 de ahí mi confusión y supongo la de alguno más.

También tienes razón en que no es el mejor servidor, pero hice un primer intento infructuoso con jabberd2 y como no necesito nada que no tenga jabberd1 al final me decanté por este. También influyo el hecho de que será un servidor en producción que dará servicio de mensajería instantanea a todos los empleados de mi asociación (trabajo para una ONG), que tiene oficinas en toda España.

De hecho el principal motivo para montar el servidor jabberd1 con xdb_sql ha sido integrar la aplicación de gestión interna de los empleados (PHP+MySQL) junto con la mensajería instantanea.

Aún no lo hemos puesto en producción, estamos haciendo algunas pruebas y nos falta dar de alta a todos los usuarios, organizarlos por grupos y automatizar el alta de nuevos empleados para que el nuevo se añada a los contactos del resto, automatizar la baja...

En fin que nuestros lusers usen jabber sin tener que preocuparse por nada :-).

Cuando lo tengamos en producción un tiempo ya comentaré las impresiones. Así que el rendimiento no es lo que más nos preocupa, sino la facilidad de gestión, además no puedo comparar el rendimiento pues hasta ahora usamos otro sistema de mensajería privativo y externo :-(.

Espero haberte sido de ayuda.

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


 
el enlace correcto... (none / 0) (#4)
por JulHer a las Sat Oct 2nd, 2004 at 02:08:49 PM CET
(Información Usuario)

... es jabberes.org

[ Padre ]


 
Sólo un apunte (4.00 / 1) (#5)
por presi a las Tue Oct 5th, 2004 at 08:37:05 AM CET
(Información Usuario) http://presi.org

Para la instalación a mano de software en fuentes en distribuciones binarias es recomendable el uso de algún empaquetador como checkinstall para sincronizarlo con la base de datos de paquetes ya que asi se facilitan posteriores actualizaciones o desinstalaciones del software.



 
¡¡¡XMPP ya tiene RFCs!!! (none / 0) (#6)
por algarcia a las Wed Oct 6th, 2004 at 03:47:32 AM CET
(Información Usuario)

¡¡¡Sí!!! XMPP, la tecnología basada en Jabber, ya tiene RFCs como también los tienen el HTTP, el POP3 o el FTP o el IRC.

Lo comentaron en Barrapunto y en en JabberES.

--
No me pregunto lo que yo puedo hacer por el S.L., si no lo que todos vosotros podéis hacer por mí. :-P


 
Fe de erratas (none / 0) (#7)
por m4t1t0 (rafa.matito -at- gmail -dot- com) a las Sat Oct 16th, 2004 at 09:15:36 PM CET
(Información Usuario)

Hay una errata en el artículo, donde dice "la versión de xdb_sql la 1.0." debería decir "la versión de xdb_sql la 1.2."

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


 
Cómo configurar Jabber para usar MySQL como Base de Datos | 7 comentarios (7 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