SuperTaoer::Thanksgiving

你走了,因为你心中有爱;我留在这里,因为我心中仍然有恨。海阔天空,有缘再见。

八月 8, 2005

实现jabber服务器

类归于: 程序 技术 — SuperTaoer @ 10:01 上午

首先先写出几个相关的网址
jabber.org
jabber.org
jabber.org-服务端
jabber.org-客户端

jabberstudio.org
jabberstudio.org
jabberstudio.org-服务端
jabberstudio.org-客户端
jabberstudio.org-文档

我选择了使用jabberd 2.x服务端,因为他是GPL的,可以运行在不同的系统,
在jabber.org中对GPL服务器端Feature Score这项数值最高的是Jive Messenger
但是Jive让我想到它可能是java的,对服务器需要消耗的资源可能大些,所以就
选择了jabberd 2.x,每个人可以根据自己不同的需要来选择哦 :)

注:以下的操作均使用root身份进行

先来热身一下,也就是做安装jabberd服务端前的准备活动 :)
1.创建 Jabber用户和用户组

  1. groupadd jabber #增加jabber用户组
  2. useradd -g jabber jabber #增加jabber用户并且该用户属于jabber用户组
  3. passwd jabber #设置jabber用户的密码

2.为jabber 的PID’S和logs创建目录

注:官方文档说jabberd的PID’S和logs目录在 /usr/local/var/jabberd
但是我察看了配置文件,却是在/usr/local/jabberd/var/jabberd这个目录
所以可以根据自己的需要来更改,使用ln -s也可以,设置好权限就好

#官方的:
#创建PID’S目录

  1. mkdir -p /usr/local/var/jabberd/pid/
  2. chown -R jabber:jabber /usr/local/var/jabberd/pid/

#创建logs目录

  1. mkdir -p /usr/local/var/jabberd/log/
  2. chown -R jabber:jabber /usr/local/var/jabberd/log

#配置文件的:
#创建PID’S目录

  1. mkdir -p /usr/local/jabberd/var/jabberd/pid/
  2. chown -R jabber:jabber /usr/local/jabberd/var/jabberd/pid/

#创建logs目录

  1. mkdir -p /usr/local/jabberd/var/jabberd/log/
  2. chown -R jabber:jabber /usr/local/jabberd/var/jabberd/log/

#我的:

  1. mkdir /var/log/jabberd
  2. mkdir /var/log/jabberd/pid
  3. mkdir /var/log/jabberd/log
  4. chown -R jabber:jabber /var/log/jabberd/
  5. chown -R jabber:jabber /var/log/jabberd/pid/
  6. chown -R jabber:jabber /var/log/jabberd/log/
  7. cd /usr/local/jabberd/
  8. mkdir /usr/local/jabberd/var/
  9. cd /usr/local/jabberd/var/
  10. ln -s /var/log/jabberd/ /usr/local/jabberd/var/jabberd
  11. chown -R jabber:jabber /usr/local/jabberd/var/
  12. #chown -R jabber:jabber /usr/local/jabberd/var/jabberd

3.jabberd的安装先决条件
>= 0.9.6b 的 OpenSSL
>= 0.3.0 的 Libidn
数据存储设备(例如Mysql数据库)
认证包(Mysql, Berkeley DB, PostgreSQL, OpenLDAP, PAM. )
注:咱们来使用Mysql,Mysql也是默认的认证方式,稍候会介绍配置Mysql数据库的方法

#———————————————-

集中你的注意力,下面正式开始 :)
1.先从jabberstudio下载server端和客户端

2.解压缩执行

  1. ./configure --prefix=/usr/local/jabberd --enable-mysql --enable-ssl --enable-idn --with-extra-include-path=/usr/local/mysql/include/mysql --with-extra-library-path=/usr/local/mysql/lib/mysql/
  2. make
  3. make install

刚开始没有加入–with-extra-include-path和–with-extra-library-path
提示我找不到mysql.h 和mysql client libraries,如果你也遇到了这样的问题,请加入这两个参数,多个路径之间用:分隔

注:全部的configure配置请在command键入 ./configure –help 以获得全面地帮助

先不要删除这个目录,后面还会用到

3.编辑你的/etc/profile
在最后加入:

  1. JABBERD_BIN=/usr/local/jabberd/bin
  2. PATH=$PATH:$JABBERD_BIN

没有什么其它的用处,就是为了方便

4.然后设定配置文件的访问权限,这步一定不能少,否则你修改过配置文件后,再次的启动服务器,将会出现配置文件无法读取的错误
注:官方文档说安装完后配置文件存放在 /usr/local/etc/jabberd,bin目录在 /usr/local/bin
但是我的配置文件存放在 /usr/local/jabberd/etc/jabberd/,bin目录在 /usr/local/jabberd/bin/
bin目录不用去管他,如果为了保险起见,可以执行下面的命令,我就是这么做的

  1. ln -s /usr/local/jabberd/etc/jabberd/ /usr/local/etc/jabberd

