Ejabberd服务聊天环境搭建

作者:陆金龙    发表时间:2017-10-05 19:36   


1 XMPP服务器选型

Jabberd 2.x 使用C语言实现,但是,存在着数据库事务的滥用、内存泄露、不一致的非阻塞设计等问题,最重要的是该server已经很长时间没有人维护;因此,chesspark在使用jabberd 2.x三年后,转用ejabberd。无独有偶,Jabber.org也在2010年淘汰Jabberd, 转为使用ejabberd.

Openfire以及Tigase都是基于JAVA的解决方案。但是极光推送团队认为,Openfire单机并发很有限,集群方案不成熟,代码古老而缺乏及时更新,因此不适合应用在生产环境中。

因此,极光团队在初期使用Tigase解决方案。但是在使用中发现,Tigase其集群方案实现复杂,单节点容量有限,后期转为自己开发server.

从编程语言角度看,主流的XMPP Server主要是JAVA和Erlang。JAVA语言的优势是类库完备,容易招人。Erlang的优势是hot code swap, live console, 高并发。

ejabberd与Openfire/Tigase比较而言,最大的优势是相对优雅的集群方案以及更高的并发性能。在没有语言偏向性的情况下,一般在开发初期都会选用ejabberd, 如WhatsApp, Facebook Chat, 米聊。

从各种XMPP Server支持的特性看,ejabberd是对XMPP协议支持最好、实现最为全面的server.

从开源协议看,Tigase采用AGPL开源协议,因此只要有代码修改,就必须对代码进行开源。Openfire采用Apache开源协议,修改代码后可以闭源。ejabberd采用GPL v2开源协议,如果只在服务端提供服务,而不进行代码二次分发,修改代码以后也可以「闭源」

综合以上各因素,Chat Service采用ejabberd作为初期的XMPP Server.

2 服务器环境安装

2.1 Erlang安装

下载地址:http://www.erlang.org/downloads,下载很慢,可以使用迅雷客户端下载,快很多。

直接安装即可。安装后的路径设置,把bin (如 C:\Program Files\erlang19\bin)添加到系统变量的Path后。

otp_win64_18.0和rabbitmq-server-3.5.4

2.2 Ejabberd服务安装

下载安装包:ejabberd(https://www.process-one.net/en/ejabberd/downloads)

以管理员身份安装(否则后续没有权限执行脚本),填写服务器域名为本机,管理员账号admin及密码admin,下一步直到完成。

  

 非管理员身份安装会出现异常:执行脚本比较耗时,一直卡住,然后报错。

 

Error running Post Install Script.The installation may not have completed correctly

异常情况1:erlsrv: A service with the name ejabberd already exists.

如果有服务ejabberd 存在 先卸载掉,使用命令 sc delete ejabberd01d33ac8933fab90 (ejabberd01d33ac8933fab90 是服务名,从服务属性查看)。

异常情况2:@ejabberd_listener:socket_error:580 Failed to open socket:{5222,ejabberd_c2s,[inet,{ip,{0,0,0,0}}]}:  Reason: permission denied

cmd 使用netstat -nao 发现5222端口的进程为3260 是tomcat占用了先禁用掉。

异常情况3:C:\Program Files\ejabberd-17.09\bin\postinstall.cmd拒绝访问。

权限不够,尝试使用管理员身份重新安装Ejabberd。

2.3 启动ejabberd

启动失败。

以管理员身份启动C:\Program Files\ejabberd-17.09\bin\start.cmd,成功。

2.4 登录后台

登录不成功问题

安装时不使用admin ,改为kinglong kinglong 登录后台OK。

3 创建用户使用

3.1登录后台管理页

现在我们的服务器只有一个管理员账号,我们需要增加几个用户,也方便后面测试。

输入http://localhost:5280/admin/ ,使用安装时填写的账号密码登录,进入ejabberd的后台管理页面:

3.2 选择虚拟主机

点击虚拟主机,进入到虚拟主机管理界面。

3.3 管理用户

选择“用户”菜单进入到用户管理界面,可以看到“添加用户”按钮。

点击“添加用户”按钮,添加user1@kinglong和user2@kinglong两个用户:

 

3.4 用新增的用户登录客户端

用pandion和spark客户端测试,使用新增的用户登录本地的xmpp服务器是可用的。