简单架设Jabber局域网即时通讯服务器

目录

1、什么是jabberserver;

1.1、我们能否自己架设jabberserver;1.2、jabber应用范围;

2、jabberserver的简单架设,安装篇;

2.1、JabberServer测试架设环境和用户认证环境;2.2、JabberServer版本的选择;2.3、为JabberServer添加一个系统用户,用来管理服务器的启动等;2.4、编译安装JabberServer所需要的软件环境;2.5、解压编译安装JabberServer;

3、jabberserver的简单配置;

3.1、创建JabberServer进程存放目录pid及日志存放目录log;3.2、有关Mysql数据库的操作;3.3、JabberServer的配置文件的修改; 3.31、c2s.xml文件3.32、resolver.xml文件3.33、router-users.xml文件3.34、router.xml文件3.35、s2s.xml文件3.36、sm.xml文件

4、JabberServer启动和管理;

5、Jabber客户端的应用;

5.1、Jabber客户端的选择;5.2、客户机的DNS配置;5.3、Jabber客户端之一Gaim的使用;

6、一些疑问;

6.1、jabberd2能否和MSN、YahooMessager、ICQ等用户对聊功能;6.2、jabberd2能否支持客户端传文件功能;6.3、jabberd2能否让支持语音或电话功能;

7、关于本文;8、参考文档;9、相关文档;

1、什么是jabberserver;Jabber是著名的Linux即时通讯服务服务器,它是一个自由开源软件。什么是即时通讯服务器呢?就是类似AIM,ICQ,MSN或YahooMessage类似的服务器;只是Jabber能让我们自己架即时通讯服务器,可以在Internet上应用,也可以在局域网中应用;

Jabber最有优势的就是他的通信协议。他可以和多种即时通讯对接。比如有第三方插件,能让jabber用户和MSN、YahooMessager、ICQ.....对聊;

下面是来自jabber.org官方的原文

Jabberisbestknownas"theLinuxofinstantmessaging"--anopen,secure,ad-freealternativetoconsumerIMserviceslikeAIM,ICQ,MSN,andYahoo(seetheIMquickstart).Underthehood,JabberisasetofstreamingXMLprotocolsandtechnologiesthatenableanytwoentitiesontheInternettoexchangemessages,presence,andotherstructuredinformationinclosetorealtime.Jabbertechnologiesofferseveralkeyadvantages:

1.1、我们能否自己架设jabberserver;我们自己来架Jabberserver是可能的;jabber.org上提供了几乎所有的文档资料、服务器端及客户端;如果您想拥有一个自己的即时消息服务器,那就自己动手吧;jabber能满足您架自己的即时通讯服务器;如果您是高手,说不定也会弄一个类似TT公司呢;

1.2、jabber应用范围;jabberserver能在局域网中应用,当然也一样架一台internet的jabberserver为您自己的用户服务;服务器端支持几乎所有的操作系统,从Linux、MACOS到Unix类的,同样也支持Windows平台;客户端也是一样,无所不包,无所不有......

服务器端:JabberServers

客户端:JabberClients

2、jabberserver的简单架设,安装篇;我是在局域网中架设并测试的,而且功能也极为简单、安全性也没有评测(或者说没有安全性),就是简单的注册和相互通讯(聊天);

2.1、JabberServer测试架设环境和用户认证环境;Slackware10.1,其实在哪个发行版都是一样的,只要按官方文档上面说的做,一般都会成功;好象没有不成功的呢;我用的是mysql认证,也就是说用户注册和认证数据库调用的;当然jabber支持多种认证,比如PostgreSQL、BerkeleyDB......

因为我不懂其它的认证方式,我对Mysql也只是了解一点点;所以我就用了Mysql的方法;

另外如果在局域网中架JabberServer,得有DNS服务器;也就是说局域网中的机器相互能通过hostname来访问;如果您不懂什么是DNS,或者不会DNS的架设。我感觉也没有什么,现在几乎所有的路由器都有这个功能,点几下鼠标就能弄得起来;如果你只一台机器,我看架JabberServer也没有必要了;