#官方的

  1. chown -R root:jabber /usr/local/etc/jabberd/*
  2. chmod -R 640 /usr/local/etc/jabberd/*

#我的

  1. chown -R jabber:jabber /usr/local/jabberd/etc/*
  2. chown -R jabber:jabber /usr/local/jabberd/etc/jabberd/*
  3. chown -R jabber:jabber /usr/local/jabberd/etc/*
  4.  
  5. #chmod -R 640 /usr/local/jabberd/etc/*
  6. chmod -R 640 /usr/local/jabberd/etc/jabberd/*
  7. chmod -R 640 /usr/local/etc/jabberd/*

注:这里要根据自己实际的路径进行修改

官方提示要加这一步

  1. ln -s /usr/local/etc/jabberd/ /etc/jabberd

至此,jabberd就算安装完成了,下一节讲述基本配置,有些麻烦但是还很重要。这大热天的,怎么没绿豆汤呢?

#———————————————-

基本配置
一共3大步骤
在sm.xml和c2s.xml中设定Host Name
提供和配置数据库还有认证信息
最后就是测试服务器啦

按照官方的解释是:jabberd2的配置是通过/ett/jabberd 目录中的6个xml 文件来完成的,访问的时候是通过 /etc/jabberd 来访问的
你可以像我这样,ln -s /usr/local/jabber2/etc/jabberd/ /etc/jabberd 来做一个链接
刚才咱们已经做了这一步了

下面和我一起来修改sm.xml文件
首先在sm.xml 和 c2s.xml中修改 Host Name
编辑你的sm.xml文件
在第7行左右找到

  1. <id>localhost</id>

将localhost改为你定义的域名(Host Name)
我改为:taoer.com
编辑你的c2s.xml文件
在第77行左右找到

  1. <id>localhost</id>

将localhost改成和你刚才改动一致的HostName
我改为:taoer.com

注:你所改的域名必须要internet可以解析得到

接下来配置存储和认证部分
这里以Mysql为例
进入你刚才解压缩的目录下的tools目录中

关于数据库名有两种方法,第一种是直接运行脚本,然后再修改数据库名字
另外一种是先编辑脚本(db-setup.mysql)

  1. CREATE DATABASE jabberd2;
  2. USE jabberd2;

这两句
把jabberd2修改为你想要的数据库名字
我推荐使用第二种,我就是这么做的

然后

  1. mysql -uroot -p

#输入密码…

  1. \. db-setup.mysql

运行后,会显示许多Query OK
如果没有显示失败,就ok了

然后给数据库用户进行授权,建议不要用root用户
提醒一下:数据库用户的密码不要有&,因为待会要在sm.xml,c2s.xml中输入密码,如果有&会报告错误的 :p

jabberd server 会去/tmp目录下找你的mysql.sock
如果/tmp下面没有这个文件,你可以先用locate mysql.sock 查找,然后ln一个就好了
这里是locate的用法
你也可以查看你的my.cnf文件,在里面你可以找到mysql.sock位置

开始配置mysql得用户名和密码

再次打开你的sm.xml文件
在大约69行左右的位置找到

  1. <driver>mysql</driver>

然后按照自己的配置进行修改吧。

  1. <host>localhost</host>
  2. <port>3306</port>
  3. <dbname>jabberd</dbname> 
  4. <user>jabberd2</user>
  5. <pass>secret</pass>

修改成你自己的数据库配置吧,相信1分钟可以搞定的 :)

继续打开c2s.xml来进行Authentication的配置
在大约268行左右的位置找到

  1. <host>localhost</host>
  2. <port>3306</port>
  3. <dbname>jabberd2</dbname>
  4. <user>jabberd2</user>
  5. <pass>secret</pass>

修改成你自己的数据库配置吧,相信1分钟可以搞定的 :)

好了,配置基本完成了
现在可以来测试了

进入你的jabberd2的目录的bin目录下
执行./jabberd &
如果不能启动,请执行./jabberd -D &
-D参数会把debug信息print出来

#——————–
PS:其实,现在你的jabberd就可以工作了
我用的客户端是windows平台下的exodus,当然你也可以使用gaim或者其他的客户端
在客户端的Jabber ID输入: taoer@taoer.com (<用户名@yourdomain.com/net/...>)
密码可以留空
在新帐号注册那个复选框打勾
输入你想要得密码
然后进行登陆,会提示“服务器不允许进行快速注册,你是否还要进行注册”,选择是
你就可以注册并登陆了,和你的朋友一起测试一下吧 :)

#——————–
现在开始通用的配置
共分为:
1)配置防火墙的internet访问设置
2)为jabberd2配置ssl
3)改变Router密码
4)创建一个管理员用户
5)禁止公开注册
6)允许用户更改密码
7)设定DNS记录
8)使用jabberd1.4连接到服务
9)使用JCR连接到服务
10)使用Users-Agent建立一个JUD
11)和Vcard整合Users-Agent

1.下面让你的防火墙允许tcp的5222和5269通过,根据自己的系统进行相应的设置

2.配置ssl,略

PS:第3,4步骤不明白是做什么用的,只是按照官方的文档作相应的修改吧
3.更改Router密码
需要修改的文件是:router-users.xml
如果你改变了这个文件,相应的,router-users.xml, sm.xml, resolver.xml, s2s.xml and c2s.xml 都需要进行修改

编辑你的router-users.xml文件

  1. <name>jabberd</name> 
  2. <secret>secret</secret>

在这两行作相应的修改即可

然后编辑上面提到的其他需要修改的文件
找到 router节点中的

  1. <ip>127.0.0.1</ip>
  2. <name>jabberd</name> 
  3. <secret>secret</secret>

进行修改即可
注:我修改了name和secret,结果是服务无法正常启动
继而修改了ip,结果是服务可以正常启动,但是客户端却连接不上,不知道是为什么 :(

先跳过这个步骤再说

…….



Leave a Message

No Messages

No Messages

RSS feed for comments on this post. TrackBack URI

Leave a Message





Powered by WordPress