开源企业内部IM系统搭建
2010-01-28 16:52:29 阿炯

作为公司的一分子, 您可能忧心忡忡于通过 MSN, QQ 流入的各种名目繁多的病毒, 木马, 例如熊猫烧香, 以及通过 MSN 传播的导致公司网络瘫痪的蠕虫病毒. 换句话说, 我们需要企业内部协作平台, 来保证信息安全和减少依赖外网办公所带来的高风险. 例如: 地震了, 外网断了, 同事们再也不能通过MSN/QQ交流了. 自然, QQ/MSN 有它的用途, 但是主要用途就是和私人的朋友交流, 很多同事也不希望有关自己隐私的QQ/MSN被公司知道. 在这种种的需求之下, 搭建企业内部 collaboration platform 很有必要性. 本文就介绍如何通过整合几种基于 Java 的开源软件来搭建企业内部协作平台, 包括知识库, 内部 IM 和能够方便的交流的在线 Web IM.

首先就是文档库和知识库, 这个基本上通过安装 Wiki, 例如 JSPWiki, 通过它, 同事们可以方便的共同的编辑同一个需求页面, 设计文档, 也可以将已经写好的文档上传, 加上简短的说明, 这些说明都可以通过全文索引被搜索到. JSPWiki 的中文版本搭建可以阅读这里: Tomcat 下最简单的不改源码让 JSPWiki 支持中文文件/附件的方法.

其次就是企业内部的 IM, 有人推荐 Tencent RTX, 但是请看:
第一: 其服务端是搭建于 Windows 的 Server, 而我希望在类 Linux 平台使用它;
第二: 商业软件, 需要掏钱;
第三: 客户端和 QQ 一样, 有诸多安全隐患, 而且还可以直接连接 QQ 好友, 不利于彻底封杀 QQ;
第四: 传输协议是不公开的, 如果我想日后升级到其它厂商的服务器, 很明显这是痴人说梦. 在此我的目光集中到了 Jabber 协议的服务器上, 而且重点考察基于 Java 构建的. 最后, 我看到了 Jive Software 的开源版本的服务器和客户端(Jabber 协议的), WildFire 和 Spark, 他们的网站是 http://www.igniterealtime.org/. 从他们的首页可以看到他们的下一个版本即将推出语音聊天/会议支持. 然后我还找到了 JWChat, 它可以解决我们的 Web IM 问题. 虽然眼前来讲 Spark 和 JWChat 都没有中文版本的界面, 但是可以看到他们已经留下了资源文件, 等着汉化. 如果真的要使用, 这些都不是大问题, 汉化很容易解决.

这套系统很好用, 历史也很悠久了, 服务器有管理界面, 支持文件传送, 离线消息, 屏幕截图, 联系人查找, 个性头像, 用户自己注册, 改密码, 创建聊天室(ChatRoom)等等. 而且按照他们网站的许可协议是可以商用的. 也有 Windows, Linux, Mac 的版本, 基于 Java 构建.
Spark 这个客户端的安装很简单, 下载相应版本的(如果不熟悉 Java, 直接下载带 JRE 的即可), 一路 next 下去, 就 OK了. 然后启动它. 注意下面的 IP 是我们部署在局域网的 WildFire Jabber 服务器的地址.

注册:
在登录界面点击"Account"按钮进行注册.

服务器端叫 WildFire, 管理界面是基于 Web 的, 有简体中文的语言界面支持.  它的安装也很简单, 下载完全版本, 一路 next 下去, 需要注意的是: 启动后必须先设置一下方可开始使用. 点击WildFire 主窗口的 Launch Admin 按钮, 然后进入管理控制台, 语言选择 Simplified Chinese (zh_CN), 不要忘了给 admin 设置一个密码, 数据库选择默认的 HSQL Database Engine 1.8.0, 这样就完工了. 服务器的功能非常的强大, 包括禁止注册, 管理用户等等.

客户端下载:
http://www.igniterealtime.org/downloads/index.jsp#spark