所以本文架设JabberServer的前提条件是你懂DNS(至少你有一个路由器,并且能在路由器上指定DNS来解析每台机器的hostname);另外您还要懂一点Mysql服务器的架设和简单的应用;

2.2、JabberServer版本的选择;我用的JabberServer的版本是jabberd-2.0s10.tar.gz;

#download

2.3、为JabberServer添加一个系统用户,用来管理服务器的启动等;一般的说来root超级用户是能对所有服务器程序进行管理的;但这样做有点不安全;所以尽可能的少用root权限来启动一个服务器;

[root@localhost~]#groupaddjabber注:添加jabber用户组;[root@localhost~]#useraddjabber注:添加jabber用户;

至于设置不设置jabber用户的密码,您看着办。如果您当前操作的普通用户,想通过su命令切换到root用户下,然后再通过sujabber,这样就不用密码也行;如果您认为这样切来切换去的有点麻烦,那你就设置一下jabber用户的密码;

[root@localhost~]#passwdjabber注:设置jabber用户的密码;

2.4、编译安装JabberServer所需要的软件环境;在Linux中编译安装JabberServer需要编译工具;比如gcc之类的,如果您没有编译环境,就要找出自己所用发行版的光盘,把这些安装上;

JabberServer依赖openssl,您也得安装上;在您的Linux发版的安装盘中也应该有;JabberServer依赖Mysql,因为我们要用Mysql存储用户资料;这个不可缺少吧;在发行版的光盘也有;libidn这个软件包也在各大发行版中有;自己找找看;也可以自己编译安装;

参考文档:《Jabberd2InstallationandAdministrationGuide》

2.5、解压编译安装JabberServer;[root@localhost~]#tarzxvfjabberd-2.0s10.tar.gz[root@localhost~]#cdjabberd-2.0s10[[email protected]]#./configure--enable-ssl--enable-mysql--enable-idn\--with-extra-include-path=/usr/include/mysql\--with-extra-library-path=/usr/lib/mysql\--prefix=/opt/jabberd2[[email protected]]#make[[email protected]]#makeinstall

注意:在./configure中要指定您的Mysql的include所在的位置,也要指定mysql的lib所在的位置;您应该知道这些东西在哪里;我的mysql的include和lib分别是/usr/include/mysql和/usr/lib/mysql

--prefix用来指定把jabberd安装在哪个位置上。我是安装到了/opt/jabberd2目录中;自己看着办吧。这样指定比较方便。当我们不需要jabberd的时候,就直接删除/opt/jabberd2目录就行了。就是重装也方便;卸载就更方便了;

3、jabberserver的简单配置;3.1、创建JabberServer进程存放目录pid及日志存放目录log[root@localhost~]#mkdir-p/opt/jabberd2/var/jabberd/pid[root@localhost~]#mkdir-p/opt/jabberd2/var/jabberd/log

[root@localhost~]#chown-Rjabber:jabber/opt/jabberd2/var说明:改变/opt/jabberd2/var权限,让用户jabber可以写数据到/opt/jabberd2/var及下级目录;

3.2、有关Mysql数据库的操作;

在我们的解压编译的JabberServer目录中jabberd-2.0s10,有一个目录tools,里面有一个文件db-setup.mysql,就是创建数据库的脚本;

首先我们得启动Mysql服务器;这个过程省略;

然后我们导入db-setup.mysql;[[email protected]]#cdtools[root@localhosttools]#mysql-uroot-p<db-setup.mysqlEnterpassword:在这里输入Mysql数据库的管理密码

经过上一步,我们就导入了一个jabberd2的数据库;下一步我们要进行授权;让jabberd2数据库有一个专门的管理用户;

[root@localhosttools]#mysql-uroot-pEnterpassword:注:在这里输入Mysql数据库的管理密码

然后我们在mysql数据库中运行下面的一条指令;

mysql>GRANTselect,insert,delete,updateONjabberd2.*\tojabberd2beinan@localhostIDENTIFIEDby;注解:其中jabberd2beinan是jabberd2数据库的管理员,这个可以自己定义;定义你自己喜欢的;其中是用户jabberd2beinan用户的密码;

