免费注册 查看新帖 |

Chinaunix

  平台 论坛 博客 文库
最近访问板块 发新帖
查看: 2082 | 回复: 5
打印 上一主题 下一主题

安装Jabberd2服务器 [复制链接]

论坛徽章:
0
跳转到指定楼层
1 [收藏(0)] [报告]
发表于 2005-11-29 17:14 |只看该作者 |倒序浏览
转自肥肥世家 http://www.ringkee.com

8.11. 安装Jabberd2服务器

jabberd2服务器还没正式进入Debian的软件包,但我们可从源码开始安装。下面介绍如何在Debian平台中如何从源码安装jabberd-2.0s10。这里的2.0s10表示jabberd2.0的第十个stable发行版。

    *

      到jabberd的官方网站下载最新的软件包jabberd-2.0s10.tar.gz。用tar -zxvf jabberd-2.0s10.tar.gz命令解压后会在当前目录下生成jabberd-2.0s10目录。
    *

      进入源码目录,我们就可以用configure工具配置软件包。但在配置前,先要安装一些支持软件包,分别是libssl-dev和libidn11- dev,还有libmysqlclient14-dev,该软件包用于支持Mysql数据库作为后台数据存储和用户验证,如果你想通过ldap目录服务器来进行用户认证,则还需安装libldap2-dev软件包。准备好后,运行以下命令配置jabberd2:

debian:~/inst/jabberd-2.0s10# ./configure --prefix=/usr/local/jabberd2 --enable-ldap --enable-debug

      配置成功后,运行make和make install即可把软件安装到/usr/local/jabberd2目录中。
    *

      现在可以配置服务器了,jabberd2的配置文件位于/usr/local/jabberd2/etc/jabberd目录下,配置文件的文本是XML格式的。现在我们要修改sm.xml和c2s.xml这两个配置文件,把真实的服务器名写到这两个配置文件中:

修改sm.xml文件,把id标签内的localhost改成真实服务器名
<!-- Session manager configuration -->
<sm>
  <!-- Our ID on the network. Users will have this as the domain part of
       their JID. If you want your server to be accessible from other
       Jabber servers, this ID must be resolvable by DNS.s
       (default: localhost) -->
  <id>localhost</id>

...

修改c2s.xml文件,也是把id标签内的localhost改成真实服务器名

...

<!-- Local network configuration -->
  <local>
    <!-- Who we identify ourselves as. This should correspond to the
         ID (host) that the session manager thinks it is. You can
         specify more than one to support virtual hosts, as long as you
         have additional session manager instances on the network to
         handle those hosts. The realm attribute specifies the auth/reg
         or SASL authentication realm for the host. If the attribute is
         not specified, the realm will be selected by the SASL
         mechanism, or will be the same as the ID itself. Be aware that
         users are assigned to a realm, not a host, so two hosts in the
         same realm will have the same users.
         If no realm is specified, it will be set to be the same as the
         ID. -->
    <id>localhost</id>

...


    *

      jabberd2默认使用MySQL来存放数据和进行用户认证。所以我们还要配置MySQL数据库,为 jabberd2增加相应的数据库和表。jabberd2软件包已为我们提供了一个MySQL脚本自动完成数据库和表的创建。这个脚本位于源码目录下的 tools目录中,文件名是db-setup.mysql。该目录还有针对不同数据库(Oracle、PostgreSQL)的脚本可用。我们以管理员身份登录MySQL服务器,用以下命令运行db-setup.mysql脚本。在运行脚本前,请确保该脚本在当前目录下。

debian:~/inst/jabberd-2.0s10/tools# mysql
Welcome to the MySQL monitor.  Commands end with ; or \g.
Your MySQL connection id is 68 to server version: 4.0.24_Debian-10sarge1-log

Type 'help;' or '\h' for help. Type '\c' to clear the buffer.

mysql> \. db-setup.mysql
Query OK, 1 row affected (0.00 sec)

Database changed
Query OK, 0 rows affected (0.13 sec)

Query OK, 0 rows affected (0.01 sec)

