Ejabberd2:安装和操作指南
本文的英文原文来自 http://www.process-one.net/en/ejabberd/guide_en
ejabberd 2.1.3 安装和管理指南
目录 |
绪论
ejabberd是一个用Erlang/OTP语言写的自由和开源的即时消息服务器.
ejabberd是跨平台,分布式, 容错, 并基于开放标准的实时通讯系统.
ejabberd的设计坚若磐石,是一个功能服丰富的XMPP服务器.
ejabberd同时适合小规模布署和超大规模布署, 无论它们是否需要可伸缩性.
关键功能
ejabberd是:
- 跨平台的: ejabberd可以运行在Microsoft Windows和Unix派生系统,例如Linux, FreeBSD和NetBSD.
- 分布式的: 你可以在一个集群的机器上运行ejabberd,并且所有的机器都服务于同一个或一些Jabbe域. 当你需要更大容量的时候,你可以简单地增加一个廉价节点到你的集群里. 因此, 你不需要买一个昂贵的高端机器来支持上万个并发用户.
- 容错: 你可以布署一个ejabberd集群,这样一个正常运行的服务的所有必需信息将被复制到所有节点. 这意味着如果其中一个节点崩溃了, 其他节点将无中断的继续运行. 另外, 也可以‘不停机’增加或更换节点.
- 易于管理: ejabberd建立于开源的Erlang. 所以你不需要安装外部服数据库, 外部web服务器, 除此以外因为每个东西都已经包含在里面, 并且处于开箱可用状态. 其他管理上的好处包括:
- 详尽的文档.
- 便捷的安装程序,包括在Linux, Mac OS X, 以及Windows系统下.
- Web管理.
- 共享名册组.
- 命令行管理工具.
- 可外部集成的验证机制.
- 发送匿名消息的能力.
- 国际化: ejabberd领导国际化. 非常适合全球化. 相关功能包括:
- 翻译成25种语言.
- 支持IDNA.
- 开放标准: ejabberd是的一个完全支持XMPP标准的开源Jabber服务器.
- 完全兼容XMPP.
- 基于XML的协议.
- 支持的协议很多.
额外功能
而且, ejabberd广泛支持的其他先进特性:
- 模块化
- 只装在你想要的模块.
- 在你自己的自定义模块扩展ejabberd.
- 安全性
- 支持c2s和s2s连接的SASL和STARTTLS.
- 支持s2s连接的STARTTLS和Dialback.
- 可通过HTTPS安全访问的Web管理.
- 数据库
- 快速布署的内部数据库(Mnesia).
- 原生的MySQL支持.
- 原生的PostgreSQL支持.
- 支持ODBC数据存储.
- 支持Microsoft SQL Server.
- 验证
- 内部验证.
- PAM, LDAP 和 ODBC.
- 外部验证脚本.
- 其他
- 支持虚拟主机.
- XML流压缩 (XEP-0138).
- 统计 (XEP-0039).
- 支持IPv6的c2s和s2s连接.
- 支持集群和HTML日志的多用户聊天模块.
- 基于用户vCards的用户目录.
- 支持基于PubSub的个人事件的发行-订阅组件.
- 支持web客户端: HTTP轮询和HTTP绑定(BOSH)服务.
- IRC网关.
- 组件支持: 安装特定网关之后和外部网络的接口,如 AIM, ICQ 和 MSN.
安装Installing ejabberd
用ejabberd二进制安装包安装
最简单的安装ejabberd即时消息服务器的方法可能是使用ProcessOne发布的二进制安装包. 已发布的ejabberd版本的二进制安装包在 ProcessOne ejabberd 下载页可以找到: http://www.process-one.net/en/ejabberd/downloads
安装包将布署和配置一个完整的不需要任何依赖的ejabberd服务器.
在 *nix 系统里, 记住启动之前把二进制安装包文件的属性设置成可执行的. 例如:
chmod +x ejabberd-2.0.0_1-linux-x86-installer.bin ./ejabberd-2.0.0_1-linux-x86-installer.bin
ejabberd可以任何时候手工启动, 或在系统启动时由操作系统自动启动.
要手动启动和停止, 可使用安装包建立的桌面快捷方式. 如果机器没有图形系统, 使用在ejabberd安装目录下的 ’bin’ 目录脚本 ’start’ 和 ’stop’.
Windows安装包把ejabberd安装成了系统服务, 同时有一个快捷方式可以启动一个调试控制台给有经验的管理员使用. 如果你想ejabberd在开机时自动启动, 进入Windows服务设置界面并把ejabberd设置成自动启动. 注意Windows服务还是一个开发中的特性, 例如它不能读取ejabberdctl.cfg文件.
在一个 *nix 系统, 如果你想ejabberd在开机时启动成为一个服务, 从 ’bin’目录拷贝 ejabberd.init 到类似 /etc/init.d/ejabberd (取决于你的操作系统的把本). 新建一个系统用户 ejabberd; 它将用于启动该服务的脚本. 然后你可以以root身份调用 /etc/inid.d/ejabberd 来启动服务.
如果ejabberd不能在Windows里正确地启动, 尝试用启动菜单或桌面的快捷方式启动它. 如果window显式错误14001, 解决方案是安装: "Microsoft Visual C++ 2005 SP1 Redistributable Package". 你可以从 http://www.microsoft.com/ 下载它. 然后卸载并再次安装ejabberd.
如果ejabberd不能正确启动并且生成一个崩溃的dump, 表示有严重问题. 在Windows下你可以尝试使用 bin/live.bat 脚本启动ejabberd, 或在其它操作系统执行命令 bin/ejabberdctl live . 用这个办法你可以看到Erlang提供的错误消息并且辨别出确切的问题.
ejabberdctl管理脚本位于 bin 目录. 关于ejabberdctl和用于微调Erlang运行时系统的可配置选项,详见 4.1 章.
用操作系统特定的包安装ejabberd
一些操作系统提供了特定的适应系统体系结构和库的ejabberd包. 它经常也会检查依赖的包并执行基本的配置任务,类似新建初始管理帐号. 例如Debian和Gentoo. 更多信息请查找你的操作系统提供的资源.
那些包经常新建一个脚本,类似 /etc/init.d/ejabberd,在开机时启动和停止 ejabberd 服务.
用CEAN安装ejabberd
CEAN (Comprehensive Erlang Archive Network) 是一个存放了很多Erlang程序二进制包的仓库,包括了ejabberd和它所有的依赖包. 这些二进制包可用于多种不同的系统结构, 所以对于二进制安装包和操作系统的ejabberd包来说,这是一个备选.
根据你如何处理你的CEAN安装而定,你需要新建自己的 ejabberd 启动脚本. 缺省的ejabberdctl脚本位于 ejabberd 的 priv 目录并且用作一个示例.
从源码安装ejabberd
发布ejabberd稳定版的规范方式是源码包. 从源码编译ejabberd在 *nix 系统是非常容易的, 只要你的系统拥有所有的依赖包.
需求
为了在一个‘类Unix’ 操作系统编译ejabberd, 你需要:
- GNU Make
- GCC
- Libexpat 1.95 或更高版本
- Erlang/OTP R10B-9 或更高版本. 推荐的版本是 R12B-5. 对 R13 的支持是实验性质的.
- OpenSSL 0.9.6 或更高版本, 用于 STARTTLS, SASL 和 SSL 加密. 可选的, 高度推荐.
- Zlib 1.2.3 或更高版本, 用于支持流压缩 (XEP-0138). 可选的.
- Erlang mysql library. 可选的. 用于支持 MySQL 验证或存储. 见 3.2.1 节.
- Erlang pgsql library. 可选的. 用于支持 PostgreSQL 验证或存储. 见 3.2.3 节.
- PAM library. 可选的. 用于F 可插拔的验证模块 (PAM). 见 3.1.4 节.
- GNU Iconv 1.8 或更高版本, 用于 IRC 网关 (mod_irc). 可选的. 在系统里不需要 GNU Libc. 见 3.3.8 节.
- ImageMagick’s 转换程序. 可选的. 用于 CAPTCHA 挑战. 见 3.1.8 节.
- exmpp 0.9.2 或更高版本. 可选的. 用于以 XEP-0227 XML文件格式导入/导出用户数据.
下载源码
ejabberd的发布版本在 ProcessOne ejabberd 下载页: http://www.process-one.net/en/ejabberd/downloads
另外, 最新的开发源码可使用命令行从 Git 仓库获得:
git clone git://git.process-one.net/ejabberd/mainline.git ejabberd cd ejabberd git checkout -b 2.1.x origin/2.1.x
编译
编译ejabberd可执行以下命令:
./configure make
编译配置脚本允许很多选项. 要获得所有选项列表执行以下命令:
./configure --help
一些你可能有兴趣修改的选项如下:
--prefix=/
指定运行make install命令时文件将要拷贝的路径.
--enable-user[=USER]
允许普通系统用户执行ejabberdctl脚本 (参见 4.1 节), 读取配置, 读写 spool 目录, 读写 log 目录. 这个帐号的用户和组必须在运行make install之前就存在于机器上. 这个帐号不需要一个暴露的 HOME 目录, 因为缺省将使用 /var/lib/ejabberd/ .
--enable-pam
允许PAM验证方法 (参见 3.1.4 节).
--enable-odbc or --enable-mssql
如果你想使用外部数据库则需要这个选项. 详见 3.2 节.
--enable-full-xml
允许使用基于XML的优化. 例如它将使用 CDATA 来逃逸 XMPP 流中的字符串. 只有你确定你的XMPP客户端有一个全兼容的XML分析器才使用这个选项.
--disable-transient-supervisors
对临时进程禁止使用Erlang/OTP监督.
安装
安装ejabberd到目标目录, 执行以下命令:
make install
注意安装ejabberd的时候你可能需要系统管理员的权限.
缺省的新建文件和目录如下:
/etc/ejabberd/ 配置文件目录: ejabberd.cfg ejabberd配置文件 ejabberdctl.cfg 管理脚本配置文件 inetrc 网络DNS配置文件
/lib/ejabberd/ ebin/ Erlang二进制文件(*.beam) include/ Erlang头文件(*.hrl) priv/ 运行时需要的其他文件 bin/ 可执行程序 lib/ 二进制系统文件(*.so) msgs/ 翻译文件(*.msgs)
/sbin/ejabberdctl 管理脚本(见 4.1 节)
/share/doc/ejabberd/ ejabberd文档
/var/lib/ejabberd/ Spool目录: .erlang.cookie Erlang cookie文件(见 5.3 节) acl.DCD, ... Mnesia数据库spool文件(*.DCD, *.DCL, *.DAT)
/var/log/ejabberd/ 日志目录(见 7.1 节): ejabberd.log ejabberd服务日志 erlang.log Erlang/OTP系统日志