如果没有问题的话,我们从mysql退出后,就要吧用jabberd2beinan用户来连接Mysql服务器了;[root@localhosttools]#mysql-ujabberd2beinan-pEnterpassword:在这里输入jabberd2数据库管理员jabberd2beinan的密码;mysql>showdatabases;注:查看数据库;+----------+|Database|+----------+|jabberd2||test|+----------+2rowsinset(0.00sec)mysql>quit3.3、JabberServer的配置文件的修改;

以我的安装和配置环境为准,我是安装JabberServer在/opt/jabberd2目录中;配置文件在/opt/jabberd2/etc/目录中;我们需要改的文件,有如下几个;

c2s.xmlresolver.xmlrouter-users.xmlrouter.xmls2s.xmlsm.xml

我只是简单的说一下我的配置,不一定对,但能用得起来;

注意:所有192.168.1.4的IP都是我架JabberServer这台机器的IP,您要根据自己的情况来进行改动;

3.31、c2s.xml文件

第77行;localhost改为linuxsir重要:这个是极为重要的,linuxsir是服务器的hostname,并且能被局域网每台机器都能识别的,也就是我们前面所说要自己做DNS,或通过路由器来做解析;一般路由器都有这个功能;这个需要您自己来弄;第81行;0.0.0.0改为192.168.1.4

277和278行,是Mysql服务器认证的;jabberd2secret改为:下面改动是根据您在Mysql数据库jabberd2授权给你所设置的用户名和密码;jabberd2beinan3.32、resolver.xml文件

不做改动,默认就行;

3.33、router-users.xml文件

不做改动;如果您要改动,其它文件也要改。这个文档是简单架设。没有考虑的太多;大多是默认的配置;

我的建议是为了安全,你还是改一下用户和密码;也就是下面的;

jabberdsecret

把上面的改一改,最好改的比较安全一点;下面只是一个简单的例子;

jabberd1234

如果router-users.xml中做了改动其它文件中的如下内容也要改动;

127.0.0.15347jabberdsecret

也就是要改动上面的中的

jabberd1234

3.34、router.xml文件

不做改动,默认就好;

3.35、s2s.xml文件

第77行;0.0.0.0改为192.168.1.43.36、sm.xml文件

第7行;

这是服务器hostname的设置,您所用的hostname要在局域网中被识别;这就涉及到DNS;现在路由器大多都有指定DNS的功能;这个需要您自己来弄;我的这台机器在路由器上做了DNS后,被指定解析为linuxsir;

localhost改为linuxsir

第88、89行;

这两行也是连接Mysql数据库服务器;也要改动;jabberd2secret改为jabberd2beinan4、JabberServer启动和管理;

我们在前面已经添加了jabber这个用户,目的就是为了服务的安全性,让这个用户来添加和启动JabberServer;

当然我们要切换到jabber这个用户,然后让jabber这个用户来启动jabberd服务器;

[root@localhost~]#sujabber[jabber@localhost~]$/opt/jabberd2/bin/jabberd-D

这个Debug模式运行,如果有什么错误,就能显示出来;如果不行,你就按几下回车,看看是不是有错误发生。如果没有,就Ctrl+C结束运行,然后转为后台运行;

[jabber@localhost~]$/opt/jabberd2/bin/jabberd&[jabber@localhost~]$ps-aux|grepjabberdjabber.31.pts/0R05:330:00perl-w-x/opt/jabberd2/bin/jabberdjabber70492.30.pts/0S05:330:00/opt/jabberd2/bin/router-c/opt/jabberd2/etc/jabberd/router.xmljabber70500.60.pts/0S05:330:00/opt/jabberd2/bin/resolver-c/opt/jabberd2/etc/jabberd/resolver.xmljabber70512.00.pts/0S05:330:00/opt/jabberd2/bin/sm-c/opt/jabberd2/etc/jabberd/sm.xmljabber70520.60.pts/0S05:330:00/opt/jabberd2/bin/s2s-c/opt/jabberd2/etc/jabberd/s2s.xmljabber70531.60.pts/0S05:330:00/opt/jabberd2/bin/c2s-c/opt/jabberd2/etc/jabberd/c2s.xmljabber70550.00.pts/0R+05:330:00grepjabberd