Query OK, 0 rows affected (0.01 sec)

Query OK, 0 rows affected (0.01 sec)

Query OK, 0 rows affected (0.02 sec)
...

      创建完数据库和表后,我们还要配置该数据库的访问权限,很简单,运行以下命令即可:

mysql> grant select,insert,delete,update on jabberd2.* to jabberd2@localhost identified by '123456';
Query OK, 0 rows affected (0.00 sec)

      现在我们就在MySQL数据库创建一个jabberd2用户,密码是123456。该用户可以在jabberd2数据库中做 select,insert,delete,update操作。为了使jabberd2服务器能登录该数据库,我们还需用"jabberd2"和 "123456"这两个参数更新sm.xml和c2s.xml两个配置文件的相关内容。

修改sm.xml文件
...
<!-- Storage database configuration -->
  <storage>
    <!-- By default, we use the MySQL driver for all storage -->
    <driver>mysql</driver>

    <!-- Its also possible to explicitly list alternate drivers for
         specific data types. -->
    <!-- Store vcards in a PostgreSQL database instead -->
    <!--
    <driver type='vcard'>pgsql</driver>
    -->

    <!-- MySQL driver configuration -->
    <mysql>
      <!-- Database server host and port -->
      <host>localhost</host>
      <port>3306</port>

      <!-- Database name -->
      <dbname>jabberd2</dbname>

      <!-- Database username and password -->
      <user>jabberd2</user>
      <pass>123456</pass>
...

修改c2s.xml

...
<!-- MySQL module configuration -->
    <mysql>
      <!-- Database server host and port -->
      <host>localhost</host>
      <port>3306</port>

      <!-- Database name -->
      <dbname>jabberd2</dbname>

      <!-- Database username and password -->
      <user>jabberd2</user>
      <pass>123456</pass>
    </mysql>
...


    *

      最后一步,根据sm.xml或c2s.xml中pidfile标签的内容创建进程ID目录。在我的机器上sm.xml配置文件中pidfile标签的内容如下:

<pidfile>/usr/local/jabberd2/var/jabberd/pid/sm.pid</pidfile>

      创建pid目录的命令如下:

debian:/usr/local/jabberd2# mkdir -p var/jabberd/pid/

      是否创建该目录对服务器的正常运行没有影响,只是有了该目录后,当服务器运行时,在该目录下会生成jabberd2服务进程Id文件,我们可跟踪jabberd2服务器的进程Id号。
    *

      启动服务器

debian:/usr/local/jabberd2/bin# ./jabberd

      如果启动不成功,可查询系统日志或用-D选项启动服务器。

服务器启动后,我们就可用Gaim等客户端连接它。具体操作和上一节内容一样,这里就不再讲了。

论坛徽章:
0
2 [报告]
发表于 2005-11-29 17:20 |只看该作者
除了上面介绍的使用MySQL数据库作为用户认证数据库外,我们还可使用LDAP目录服务进行用户认证。下面介绍具体的配置过程,我选用的LDAP服务器是OpenLDAP,版本号是2.2.23-8。

    *

      要使jabberd2使用LDAP目录服务,需在源码配置时加--enable-ldap选项,并安装libldap2-dev软件包。
    *

      配置c2s.xml文件以支持ldap认证:

...
<!-- Authentication/registration database configuration -->
  <authreg>
    <!-- Backend module to use -->
    <module>ldap</module>               #启用ldap认证模块,默认是MySQL

    <!-- Registration configuration -->
    <register>
      <!-- Account registration is enabled by default (provided the
           auth/reg module in use supports it). Comment this out to
           disable. -->
           
   <!--   <enable/> -->                 #注释该行,禁止用户自由注册,启用ldap认证后,该功能失效。jabberd2暂时还不支持在LDAP服务器上创建用户信息。

...

