Jabberd2:安装和管理指南

来自Jabber/XMPP中文翻译计划
(版本间的差异)
跳转到: 导航, 搜索
(配置存储使用BerkeleyDB)
(提供和配置PostgreSQL)
第737行: 第737行:
  
 
===提供和配置PostgreSQL===
 
===提供和配置PostgreSQL===
 +
 +
[http://www.postgresql.org/ PostgreSQL] 和MySQL一样,提供一个非常易于管理的后端用于存储和验证. 和MySQL不同的是, PostgreSQL提供了更好的 unicode支持.
 +
 +
====提供PostgreSQL====
 +
 +
如果你使用PostgreSQL存储 和/或 验证请完成本节. 为了给Jabberd配置PostgreSQL, 你必须新建一个数据库,新建一个PostgreSQL用户并运行Jabberd 2分发包里带的PostgreSQL脚本.
 +
 +
为Jabberd新建数据库. (PostgreSQL服务器应该已经在运行):
 +
 +
<source lang="bash">
 +
      createdb -U postgres jabberd2
 +
</source>
 +
 +
以上命令讲新建一个数据库,你可以在那个数据库运行接哦本来安装Jabberd PostgreSQL数据库.
 +
 +
'''N 注意: Unicode支持'''
 +
 +
:如果你希望为你的PostgreSQL数据库激活Unicode支持, 把以上命令修改如下:
 +
 +
<source lang="bash">
 +
      createdb -U postgres -E UNICODE jabberd2
 +
</source>
 +
 +
'''P 参数: PostgreSQL用户名和密码'''
 +
 +
:新建你的Jabberd数据库用户, 输入以下命令:
 +
 +
<source lang="bash">
 +
      createuser -P -U postgres jabberd2
 +
</source>
 +
 +
这个命令将初始化一个交互用户创建脚本. 当看到提示, 输入将来用于连接到你的PostgreSQL数据库的Jabberd的密码:
 +
 +
<source lang="bash">
 +
      Enter password for user "jabberd2":
 +
      Enter it again:
 +
      Shall the new user be allowed to create databases? (y/n) n
 +
      Shall the new user be allowed to create more new users? (y/n) n
 +
      CREATE USER
 +
</source>
 +
 +
''CREATE USER'' 信息表示命令执行成功.
 +
 +
在你的jabberd用户创建之后, 你已经准备好运行PostgreSQL安装脚本了. 这个脚本位于 '\[Jabberd Source Files\]\/tools'. 切换到 ''tools'' 目录并以jabberd2用户身份启动PostgreSQL控制台:
 +
 +
<source lang="bash">
 +
      psql -U jabberd2 jabberd2
 +
</source>
 +
 +
然后, 从PostgreSQL控制台运行 ''db-setup.pgsql'' 脚本:
 +
 +
<source lang="bash">
 +
      jabberd2=>\i db-setup.pgsql
 +
</source>
 +
 +
PostgreSQL现在准备好用于Jabberd了.
 +
 +
====配置存储使用PostgreSQL(sm.xml)====
 +
 +
如果你使用PostgreSQL存储,请完成本节. 大多数使用PostgreSQL存储的安装只需要设置驱动, 用户和密码.
 +
 +
在 ''sm.xml'' 里标为 ''Storage database configuration'' 的段落下, 确保 ''driver'' 是用 pgsql (PostgreSQL):
 +
 +
<source lang="xml">
 +
      <!-- Storage database configuration -->
 +
        <storage>
 +
          <!-- By default, we use the MySQL driver for all storage -->
 +
          <driver>pgsql</driver> 
 +
</source>
 +
 +
'''P 参数: PostgreSQL用户名和密码'''
 +
 +
:在 ''sm.xml'' 里标为 ''PostgreSQL driver configuration'' 的段落下, 把 ''secret'' 替换成你的PostgreSQL密码. 如果你不使用缺省用户(jabberd2)则还要修改用户名 :
 +
 +
<source lang="xml">
 +
      <!-- PostgreSQL driver configuration -->
 +
      <pgsql>
 +
        <!-- Database server host and port -->
 +
        <host>localhost</host>
 +
        <port>5432</port>
 +
 +
        <!-- Database name -->
 +
        <dbname>jabberd2</dbname>
 +
 +
        <!-- Database username and password -->
 +
        <user>jabberd2</user>
 +
        <pass>secret</pass>
 +
 +
        <!-- Transaction support. If this is commented out, transactions
 +
            will be disabled. This might make database accesses faster,
 +
            but data may be lost if jabberd crashes. -->
 +
        <transactions/>
 +
      </pgsql>
 +
</source>
 +
 +
注意只有你的PostgreSQL服务器运行在另一个主机上你才应该修改host设置. 只有你的PostgreSQL服务器运行在一个非标准端口(5432是PostgreSQL安装后的缺省端口)你才应该修改port设置. transaction support 段落则是不言自明的了.
 +
 +
现在Jabberd 2已经配置成使用PostgreSQL来存储了.
 +
 +
如果你希望使用一个不同于PostgreSQL的验证包, 跳到你选择的验证包:
 +
 +
* [[Jabberd2:安装和管理指南#提供和配置PAM|提供和配置PAM]]
 +
* [[Jabberd2:安装和管理指南#提供和配置OpenLDAP|提供和配置OpenLDAP]]
 +
 +
否则, 继续到 4.5.3. 直接往下完成你的Jabberd 2配置.
 +
 +
====配置验证使用PostgreSQL(c2s.xml)====
 +
 +
如果你使用PostgreSQL来验证,请完成本节. Jabberd 2对于PostgreSQL验证配置的要求同上,除了包含在 ''c2s.xml'' 的信息.
 +
 +
在 ''c2s.xml'' 的 ''Authentication/registration database configuration'' (验证/注册 数据库配置)段落, 确保 ''driver'' 使用pgsql (PostgreSQL):
 +
 +
<source lang="xml">
 +
    <!-- Authentication/registration database configuration -->
 +
      <authreg>
 +
        <!-- Backend module to use -->
 +
        <module>pgsql</module>     
 +
</source>
 +
 +
'''P 参数: PostgreSQL用户名和密码'''
 +
 +
:在 ''c2s.xml'' 的 ''PostgreSQL module configuration'' 段落, 把 ''secret'' 替换成你的PostgreSQL密码. 如果你不使用缺省用户(jabberd2)则还要修改用户名 :
 +
 +
<source lang="xml">
 +
      <!-- PostgreSQL module configuration -->
 +
      <pgsql>
 +
        <!-- Database server host and port -->
 +
        <host>localhost</host>
 +
        <port>5432</port>
 +
 +
        <!-- Database name -->
 +
        <dbname>jabberd2</dbname>
 +
 +
        <!-- Database username and password -->
 +
        <user>jabberd2</user>
 +
        <pass>secret</pass>
 +
      </pgsql>
 +
</source>
 +
 +
注意只有你的PostgreSQL服务器运行在另一个主机上你才应该修改host设置. 只有你的PostgreSQL服务器运行在一个非标准端口(5432是PostgreSQL安装后的缺省端口)你才应该修改port设置.
 +
 +
你的Jabberd 2的存储和验证配置现在完成了. 在转移到其他配置任务(例如 [[Jabberd2:安装和管理指南#通用配置任务|第五章]] 的配置SSL)之前,跳到 [[Jabberd2:安装和管理指南#测试服务器|测试服务器]] 去开始测试你的服务器.
 +
 +
[http://www.jabberdoc.org/section04_5/html2pdf 以PDF格式查看]
  
 
===对PAM的规定和配置===
 
===对PAM的规定和配置===
 
===对OpenLDAP的规定和配置===
 
===对OpenLDAP的规定和配置===
 
===测试服务器===
 
===测试服务器===

2011年1月18日 (二) 06:59的版本


本文的英文原文来自 http://www.jabberdoc.org/jabberd_guide

Jabberd2安装和管理指南

目录

绪论

本文包括 Jabberd 2 服务器 (Jabberd) 的安装和管理指南 , 流行的基于Jabber协议的开源即时消息系统的最新版本. Jabber的目标是为客户端和客户端之间同步和异步的通讯提供一个XML协议, 尽管Jabber主要用于即时消息 (IM).

Jabberd 服务器是Jabberd协议原始的开源服务器实现, 并且留下了大部分流行的软件,无论是布署在公司或作为一个公开的 IM 服务. Jeremie Miller在1998年开始了Jabber项目,提供给所有的IM服务一个自由和开放的选择. Jabberd服务器继续成为Jabber项目的核心, 并且Jabberd 2相对于于使用更广泛的Jabberd 1.4服务器来说是成功者. Jabberd 2 是基于一个新体系结构的完整的新代码, 额外的功能,并更好地遵守了Jabber协议.

一个常见的消息协议的建立, 现在大家知道的XMPP (可扩展的消息和出席信息协议), 允许在Jabberd服务器之外新建更多的Jabber服务器实现. 这许多的开源项目中, 包含WP Jabberejabberd, 以及许多软件来自商业机构如 i3connect, Jabcast, Tipic 和 Jabber, Inc.

目的和范围

本文的作者打算提供一个完整的关于 jabberd 2 安装, 管理和开发的指南:

  • 系统准备
  • 服务器准备
  • 服务器配置
  • 体系结构概述

目标受众是那些希望在Unix或其某个变种安装和/或维护一个jabberd 2服务器的人. 因此, 本文仅覆盖了Unix操作系统上的Jabberd安装.

需要的背景知识

作者做了很多努力来制作这个手把手的指南; 然而, 还是假定读者对Unix 或 Linux 操作系统比较熟悉:

  • 能使用Linux命令行控制台
  • 熟悉文件系统,你的服务器将装在那里
  • 熟悉一个文本编辑器, 如 vi, Nano 或 NEdit
  • 基本的编辑 XML 文件的能力

假定读者基本熟练使用一个Jabber客户端. 另外, 假定读者熟悉硬件和软件, 例如防火墙, 路由器或调制解调器, 如果使用了这类硬件,jabber服务器将用来连接到互联网. 这些次要程序和设备的配置超出了本指南的范围.

如何使用本文档

本指南根据用户的使用来组织章节:

  • 安装和配置 Jabberd 2 (2到4章)
  • 一般的配置和管理任务 (5到6章)
  • Jabberd 2配置文件概要 (7到12章)
  • Jabber 2体系结构 (13章)
  • Jabberd 快速指南 (附录A)
  • Jabberd 2 常见问题(FAQ)

快速指南是为有经验的用户尽快运行而设计的. 详细的 Jabberd 2 安装指导开始于第二章,准备安装Jabberd2. 第5和第6章分别列出了常见的配置管理任务, 剩下的章节提供了详细的配置信息.

本文使用的约定

本文主要是作为一个安装指南提供的, 因此, 使用了特定的约定来使安装对用户来说更容易. 以下出现的约定贯穿本指南的安装章节:

表 1.4. 本指南使用的文档约定

约定 名称 描述
P 参数 一个配置文件中关于你的特定安装的信息, 等等.
C 检查点 一个点,停止并检查你的安装
N 注意 强调信息
I 重要 重要的强调或警告
F 必需的文件 完成这一步或下列步骤所需要的软件或特定文件
O 可选步骤 这一步在大部分基本安装中不是必需的步骤
E 外部系统 这一步可能需要在外部系统配置,如路由器

这些里面最有用的约定是参数"Parameters." 第2章开始于一个关于你的安装的信息(参数)的列表,在你的安装步骤中将需要用到它们. 你可以在开始安装Jabberd之前收集所有这些信息, 然后你可以在每一步显示了P的地方参考.

这个安装指南用编号来组织这些步骤,下级步骤. 鼓励用户把本指南当成一个检查列表来使用. 当一个步骤的所有下级步骤完成, 接着上级步骤本身也完成了. 注意一个 "可选步骤"的所有子 (下级步骤) 也是可选的. 注意 "可选步骤" 设计用来满足关于在哪个条件和/或下可选步骤应被执行的需求.

标为"外部系统"的步骤提供信息给用户,表示安装可能需要执行于一个jabberd之外的系统. 这些系统包括路由器, 防火墙, DNS服务器, 等等. "外部系统" 提示主要是信息提示而不是详尽的. 剩下的约定是不言自明的.

注意本指南列出的每个命令引用的一个命令都是进入了一个命令行提示或命令行提示shell, 例如 X-term 或 E-term. 也要注意在本文里, 术语 "Jabberd" 指的是 Jabberd 2 服务器, 除非特别声明. 术语 "Jabber" 指基于Jabber的系统或系统们, 而 "XMPP" 指Jabber系统运行的协议.

本文使用结构化的文本建立. 结构化的文本使用标准文本格式化约定, 例如 underscores, 来展示格式化的文本. 已经做了很多努力来让文本和HTML格式接近. 一个例外是,在文本版本中使用的 bang 字符 ("!") ,在HTML版本中是用来避免不想要的格式的. "Bangs" 出现在文本版本的一些行的开始, 而这些可能被忽略. 它们不显示在 HTML 版本中.

更多阅读

访问Jabber软件基金会 获得关于jabberd 2, jabber客户端, 和Jabber协议的最新新闻. Jabber Faq 回答关于Jabber的基本问题. 鼓励读者访问关于jabber管理的提问 Jadmin归档, 或订阅 Jadmin邮件列表得到最新的jabberd管理信息. Jabberd 2开发信息可以在Jabberd归档找到,或订阅Jabberd邮件列表.

也有许多好的关于Jabber的书. 注意以下的书关于jabberd 1.4的只是写于2003年:

法律术语

Jabberd安装和管理指南的版权(2003)由Will Kamishlian and Robert Norris所有。

这项工作是根据创作共用许可署名,类似非商业性使用方式共享许可。要查看本许可协议,请访问 http://creativecommons.org/licenses/by-nc-sa/1.0/ 或发信到 Creative Commons, 559 Nathan Abbott Way, Stanford, California 94305, USA.

来源

Robert Norris, 主要的Jabberd 2开发者, 以及Jabberd List的发起人,为本文提供了技术信息.

准备安装Jabberd2

本章让你和你的系统准备好安装Jabberd 2:

本章的表 2.1. 列出了Jabberd 2安装需要的信息. 在这个点上收集这个信息是可选的; 然而, 现在完成这个表格将使安装更容易.

收集必需的信息

下表列出的信息是安装过程中需要的. 以下是每个参数提供的信息:

  • 参数Parameter
  • 必需的Required
  • 章节Section
  • 描述Description
  • 你的信息Your Information

"Parameter" 是信息的名称部分. 贯穿整个指南, 特定的参数指向 P 约定. "Required 要么是 "Y" (yes), "N" (no), 要么是 可选的名称. 可选的名称指向这个参数需要的选项. 一些条目有建议的内容给"Your Information." 这些条目要么显示受限的选择要么显示缺省值. 这里给出了缺省值, 它们被用于本指南的例子.

对于最小安装, 完成所有必需的参数. 对于什么条件下需要可选的参数的更多信息, 详见参考章. "Description" 是一个简短描述. 再一次的, 详见参考章.

I Important: Table Contains Passwords

下表包含了密码. 如果你在下表写下了你的密码, 把本文(或页)存在一个安全的地方.

表 2.1. Jabberd2安装必需的信息

参数 必需的 章节 描述 你的信息
Jabberd User and Group Y 2.2 Linux(或其他OS)用户和组,将用于运行Jabberd user: jabber group: jabber
PID Directory Y 2.3 Jabberd存储PID文件的目录 /usr/local/var/jabberd/pid
Log Directory N 2.3 用于Jabberd logs的目录. 如果在配置文件中不指定, 日志缺省存在syslog. /usr/local/var/jabberd/log
Authentication Package Y 2.4.3 3.3, Jabberd验证管理使用的第三方包 MySQL, PostgreSQL, Berkeley DB, OpenLDAP or PAM
Data Storage Package Y 2.4.4 4.3 用于存储Jabberd数据的第三方包 MySQL, PostgreSQL or Berkeley DB
Data Directory Berkeley DB 4.1.1, 4.2.1, 用于存储Berkeley DB数据文件的目录 /usr/local/var/jabberd/db
MySQL User and Password MySQL 3.5.2.2, 4.1.2, 4.2.2, Jabberd用于连接MySQL的MySQL用户名和密码 user: jabberd2 password: secret
PostgreSQL User and Password PostgreSQL 3.5.3.1, 1 3, 4.2.3, Jabberd用于连接PostgreSQL的PostgreSQL用户名和密码 user: jabberd2 password: secret
OpenLDAP Connection Settings OpenLDAP 2.5 用于你的OpenLDAP服务器连接设置: 指定LDAP服务器(或IP)的FQDN,端口,和LDAP使用的版本(要么v2要么v3)
OpenLDAP User and Password OpenLDAP 4.2.5 连接到你的OpenLDAP服务器的用户名和密码. 只有你的OpenLDAP服务器不允许匿名绑定(访问)时才需要
OpenLDAP Query Settings OpenLDAP 4.2.5 Base DN (识别名) 和 User ID 属性用于为OpenLDAP服务器建立查询. Base DN 可以要么是服务器的root DN 要么是一个可以在它那找到 User ID's 的 RDN (相对的识别名).
Hostname Y 4.4 你的安装了Jabberd服务器的主机名. 对于可从互联网访问的服务器, 看起来类似 somedomain.com
SSL Key Location N 5.3.1, 5.3.2 OpenSSL证书文件的位置. 对于SSL加密通讯是必需的 /usr/local/etc/jabberd/server.pem
Router User and Password N 5.4 用于别的组件连接到Jabberd Router组件的用户名和密码 user: jabberd2 password: secret

新建Jabber用户和组

你应该新建一个jabber用户和组来运行服务器:

P 参数: Jabber User and Group

新建一个用于运行Jabberd(作为超级用户)的用户和组:

          su
          groupadd jabber
          useradd -g jabber jabber

I 重要: 检查你的用户和组命令

以上命令只是一个例子. 在你的系统中增加一个用户和组的命令和参数可能不同. 如果对这些命令有任何疑问请参考手册.

为PID's和Logs新建目录

你应该为Jabberd新建一个目录来存储它的PID和log文件, 并让之前新建的用户拥有这些目录的所有权.

P 参数: PID Directory

为PID文件(作为超级用户)新建一个目录:

          su
          mkdir -p /usr/local/var/jabberd/pid/
          chown -R jabber:jabber /usr/local/var/jabberd/pid/

以上目录是Jabberd PID 文件的缺省的位置.

你也可以选择为logs新建一个目录.

O 可选的: Log Directory

如果你想要, 为logs新建一个独立的目录, 并把所有权赋予你的jabber用户:

          mkdir -p /usr/local/var/jabberd/log/
          chown -R jabber:jabber /usr/local/var/jabberd/log

N 注意: Log文件缺省为Syslog

注意Jabberd缺省地把消息写到syslog. 为了强制Jabberd把它的logs写到上述目录, 必须编辑组件的XML文件以指定上述新建的目录.

安装先决条件

Jabberd2有四个先决条件:

技术上来讲, Jabberd 2的安装可以不需要OpenSSL或Libidn; 然而, 强烈推荐在安装Jabberd之前安装这些包. Jabberd 2也要求数据存储包用于应用和验证; 然而, 一个单独的包, 例如 MySQL, 也可能同时满足数据存储和验证的要求.

OpenSSL

OpenSSL为Jabber提供客户端到服务器以及服务器之间的通讯的加密. XMPP协议要求Jabber服务器支持TLS (传输安全层). TLS是SSL的继任者.

N 注意: 最小OpenSSL版本

Jabberd 2依赖OpenSSL版本0.9.6b或更高.

I 重要: OpenSSL升级问题

如果你升级了OpenSSL, 你可能需要重新编译安装目前依赖于老版本OpenSSL的软件. 提出这个警告是因为很多工具依赖于OpenSSL, 而且OpenSSL升级之后这些工具可能停止运作. 建议谨慎地更新OpenSSL, 升级OpenSSL的详细指引超出了本文范围.

更多信息请看OpenSSL网站. OpenSSL下载在OpenSSL Source页. 为Jabberd 2安装OpenSSL的指引在本指南的附录里. 参见为Jabberd安装OpenSSL.

Libidn

Libidn为Jabberd 2提供必要的字符处理功能. 在Jabberd 2稳定版3之前, libidn已经被包含在Jabberd 2分发版里; 然而, 版权冲突使得libidn必须提前独立安装.

N 注意最小libidn版本

Jabberd 2依赖于libidn版本0.3.0或更高.

详见Libidn网站. Libidn下载在Libidn Source页. 安装libidn指引在本指南的附录. 参见为Jabberd安装Libidn.

数据存储包

Jabberd 2对数据库集成的支持比以前更好了, 而且Jabberd 2能使用三种自由数据库之一来提供数据存储:

MySQL是推荐以及缺省的数据存储. 文件也可以用来存储Jabberd 2数据; 然而, 这是不推荐的.

N 注意: MySQL和Unicode支持

MySQL版本4.1和更高版本支持Unicode (UCS-2和UTF8) 字符编码. 如果你的安装需要支持多字母编码, 并且希望使用MySQL, 选择4.1或更高版本.

如果你已安装了这些数据库中的一个, 你可以配置它为Jabberd工作. 反之, 你应该选择这些数据库中之一并在继续安装Jabberd之前安装它. MySQL是推荐的数据库; 然而, Berkeley DB 需要的安装和管理工作更少. 从而, 对于用户比较少的安装来说,Berkeley DB 也是理想的选择.

I 重要: MySQL需要开发库和头文件

注意Jabberd需要的不止是最小的MySQL安装. 除了基本的MySQL安装, Jabberd要求开发库和头文件也要安装. 要么执行一个MySQL Downloads页列出的最大安装, 要么独立的安装服务器, 客户端程序, 库和头文件, 以及动态客户端库. 为了安装附加的库,可能需要卸载当前的 MySQL安装.

本文的附录包括了为Jabberd 2安装MySQL或Berkeley DB的指引. 参见为Jabberd安装Berkeley DB为Jabberd安装MySQL.

验证包

Jabberd 2能使用五种第三方数据包之一来处理用户验证:

注意三种支持的一个应用数据包也被用于管理验证信息. 所以, 安装MySQL, Berkeley DB 或 PostgreSQL 之一同时满足了Jabberd数据包的要求. 可以用一个文件存储验证数据; 然而, 这是不推荐的. 推荐的和缺省的包是MySQL.

如果你已经安装了以上五种验证数据包之一, 你可以配置它用于Jabberd 2. 如果没有, 你应该安装以上五个包中的一个或多个.

本文的附录包括了为Jabberd 2安装MySQL或Berkeley DB的指引. 参见为Jabberd安装Berkeley DB为Jabberd安装MySQL.

安装Jabberd 2

本章描述如何编译和安装Jabberd 2.

下载Jabberd 2

F 必需的文件

Jabber Studio下载文件 jabberd-2.0sn.tar.gz , 这里 "n" 是Jabberd 2的最新稳定版本号.

下载上述文件到一个 /home 下的目录,用于编译这些安装文件. 撰写本文的时候, Jabberd 2 稳定发布版3 是最新的版本并且用于下面的例子.

提取Jabberd安装文件

进入到你下载上述文件的目录然后通过命令行提取Jabberd 2文件:

      tar -zxvf  jabberd-2.0s3.tar.gz

配置Jabberd编译

|| 待做: 准备重写配置指引使得它们更清晰. 也许放一些特别的配置到 FAQ ||

进入上面建立的文件夹:

      cd jabberd-2.0s3

O 可选的: 查看配置选项

在配置Jabberd之前, 你可以查看所有配置选项,运营以下命令:

          ./configure --help

这将提供一个设置配置选项的清单和语法. 例如, 你可以安装Jabberd到一个特定的目录,通过使用 --prefix=PREFIX 选项. 通过提供一个 PREFIX 路径, 所有的Jabberd文件将被安装在这个目录下. 如果你正在测试一个新的Jabberd安装,这可能很有用. 另一个有用的选项是 --enable-debug. 这个选项允许Jabberd提供详细的调试信息; 然而, 在生产系统上它应该慎用.

I 重要: 配置选项已经在稳定版本3中改变了

Jabberd 2稳定版本3为配置脚本改变了一些参数. 以下信息属于Jabberd 2稳定版本3和更高版本.

I 重要: 对于OpenSSL和Libidn使用明确的选项

推荐Jabberd 2把OpenSSL和Libidn配置成明确的选项. 这些包从技术上是可选的. 所以, 配置可以不用它们而编译Jabberd 2,如果当配置运行的时候它们的库和头文件没找到.

P 参数: 应用程序数据包和验证数据包

验证包和数据包应该以 --enable- 选项指定. 选项为 --enable-mysql, --enable-pgsql, --enable-db, --enable-pam or --enable-ldap. 尽管 --enable-mysql 是缺省的, 如果使用了MySQL,还是推荐指定它. 例如, 这个命令将被用于允许MySQL成为验证和存储包,但不支持调试:

          ./configure --enable-mysql --enable-ssl --enable-idn

以下命令将用于配置Jabberd使用Berkeley DB,同时用于存储和验证并允许调试:

      ./configure --enable-db --enable-debug --enable-ssl --enable-idn

如果Jabberd的先决条件之一被安装在一个非标准的位置, 你将需要在运行配置的时候指定这个位置. 指定替代的头文件路径可以使用 --with-extra-include-path 选项,指定替代的库文件路径可使用 -with-extra-library-path 选项. 多路径, 分别位于不同克隆, 可以指定. 例如, 如果OpenSSL和MySQL被安装在 /usr/local, 你可以用以下指令配置:

      ./configure --enable-pgsql --enable-ssl --enable-idn \
      --with extra-include-path=/usr/local/include:/usr/local/include/mysql \
      --with-extra-library-path=/usr/local/lib:/usr/local/lib/mysql

I 重要: 不正确的参数会被忽略

Jabberd忽略不正确的配置参数. 因而, 一个不正确的配置参数可能仍会成功配置, 即使错误的Jabberd配置. 如果有疑问运行 ./configure --help .

I 重要: Redhat 9配置

在Redhat 9编译Jabberd 2要求特定的配置,因为Redhat 9自带了自己的Kerberos版本. 详见 FAQ 中关于 Redhat 9 的部分.

如果你希望使用缺省配置,简单地运行配置命令:

      ./configure

这将配置Jabberd使用MySQL和安装到 /usr/local 目录. 如果你接收到错误, 你可能希望检查 FAQ,你将发现许多系统特定的工作环境.

编译Jabberd

编译Jabberd,运行以下命令:

      make

安装Jabberd

切换到超级用户:

      su

运行make install:

      make install

缺省文件位置

你的Jabberd 2安装完成了. 以下是一个缺省安装的文件位置列表:

      /usr/local/etc/jabberd     Jabberd Configuration Files
      /usr/local/bin       Jabberd Binaries (jabberd, c2s, resolver, router, s2s, sm)

设置配置文件的所有权

Jabberd配置文件包含密码; 所以, 你应该对这些文件设置所有权和许可,这样他们只能被你的jabber用户读和被root用户写. 使用你的配置文件的位置和你的jabberd用户, 设置这些文件的所有权:

      chown -R root:jabber /usr/local/etc/jabberd/*

然后, 给这些文件设置许可,这样别人不能读写它们:

      chmod -R 640 /usr/local/etc/jabberd/*

现在, 只有你的jabber用户和和超级用户能读和编辑你的配置文件.

O 可选的: 为配置文件建立符号连接

如果你使用缺省的位置安装Jabberd, 你可能希望在 /etc 目录为配置文件新建一个符号连接(作为超级用户). 这将使你更容易找到和修改它们:

          ln -s /usr/local/etc/jabberd/ /etc/jabberd

Jabberd 2现在安装完了. 继续下一章配置你的安装.

基本配置

本章为大多数基本配置和你的Jabberd 2的测试提供一个快速的路线图. Jabberd 2的基本安装包含这三个步骤:

  1. 设置主机名(sm.xml和c2s.xml)
  2. 对于存储和验证包的规定和配置
  3. 测试服务器

Jabberd 2是通过它的6个XML文件来配置的. 对于缺省的安装, 这些配置文件在 /usr/local/etc/jabberd/, 而且它们可以从 /etc/jabberd 访问,如果你为这个目录建立了符号连接的话. 注意如果你在前面第二章收集了必需的信息,本章更容易完成.

在sm.xml和c2s.xml设置主机名

基本配置的第一步包括在sm.xml 和 c2s.xml设置主机名.

P 参数: Hostname

你的服务器主机名(网络ID) 必须同时在 c2s.xml 和 sm.xml 里设置,这样这个 ID 为你的服务器提供一个可解析的引用. 在 c2s.xml 里,这个 ID 位于头标记为 Local network configuration 的位置(大约第63行), 在 sm.xml 里这个 ID 位于 Session manager configuration (第一行). 编辑 sm.xml 和 c2s.xml ,这样这个 ID 引用你的服务器.

在 sm.xml :

      <!-- 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>somemachine.somedomain.com</id>

在 c2s.xml :

      <!-- 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>somemachine.somedomain.com</id>

如在 c2s.xml 文件看到的, 这个主机名将被加到你的用户名后面以建立Jabber ID's, 而且为了Jabberd能通过互联网访问,它必须可通过DNS解析,.

N 注意

你可以仅使用一个域名(somedomain.com) 给你的Jabberd 2网络ID,如果你的DNS之前被配置成解析那个ID到你的服务器. 关于为Jabberd 2设置 DNS SRV 记录的信息,参见5.7章.

对存储和验证包的提供和配置

要让Jabberd 2和你选择的外部存储和验证包一起工作,包括这些步骤:

  1. 提供和Jabberd 2协作的外部包
  2. 为你选择的存储包配置 sm.xml
  3. 为你选择的验证包配置 c2s.xml

大多数 Jabberd 2 安装包依赖于单个包, 例如 MySQL, 来同时提供存储和验证服务. 如果你的安装包依赖于单个的包, 你将需要为Jabberd 2配置这个包,并且在 sm.xml 和 c2s.xml里都加入类似的连接信息.

P 参数: 数据存储和验证包

跟随本指南,为你选择的存储和验证包完成有关的条款. (用于存储的 Berkeley DB, MySQL 或 PostgreSQL. 用于验证的 Berkeley DB, MySQL, PostgreSQL, PAM 或 OpenLDAP.)

跳到你选择的外部存储包开始:

然后你将被引导继续提供(如果需要) 和配置你的验证包. 一旦你的外部包准备好了, 并且Jabberd被配置好使用它们, 你将进入服务器测试.

以pdf格式查看

提供和配置BerkeleyDB

Berkeley DB 提供最简单的方法来让你的Jabberd 2服务器快速启动运行. Jabberd 2需要的最低版本是 4.1.24 或更高.

提供BerkeleyDB

如果你把Berkeley DB用来存储或验证,请完成本节. 让你的系统提供Berkeley DB是很简单的. Berkeley DB只需要一个目录存储数据文件, 而jabber用户或组拥有这个目录的所有权.

P 参数: 数据目录

新建一个目录并为Berkeley DB设置权限 (使用之前已经建立的用户和组). (以超级用户身份):
           mkdir -p /usr/local/var/jabberd/db
           chown -R jabber:jabber /usr/local/var/jabberd

现在Berkeley DB已经准备好用于Jabberd了.

配置存储使用BerkeleyDB(sm.xml)

如果你使用Berkeley DB来存储,请完成本节. Jabberd 2要求的最低配置是使用Berkeley DB作为后端存储. 简单地设定使用的驱动并指定数据库的位置.

sm.xml 里的 Storage database configuration (存储数据库配置)段落, 编辑 driver 使用 db (Berkeley DB):

      <!-- Storage database configuration -->
        <storage>
          <!-- By default, we use the MySQL driver for all storage -->
          <driver>db</driver>

P 参数: 数据目录

sm.xml 里的 Berkeley DB driver configuration 段落, 为你的数据库设定路径 (在上面 4.3.1. 建立的):
          <!-- Berkeley DB driver configuration -->
          <db>
            <!-- Directory to store database files under -->
            <path>/usr/local/var/jabberd/db</path>
 
            <!-- Synchronize the database to disk after each write. If you
                 disable this, database accesses may be faster, but data may
                 be lost if jabberd crashes. -->
            <sync/>
          </db>

现在Jabberd 2贝配置成使用Berkeley DB存储了.

如果你希望使用别的Berkeley DB之外的包作为验证包, 跳到你选择的验证包:

否则, 继续到 4.3.3. 直接往下完成你的Jabberd 2配置.

配置验证使用BerkeleyDB(c2s.xml)

如果你使用Berkeley DB来验证,请完成本节. Jabberd 2对于Berkeley DB验证配置的要求同上,除了包含在 c2s.xml 的信息.

c2s.xmlAuthentication/registration database configuration (验证/注册 数据库配置)段落, 编辑 module 使用 db (Berkeley DB):

      <!-- Authentication/registration database configuration -->
      <authreg>
        <!-- Backend module to use -->
        <module>db</module>

P 参数: 数据目录

c2s.xmlBerkeley DB module configuration 段落, 为你的数据库设定路径 (在上面 4.3.1. 建立的):
          <!-- Berkeley DB module configuration -->
          <db>
            <!-- Directory to store database files under -->
            <path>/usr/local/var/jabberd/db</path>
 
            <!-- Synchronize the database to disk after each write. If you
                 disable this, database accesses may be faster, but data may
                 be lost if jabberd crashes. -->
            <sync/>
          </db>

你的Jabberd 2的存储和验证配置现在完成了. 在转移到其他配置任务(例如 第五章 的配置SSL)之前,跳到 测试服务器 去开始测试你的服务器.

以PDF格式查看

提供和配置MySQL

MySQL 是用于存储和验证的缺省的Jabberd 2包.

提供MySQL

如果你使用MySQL存储 和/或 验证请完成本节. 为了给Jabberd配置MySQL, 你必须运行Jabberd 2分发包里带的安装脚本. 脚本运行之后, 你应该新建衣蛾用户并赋予数据库权限.

首先, 运行MySQL安装脚本. 这个脚本位于Jabberd源码目录下的/tools子目录. 切换到tools目录并启动MySQL控制台(MySQL服务应该已经在运行中). 然后, 从MySQL控制台运行 db-setup.mysql 脚本:

   mysql -u root -p
   mysql>\. db-setup.mysql

现在一个用于Jabberd的数据库已经存在于MySQL数据目录, 新建一个MySQL用户给Jabberd用来连接MySQL服务器.

P 参数: MySQL用户名和密码

从MySQL控制台, 运行以下SQL指令, 用你选择的Jabberd MySQL用户的密码替换 secret:
 GRANT select,insert,delete,update ON jabberd2.* 
      to jabberd2@localhost IDENTIFIED by 'secret';

注意密码 secret 是Jabberd配置文件中用于MySQL的缺省密码.

MySQL现在准备好用于Jabberd了.

N 注意: 缺省的MySQL Socket

Jabberd 2稳定版3 连接MySQL服务器的socket位于 ‘’/tmp/mysql.sock‘’ . 从源码安装MySQL时的缺省socket是 ‘’/var/lib/mysql/mysql.sock‘’ . 如果 ‘’/tmp/mysql.sock‘’ 不存在,你需要新建一个软连接:
      ln -s /var/lib/mysql/mysql.sock /tmp/mysql.sock

如果你不确定你的MySQL服务器的socket在哪, 参考你的MySQL配置文件(通常位于 /etc/my.cnf/etc/mysql/my.cnf ).

配置存储使用MySQL(sm.xml)

如果你使用MySQL存储,请完成本节. 大多数使用MySQL存储的安装只需要设置驱动, 用户和密码.

sm.xml 里标为 Storage database configuration 的段落下, 确保 driver 是用 mysql . (缺省这driver应该被设为mysql.):

 <!-- Storage database configuration -->
        <storage>
          <!-- By default, we use the MySQL driver for all storage -->
          <driver>mysql</driver>

P 参数: MySQL用户名和密码

sm.xml 里标为 MySQL driver configuration 的段落下, 把 secret 替换成你的MySQL密码. 如果你不使用缺省用户(jabberd2)则还要修改用户名 :
 <!-- 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>secret</pass>
 
        <!-- Transaction support. If this is commented out, transactions
             will be disabled. This might make database accesses faster,
             but data may be lost if jabberd crashes.
 
             This will need to be disabled if you are using a MySQL
             earlier than v3.23.xx, as transaction support did not appear
             until this version. -->
        <transactions/>

注意只有你的MySQL服务器运行在另一个主机上你才应该修改host设置. 只有你的MySQL服务器运行在一个非标准端口(3306是MySQL安装后的缺省端口)你才应该修改port设置. transaction support 段落则是不言自明的了.

现在Jabberd 2已经配置成使用MySQL来存储了.

如果你希望使用一个不同于MySQL的验证包, 跳到你选择的验证包:

否则, 继续到 4.4.3. 直接往下完成你的Jabberd 2配置.

配置验证使用MySQL(c2s.xml)

如果你使用MySQL来验证,请完成本节. Jabberd 2对于MySQL验证配置的要求同上,除了包含在 c2s.xml 的信息.

c2s.xmlAuthentication/registration database configuration (验证/注册 数据库配置)段落, 确保 driver 使用 mysql (驱动缺省应该就是mysql):

      <!-- Authentication/registration database configuration -->
      <authreg>
        <!-- Backend module to use -->
        <module>mysql</module>

P 参数: MySQL用户名和密码

c2s.xmlMySQL module configuration 段落, 把 secret 替换成你的MySQL密码. 如果你不使用缺省用户(jabberd2)则还要修改用户名 :
      <!-- 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>secret</pass>
      </mysql>

注意只有你的MySQL服务器运行在另一个主机上你才应该修改host设置. 只有你的MySQL服务器运行在一个非标准端口(3306是MySQL安装后的缺省端口)你才应该修改port设置.

你的Jabberd 2的存储和验证配置现在完成了. 在转移到其他配置任务(例如 第五章 的配置SSL)之前,跳到 测试服务器 去开始测试你的服务器.

以PDF格式查看

提供和配置PostgreSQL

PostgreSQL 和MySQL一样,提供一个非常易于管理的后端用于存储和验证. 和MySQL不同的是, PostgreSQL提供了更好的 unicode支持.

提供PostgreSQL

如果你使用PostgreSQL存储 和/或 验证请完成本节. 为了给Jabberd配置PostgreSQL, 你必须新建一个数据库,新建一个PostgreSQL用户并运行Jabberd 2分发包里带的PostgreSQL脚本.

为Jabberd新建数据库. (PostgreSQL服务器应该已经在运行):

      createdb -U postgres jabberd2

以上命令讲新建一个数据库,你可以在那个数据库运行接哦本来安装Jabberd PostgreSQL数据库.

N 注意: Unicode支持

如果你希望为你的PostgreSQL数据库激活Unicode支持, 把以上命令修改如下:
      createdb -U postgres -E UNICODE jabberd2

P 参数: PostgreSQL用户名和密码

新建你的Jabberd数据库用户, 输入以下命令:
      createuser -P -U postgres jabberd2

这个命令将初始化一个交互用户创建脚本. 当看到提示, 输入将来用于连接到你的PostgreSQL数据库的Jabberd的密码:

      Enter password for user "jabberd2":
      Enter it again:
      Shall the new user be allowed to create databases? (y/n) n
      Shall the new user be allowed to create more new users? (y/n) n
      CREATE USER

CREATE USER 信息表示命令执行成功.

在你的jabberd用户创建之后, 你已经准备好运行PostgreSQL安装脚本了. 这个脚本位于 '\[Jabberd Source Files\]\/tools'. 切换到 tools 目录并以jabberd2用户身份启动PostgreSQL控制台:

      psql -U jabberd2 jabberd2

然后, 从PostgreSQL控制台运行 db-setup.pgsql 脚本:

      jabberd2=>\i db-setup.pgsql

PostgreSQL现在准备好用于Jabberd了.

配置存储使用PostgreSQL(sm.xml)

如果你使用PostgreSQL存储,请完成本节. 大多数使用PostgreSQL存储的安装只需要设置驱动, 用户和密码.

sm.xml 里标为 Storage database configuration 的段落下, 确保 driver 是用 pgsql (PostgreSQL):

      <!-- Storage database configuration -->
        <storage>
          <!-- By default, we use the MySQL driver for all storage -->
          <driver>pgsql</driver>

P 参数: PostgreSQL用户名和密码

sm.xml 里标为 PostgreSQL driver configuration 的段落下, 把 secret 替换成你的PostgreSQL密码. 如果你不使用缺省用户(jabberd2)则还要修改用户名 :
      <!-- PostgreSQL driver configuration -->
      <pgsql>
        <!-- Database server host and port -->
        <host>localhost</host>
        <port>5432</port>
 
        <!-- Database name -->
        <dbname>jabberd2</dbname>
 
        <!-- Database username and password -->
        <user>jabberd2</user>
        <pass>secret</pass>
 
        <!-- Transaction support. If this is commented out, transactions
             will be disabled. This might make database accesses faster,
             but data may be lost if jabberd crashes. -->
        <transactions/>
      </pgsql>

注意只有你的PostgreSQL服务器运行在另一个主机上你才应该修改host设置. 只有你的PostgreSQL服务器运行在一个非标准端口(5432是PostgreSQL安装后的缺省端口)你才应该修改port设置. transaction support 段落则是不言自明的了.

现在Jabberd 2已经配置成使用PostgreSQL来存储了.

如果你希望使用一个不同于PostgreSQL的验证包, 跳到你选择的验证包:

否则, 继续到 4.5.3. 直接往下完成你的Jabberd 2配置.

配置验证使用PostgreSQL(c2s.xml)

如果你使用PostgreSQL来验证,请完成本节. Jabberd 2对于PostgreSQL验证配置的要求同上,除了包含在 c2s.xml 的信息.

c2s.xmlAuthentication/registration database configuration (验证/注册 数据库配置)段落, 确保 driver 使用pgsql (PostgreSQL):

     <!-- Authentication/registration database configuration -->
      <authreg>
        <!-- Backend module to use -->
        <module>pgsql</module>

P 参数: PostgreSQL用户名和密码

c2s.xmlPostgreSQL module configuration 段落, 把 secret 替换成你的PostgreSQL密码. 如果你不使用缺省用户(jabberd2)则还要修改用户名 :
      <!-- PostgreSQL module configuration -->
      <pgsql>
        <!-- Database server host and port -->
        <host>localhost</host>
        <port>5432</port>
 
        <!-- Database name -->
        <dbname>jabberd2</dbname>
 
        <!-- Database username and password -->
        <user>jabberd2</user>
        <pass>secret</pass>
      </pgsql>

注意只有你的PostgreSQL服务器运行在另一个主机上你才应该修改host设置. 只有你的PostgreSQL服务器运行在一个非标准端口(5432是PostgreSQL安装后的缺省端口)你才应该修改port设置.

你的Jabberd 2的存储和验证配置现在完成了. 在转移到其他配置任务(例如 第五章 的配置SSL)之前,跳到 测试服务器 去开始测试你的服务器.

以PDF格式查看

对PAM的规定和配置

对OpenLDAP的规定和配置

测试服务器

个人工具