说明:第一行是后台运行;第二行是查看是否jabberd已经启动起来了;如果出现类似上面的提示,这表示jabberd已经运行;

5、Jabber客户端的应用;

5.1、Jabber客户端的选择;

对于客户端的选择,您可以用gaim;也可能用其它的,我用的是gaim;请到Jabber客户端:JabberClients去找适合自己;

如果您想用gaim,可以到上去下载;Windows版本和Linux版本都有;如果您用的是Linux,各大发行版都有这个软件包;安装上就行了;

5.2、客户机的DNS配置;

如果您是Linux,就得让/etc/resolv.conf有DNS主机的设置;比如我的设置是

nameserver192.168.1.1

192.168.1.1这行就是DNS服务器的,我用的是路由器,路由器我配置DNS的时候,用的就是这个地址;

如果您是用Windows,也得在网卡设置IP那个界面上,写上这个吧;自己看着办吧;

5.3、Jabber客户端之一Gaim的使用;

Gaim使用就简单了,我们可以通过Gaim来向局域网JabberServer申请ID;

第一步:添加帐号;

点击[帐号]=>添加=》

协议:选择Jabber用户名:先随便写一个您喜欢的,比如我写是的beinan服务器:也就是我们前面设置的JabberServer那台机器的hostname;我的机器是linuxsir;资源:不用管他;密码:自己写一个吧;因为没有注册呢;这个不是重要的;别名:就是昵称,比如大灰狼之类;

点击[显示主要选项]

Jabber选项

可用则使用TLS这个要选中,其它两个是[强制旧SSL]和[允许不加密流上的纯文本验证],这两个就不要选中了;l

端口:5222

连接服务器:就是JabberServer所在机器的IP地址,我这台机器是192.168.1.4

代理类型:不用改变,保持原来的状态就行;[使用全局代理设置]

第二步注册帐号;

这些都添写好了,再点击[注册];

然后写上用户名和密码;他会提示注册成功;

第三步修改帐户

我们还得从头再来,点击[帐户],然后选中您刚才注册的成功的那个帐户;点击修改;就按前面所说的来修改;只是在[显示主要选项]中的连接服务器改一改就行了。因为这个是空的;要改为你自己服务器的IP地址就行了;我的服务器是192.168.1.4。我就改成了192.168.1.4;

至于Windows用户的Gaim的使用同理;

6、一些疑问;

6.1、jabberd2能否和MSN、YahooMessager、ICQ等用户对聊功能;

能的;但要安装一些插件;在我看来这些插件有点难度。因为我测试过一些插件;但不能解决一些依赖关系;等解决了依赖关系,却不能应用;错误是的。

6.2、jabberd2能否支持客户端传文件功能;

如果是默认安装是不支持的,这也需要第三方插件;目前有三种方法吧;在jabber的主页上说,如果想要实现相互传文件功能,与客户端有关;我测试了好多种,但还是不行。psi据说是能行,我测试后也不行;可能依靠客户端传文件还是有点难度。或许不久就以解决?

如果通过服务器端解决呢?也是有可能的,有两种方法;proxy65和定义apachedav模块的办法;apachedav模块据说比较简单。但我没有试过。据有关洋人说,不太安全;proxy65的方法也有难度,他依赖太多的东西,比如python、zope、twist、pyopenssl......多多;虽然也能解决依赖关系,但proxy65还是一样运行不起来;

大家还是自己测试吧;写这些东西只不是想让新手走太多的路;

6.3、jabberd2能否让支持语音或电话功能;

可能有这个成功案例,我没有仔细看;但通过jabberd2文档,我没有看到,或许有第三方插件能解决;或许有点难度;

7、关于本文

本文是最简单的Jabber即时通讯服务器的架设;没有太多的功能,当然安全机制也没有考虑;高水平的文档并不是我能写的出来的,当然我也在努力写一写高水平的文档,到现在还没有这个能力,所以只能期待高手出现,或者期待自己某一天成为高手;

本文面向初学者;

(举报)