<!-- LDAP module configuration -->      #开始配置LDAP服务参数
    <ldap>
      <!-- LDAP server host and port (default: 389) -->
      <host>Ldap_server</host>          #配置LDAP服务器主机名
      <port>389</port>                  #配置LDAP服务器端口

      <!-- Use LDAP v3 if possible. If disabled, v2 will be used.
           Encryption options are only available if v3 is enabled. -->
      <!--
      <v3/>
      -->

      <!-- Encryption. If enabled, this will create an encrypted channel
           to the LDAP server using the LDAP STARTTLS mechanism. -->
      <!--
      <starttls/>
      -->

      <!-- Encryption. If enabled, this will create an encrypted channel
           to the server using the old-style "ldaps://" mechanism. It is
           recommended that you use <starttls/> instead of this. -->
      <!--
      <ssl/>
      -->

      <!-- DN to bind as for searches. If unspecified, the searches
           will be done anonymously. -->

      <binddn>cn=admin,dc=com</binddn>    #配置登录LDAP服务器的DN
      <bindpw>123456</bindpw>             #配置登录密码


      <!-- LDAP attribute that holds the user ID (default: uid) -->
      <uidattr>uid</uidattr>              #配置用户认证属性

      <!-- base DN of the tree. You should specify a DN for each
           authentication realm declared in the <local/> section above,
           by using the realm attribute. -->
      <basedn realm=''>dc=user,dc=company,dc=com</basedn>  #配置搜索路径起点
     <!-- <basedn>o=Example Corp.</basedn> -->
    </ldap>

...

    *

      配置sm.xml文件,启用auto-create功能,自动始初化会话。

...
  <!-- User options -->
  <user>
    <!-- By default, users must explicitly created before they can start
         a session. The creation process is usually triggered by a c2s
         component in response to a client registering a new user.

         Enableing this option will make it so that a user create will be
         triggered the first time a non-existant user attempts to start
         a session. This is useful if you already have users in an
         external authentication database (eg LDAP) and you don't want
         them to have to register. -->

    <auto-create/>
...

    *

      配置完成后,重启Jabberd2服务器,如果配置正确,可在系统日志/var/log/message文件看到以下信息:

...

Nov 24 11:33:17 t03 jabberd/sm[29600]: initialised storage driver 'mysql'
Nov 24 11:33:17 t03 jabberd/sm[29600]: version: jabberd sm 2.0s10

...

Nov 24 11:33:17 t03 jabberd/c2s[29602]: starting up
Nov 24 11:33:17 t03 jabberd/c2s[29602]: process id is 29602, written to /usr/local/jabberd2/var/jabberd/pid/c2s.pid
Nov 24 11:33:17 t03 jabberd/c2s[29602]: ldap: configured 1 realms
Nov 24 11:33:17 t03 jabberd/c2s[29602]: initialised auth module 'ldap'
Nov 24 11:33:17 t03 jabberd/c2s[29602]: [t03.tigerhead] configured; realm=(null)

在jabberd2中,我们可以设置默认的好友列表模板,当用户第一次登录系统时就会自动获得该列表,不用手动一个用户一个用户地添加。要启用该功能,首先要在sm.xml配置文件的内进行配置。jabberd2默认是没有打开该功能的,我们只要在 sm.xml文件中把template内的roster标签前的注释符删除即可。如:

...
    <!-- Templates. If defined, the contents of these files will be
         stored in the users data store when they are created. -->
    <template>

        <roster>/usr/local/jabberd2/etc/jabberd/templates/roster.xml</roster>

    </template>
...


从上面的配置可以看以,默认的模块是存放在/usr/local/jabberd2/etc/jabberd/templates/roster.xml目录下的。我们编辑roster.xml文件,按以下格式添加用户列表。

<!-- This is the roster template. If enabled in sm.xml, new users will
     get this roster by default. -->
<query xmlns='jabber:iq:roster'>
  <!--
  <item name='Helpdesk' jid='helpdesk@localhost' subscription='both'><group>Support</group></item>
  -->
  <item name='ringkee' jid='ringkee@company.com' subscription='both'><group>IT</group></item>
  <item name='diu167' jid='diu167@company.com' subscription='both'><group>IT</group></item>
  <item name='dongrui' jid='dongrui@company.com' subscription='both'><group>IT</group></item>
  <item name='sally' jid='sally@company.com' subscription='both'><group>IT</group></item>
  <item name='xmr' jid='xmr@company.com' subscription='both'><group>IT</group></item>
