分类: 架构设计与优化
2013-05-22 14:05:36
原文地址:Ejabberd源码解析前奏--安装 作者:scq2099yt
一、二进制安装
最简单的安装方式是使用ProcessOne发布的Ejabberd二进制安装包来安装,安装包在下载。
安装包将部署和配置一个完整的不需要任何依赖的Ejabberd服务器。
1、解压
下载安装包后,解压安装包步骤比较纠结,采用Windows解压,用Linux比较蛋疼,具体步骤如下:
(1)在Windows下用WinRAR解压安装包ejabberd-2.1.11-linux-x86_64-installer.run.gz到当前目录;
(2)在当前目录下会看到文件ejabberd-2.1.11-linux-x86_64-installer.run,修改该文件后缀为.tar即ejabberd-2.1.11-linux-x86_64-installer.tar;
(3)用WinRAR解压文件ejabberd-2.1.11-linux-x86_64-installer.tar到当前目录下,此时会看到ejabberd-2.1.11-linux-x64-installer.bin;
(4)将ejabberd-2.1.11-linux-x64-installer.bin文件上传到Linux即可。
2、安装
上传完后就可以在Linux上安装了,安装步骤如下:
...
中间的省略号是一堆协议之类的,上面的步骤主要包括改变文件可执行权限、执行文件开始安装、选择安装路径、服务器域名、管理员及密码、是否集群等。集群后文书会详解。
3、启动
按照上面步骤把Ejabberd安装到/home/scq/ejabberd-2.1.11下了,如下可以启动Ejabberd:
如下可以停止Ejabberd:
Ejabberd可以在任何时候手动启动或在系统启动时由系统自动启动。
要手动启动和停止,可以如上面所示执行Ejabberd安装目录下的bin目录下的脚本start和stop即可。
在类Unix系统中,如果想让Ejabberd开机时自动启动,需要执行如下步骤:
(1)将Ejabberd安装目录下的bin目录下的ejabberd.init拷贝到类似/etc/init.d/ejabberd(具体取决于操作系统版本);
(2)新建一个系统用户ejabberd,该用户将于启动该服务脚本;
(3)以root身份调用/etc/init.d/ejabberd来启动服务。
需要注意的是:如果Ejabberd不能正确启动并且生成dump,则表示有严重问题,执行命令bin/ejabberdctl live可以看到Erlang提供的错误消息并且找到问题所在。
ejabberdctl管理脚本位于bin目录,关于ejabberdctl和用于微调Erlang运行时系统的可配置选项,后文书有详细解说。
二、源码安装
发布Ejabberd稳定版的规范方式是源码包,从源码编译Ejabberd在类Unix系统是非常容易的,只要你的系统拥有所有的依赖包。
1、要求
为了在一个类Unix操作系统编译Ejabberd, 你需要:
(1)GNU Make
(2)GCC
(3)Libexpat 1.95 或更高版本
(4)Erlang/OTP R10B-9 或更高版本,推荐的版本是R12B-5,对R13的支持是实验性质的。
(5)OpenSSL 0.9.6 或更高版本,用于STARTTLS、SASL和SSL加密,可选的,高度推荐。
(6)Zlib 1.2.3 或更高版本,用于支持流压缩 (),可选的。
(7)Erlang mysql library,可选的,用于支持 MySQL验证或存储。
(8)Erlang pgsql library.,可选的,用于支持 PostgreSQL验证或存储。
(9)PAM library,可选的,用于F可插拔的验证模块 (PAM)。
(10)GNU Iconv 1.8 或更高版本,用于 IRC 网关 (mod_irc),可选的, 在系统里不需要GNU Libc。
(11)ImageMagick’s 转换程序,可选的,用于CAPTCHA。
(12)exmpp 0.9.2 或更高版本,可选的,用于以 XML文件格式导入/导出用户数据。
2、下载
Ejabberd的发布版本在ProcessOne ejabberd,下载页面在。
另外,最新的开发源码可以用使用命令行从git仓库获取:
#git clone git://git.process-one.net/ejabberd/mainline.git ejabberd
#cd ejabberd
#git checkout -b 2.1.x origin/2.1.x
3、编译
编译Ejabberd可执行如下命令:
#./configure
#make
编译配置脚本允许很多选项,要获得所有选项列表执行如下命令:
#./configure --help
一些你可能感兴趣修改的选项如下:
--prefix=/
指定运行make install命令时文件将要拷贝的路径。
--enable-user[=USER]
允许普通系统用户执行ejabberdctl脚本,读取配置,读写spool目录,读写log目录。这个帐号的用户和组必须在运行make install之前就存在于机器上,这个帐号不需要一个暴露的HOME目录, 因为缺省将使用/var/lib/ejabberd/。
--enable-pam
允许PAM验证方法。
--enable-odbc or --enable-mssql
如果你想使用外部数据库则需要这个选项。
--enable-full-xml
允许使用基于XML的优化,例如:它将使用CDATA来逃逸XMPP流中的字符串,只有你确定你的XMPP客户端有一个全兼容的XML分析器才使用这个选项。
--disable-transient-supervisors
对临时进程禁止使用Erlang/OTP监督。
4、安装
安装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
管理脚本
---------------------------------------
/share/doc/ejabberd/
ejabberd文档
---------------------------------------
/var/lib/ejabberd/
Spool目录:
.erlang.cookie
Erlang cookie文件
acl.DCD, ...
Mnesia数据库spool文件(*.DCD, *.DCL, *.DAT)
---------------------------------------
/var/log/ejabberd/
日志目录:
ejabberd.log
ejabberd服务日志
erlang.log
Erlang/OTP系统日志
5、启动
你可以使用ejabberdctl命令行管理脚本来启动和停止Ejabberd,如果你提供了配置选项--enable-user=USER,你可以以那个系统帐号或root的身份执行ejabberdctl,具体如下:
#ejabberdctl start
#ejabberdctl status
The node ejabberd@localhost is started with status: started
ejabberd is running in that node
#ejabberdctl stop
Ejabberd可以在任何时候手动启动或在系统启动时由系统自动启动。
要手动启动和停止,可以如上面所示执行Ejabberd安装目录下的bin目录下的脚本start和stop即可。
在类Unix系统中,如果想让Ejabberd开机时自动启动,需要执行如下步骤:
(1)将Ejabberd安装目录下的bin目录下的ejabberd.init拷贝到类似/etc/init.d/ejabberd(具体取决于操作系统版本);
(2)新建一个系统用户ejabberd,该用户将于启动该服务脚本;
(3)以root身份调用/etc/init.d/ejabberd来启动服务。
需要注意的是:如果Ejabberd不能正确启动并且生成dump,则表示有严重问题,执行命令bin/ejabberdctl live可以看到Erlang提供的错误消息并且找到问题所在。
ejabberdctl管理脚本位于bin目录,关于ejabberdctl和用于微调Erlang运行时系统的可配置选项,后文书有详细解说。
三、其它方式安装
1、用操作系统特定的包安装
一些操作系统提供了特定的适应系统体系结构和库的Ejabberd包。它经常也会检查依赖的包并执行基本的配置任务,类似新建初始管理帐号,例如Debian和Gentoo。更多信息请查找你的操作系统提供的资源。那些包经常新建一个脚本,类似/etc/init.d/ejabberd,在开机时启动和停止ejabberd服务。
2、用CEAN安装
CEAN(Comprehensive Erlang Archive Network)是一个存放了很多Erlang程序二进制包的仓库,包括了ejabberd和它所有的依赖包。这些二进制包可用于多种不同的系统结构,所以对于二进制安装包和操作系统的ejabberd包来说,这是一个备选,根据你如何处理你的CEAN安装而定,你需要新建自己的ejabberd启动脚本,缺省的ejabberdctl脚本位于ejabberd的priv目录并且用作一个示例。
四、新建XMPP管理账号
你需要一个XMPP帐号并赋予它管理权限来进行ejabberd Web管理:
1、在你的ejabberd服务器上注册一个XMPP帐号, 例如admin1@example.org,有两个办法来注册一个XMPP帐号,具体如下:
(1)使用ejabberdctl
#ejabberdctl register admin1 example.org FgT5bk3
(2)使用一个XMPP客户端进行带内注册
2、编辑ejabberd配置文件来给你创建的XMPP帐号赋予管理权限,具体如下:
{acl, admins, {user, "admin1", "example.org"}}.
{access, configure, [{allow, admins}]}.
你可以赋予管理权限给多个XMPP帐号, 也可以赋予权限给其它XMPP服务器。
3、重启ejabberd以装载新配置。
4、用浏览器打开Web管理界面(),确保键入了完整的JID作为用户名(在这个例子里是: admin1@example.org)你需要加一个后缀的原因是因为ejabberd支持虚拟主机。
五、升级Ejabberd
要升级一个Ejabberd到一个新版本, 简单地卸载这个旧版本, 然后安装新版本就可以了。当然, 重要的是配置文件和Mnesia数据库spool目录不能删除。
Ejabberd启动时,会在需要的时候自动更新Mnesia数据表定义。如果使用一个外部数据库来存储一些模块, 那么检查新的Ejabberd版本的发布备注(release notes),以确定是否需要更新那些表。
附注:更多详细的信息也可以参看,还有。