服务器端下载:
http://www.igniterealtime.org/downloads/index.jsp#wildfire

最后我们可以在刚才的 JSPWiki 服务器上搭建一个 Web 版本的 Jabber 客户端, 支持 IE 和 Firefox 浏览器, 这样如果有人不方便通过客户端来交流的话, 也没有问题, 只不过一些功能, 例如文件传输, 就不可用了. JWChat 下载 war 版本, 然后重命名为 chat.war, 放到 Tomcat 的应用目录下, 然后修改配置文件 config.js 即可工作, 只要修改下面几行即可:

var SITENAME = "192.168.83.107";// 把这个改成 Jabber 服务器的地址
var DEFAULTCONFERENCEROOM = "talks";// 默认的聊天室名字
var DEFAULTCONFERENCESERVER = "conference.192.168.83.107";// 默认的聊天室服务器地址

然后键入 http://localhost:8080/chat, 即可开始聊天了!
最后, 在 JSPWiki 的左菜单(Edit.jsp?page=LeftMenu)上加入这个连接, 例如: http://jabber.mybiz.com:8080/chat/ , 然后同事们就可以边修改文档边在线进行交流了.

准备好了嘛? 立即 Kill QQ MSN , 从此让同事们的沟通更安全, 更便捷.

开源IM
http://www.jabber.org/
http://www.igniterealtime.org

常用开源Jabber(XMPP) IM服务器介绍

1. Openfire (Wildfire) 3.x
授权: GPL or 商用
操作系统平台:所有(使用Java开发)
XMPP Jabber 协议实现情况:98%
hto 评价:
安装和使用非常简单,安装后进入Web界面进行2~3分钟的配置所有的东西都设好了。使用Java语言开发,在目前Java开发人员到处普及的情况下进行维护和扩展的成本非常低。在我的测试中加上 Connection Manager 的情况下单台服务器可支持 30 万并发用户。缺点是目前还不支持cluster。如果企业内部部署IM使用 Wildfire + Spark 是最佳的组合。

2. ejabberd
授权: GPL
操作系统平台:Linux, Windows, MacOS X 等
XMPP Jabber 协议实现情况:91%
hto 评价:
Ejabberd目前是可扩展性最好的一种Jabber/XMPP服务器,支持分布多个服务器,并且具有容错处理,单台服务器失效不影响整个cluster运作。
顾虑就是它采用一种大家都没听过的语言Erlang开发,笔者认为是目前最有前途的聊天服务器了,它的很多特性相信是大多数都需要的。

3. Jabberd 2.x
授权: GPL
操作系统平台:主要是 Linux, (Windows 也支持,但不知道性能怎样)
XMPP Jabber 协议实现情况:76%
hto 评价:
自从jabber.org改用ejabberd之后,Jabberd一直都在走下坡路。扩展性比不上ejabberd, 易用性比不上 Wildfire,唯一的优势是使用C开发,如果你坚持要用C开发,那么还是选择jabberd吧。不这它的设置及配置都太难了。

4. Jabberd 1.x
授权: GPL
操作系统平台:主要是 Linux, (Windows 也支持,但不知道性能怎样)
XMPP Jabber 协议实现情况:45%
hto 评价:
在几年前 jabberd 就是 Jabber 的代名词,至今很多 Jabber 文档仍然介绍的是 Jabber 1.4,
在我以前写的《Jabber 服务器占有率比较》中仍然排名第一。但是它很多新的规范都不支持,相信大部分用户都将转向新的服务器。

5. 后起之秀 DJabberd
授权: open source
操作系统平台:主要是 Linux, (Perl写的,其他平台应该也支持)
XMPP Jabber 协议实现情况:N/A
hto 评价:
djabberd 使用 epoll 技术,理论上单台服务器可以支持更多用户。Djabberd目前主要应用在LiveJournal上,大部分XMPP协议都支持,稳定性也不用置疑。但是因为推出时间尚短,很多细节功能可能需要时间慢慢完善。

该文章最后由 阿炯 于 2012-05-04 12:30:53 更新,目前是第 2 版。