</query>

上面设置了一个IT组,里面有5个用户。修改roster.xml文件后,不用重启服务器就可使修改生效。当用户首次登录时,这5个用户列表会自动下载到客户端。这种下载动作只会在用户首次登录系统时发生。当用户第一次登录时,jabberd2会在active表中插入一条记录,记录登录的用户帐号名和登录时间等信息。jabberd2以此判断用户是否第一次登录。同时把模板中的用户列表信息按登录用户的不同保存在roster- items和roster-groups两个表中。当用户第二次登录时,jabberd2在active中可以查询到用户帐号信息,就不会再把模板中的用户列表信息保存到roster-items和roster-groups表中。而是直接下载roster-items和roster-groups表中的用户列表信息来使用。当用户在客户端手工删除用户列表后,jabberd2会直接删除roster-items和roster-groups表中的用户列表信息。这样,下次用户登录时就找不到用户列表了,所以我们不要随便删除用户列表信息。为了使删除后的用户列表能重新下载或更新,我们可在active表中删除该用户的帐号记录。下次用户登录系统时,系统还会把你当成是首次登录,又会自动下载模板中的用户列表。

jabberd2系统的所有信息都保存在MySQL数据库的jabberd2数据库中。一面介绍jabberd2数据库各个表的作用。

    *

      active表,存放用户名和用户第一次登录的时间。表中的记录在用户第一次登录系统时插入,以后用户登录系统不影响该记录的内容。
    *

      authreg表,当选择MySQL数据库作为jabberd2的用户验证数据库时,该 表才有意义。它用以存放用户的验证信息,如用户名、密码和范围。
    *

      disco-items表,记录离线信息。
    *

      logout表,记录用户最近的登出信息,包括jid和时间戳。
    *

      motd-message表,记录XML格式的MOTD(Message Of The Day)信息。
    *

      motd-message表,记录接收的MOTD信息内容,包括jid和时间戳。
    *

      privacy-default表,
    *

      privacy-items表,
    *

      private表,以XML格式存放用户的私人信息,如收藏夹、爱好等。
    *

      queue表,存放排序信息。
    *

      roster-groups表,保存已分组的用户列表信息。
    *

      roster-items表,保存用户列表信息,包含验证状态信息。
    *

      vacation-setting表,
    *

      vcard表,保存用户帐号信息,包含用户名、住址、URL和职务等。

论坛徽章:
0
3 [报告]
发表于 2005-12-30 16:47 |只看该作者
不错...............

论坛徽章:
0
4 [报告]
发表于 2006-01-06 11:26 |只看该作者
要先安装SQL才的吧?

论坛徽章:
0
5 [报告]
发表于 2006-01-09 15:13 |只看该作者
原帖由 yjnet 于 2005-11-29 17:14 发表
转自肥肥世家 http://www.ringkee.com

8.11. 安装Jabberd2服务器

jabberd2服务器还没正式进入Debian的软件包,但我们可从源码开始安装。下面介绍如何在Debian平台中如何从源码安装jabberd-2.0s1 ...

老兄,为什么我不能安装呀.........一定要安装MYSQL吗?

论坛徽章:
0
6 [报告]
发表于 2006-01-12 13:16 |只看该作者
不一定要用MySQL,也可以用pgsql或Berkeley DB。
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

北京盛拓优讯信息技术有限公司. 版权所有 京ICP备16024965号-6 北京市公安局海淀分局网监中心备案编号:11010802020122 niuxiaotong@pcpop.com 17352615567
未成年举报专区
中国互联网协会会员  联系我们:huangweiwei@itpub.net
感谢所有关心和支持过ChinaUnix的朋友们 转载本站内容请注明原作者名及出处

清除 Cookies - ChinaUnix - Archiver - WAP - TOP