jabber安装笔记
作者: Jeffrey
出处:http://blog.zhangjianfeng.com/?p=241
终于装好了….装完才发现,原来很简单,是自己想得太多了
安装步骤我引用一下别人写的吧,我如果写,也写不出这么详细.
jabberd-2.0s10.tar.gz+gaim
Jabber需要:OpenSSL+Libidn+Mysql(我都用as4自带的RPM包安装的)

装Jabber:
# groupadd jabber
# useradd -g jabber jabber
# passwd jabber
输入jabber用户的密码,以后启动jabber服务就用jabber用户就可以了
# mkdir -p /usr/local/var/jabberd/pid/
# chown -R jabber:jabber /usr/local/var/jabberd/pid/
# mkdir -p /usr/local/var/jabberd/log/
# chown -R jabber:jabber /usr/local/var/jabberd/log
到jabber包所在路径执行:
# tar -zxvf jabberd-2.0s10.tar.gz
# cd jabberd-2.0s10
# export CFLAGS=”-I/usr/kerberos/include”
# ./configure
# make
# make install
安装成功,默认安装路径是/usr/local,要更换安装路径,在configure的时候加参数,具体参数,参考Jabber自己的安装文档。Jabber的文档放在/usr/local/etc/jabberd下面,可执行文件放在/usr/local/bin下。
# chown -R root:jabber /usr/local/etc/jabberd/*
# chmod -R 640 /usr/local/etc/jabberd/*
这样Jabber的配置文件就只有jabber和root用户可以读写了,这步也可以不做。
# ln -s /usr/local/etc/jabberd/ /etc/jabberd (建立链接方便访问)
基本配置:
1.设置host name:
# cd /etc/jabberd/
# vi sm.xml
In sm.xml :
localhost
默认是localhost,我是用ip,也可以用somemachine.somedomain.com的格式,但是那先有域名解析。
保存退出。
vi c2s.xml
In c2s.xml :
localhost
也替换成ip,保存退出。
2.配置Mysql:
到Jabber的源代码路径下的tools目录下,有mysql的建库sql文件,执行db-setup.mysql可以在mysql下建立对应的用户和表。
# cd /path/jabberd-2.0s10/tools/
# mysql -u root -p (输入mysql的root密码)
mysql>\. db-setup.mysql
mysql> grant select,insert,delete,update On jabberd2.* to jabberd2@localhost IDENTIFIED by ‘123456′;
给jabberd在mysql的密码就赋值为”123456″,也可以自己指定密码
执行完毕退出。
# mysql -u jabberd2 -p来测试密码是否正确。
mysql的socket在/var/lib/mysql下面,jabberd2需要用到它,所以:
# ln -s /var/lib/mysql/mysql.sock /tmp/mysql.sock
3.在jabber中指定mysql的配置:
# cd /etc/jabberd/
# vi sm.xml
数据库关于数据库的配置,使用mysql的有两段:
mysql
以及
localhost
3306
jabberd2
jabberd2
secret
系统以及默认好了,除非你在前面改动了密码什么的,才需要更改这段配置,或者想换个端口。
Jabber推荐使用mysql,用它做数据存储和身份认证,身份认证需要更改c2s.xml
# vi c2s.xml
localhost 3306
jabberd2
jabberd2
secret
系统也已经默认好了。
前面建立了jabber自己的log目录,这样就不用加到系统日志里面了,所以要更改sm.xml和c2s.xml。
sm.xml:
jabberd/sm
local3
/usr/local/var/jabberd/log/sm.log
系统默认log type是”syslog”,改成”file”,然后把下面的file的具体路径的配置取消注释就可以了。
对应的,c2s.xml,s2s.xml,router.xml,resolver.xml也是同样改法。
这样基本配置就完成了,可以测试了。
测试Jabber服务:
# su - jabber
$ jabberd
Ok,这样就启动了jabber服务,关闭直接Ctrl+C就行了。
现在用客户端注册一个新用户,然后登录,需要注意的是注册是要输入JabberID,要加@192.168.0.24
包括增加联系人的时候也是要加上。
这样就建立一个简单廉价的IM Server了。
如果启动jabber时系统报LANG,LANGUAGE,LC_ALL的错误,主要是因为redhat默认安装后,系统unset了LC_ALL,还有因为其他原因更改了LANG变量的设置等,所以可以在jabber用户下重新赋值:
# su - jabber
$ vi .bash_profile
在里面加入:
export LANG=en_US
export LANGUAGE=$LANG
export LC_ALL=$LANGUAGE
具体指定什么语言,根据实际定吧。
如果想建立自启动脚本,我做了一个简单的脚本,我用的还凑合:
#!/bin/sh
#/etc/rc.d/init.d/jabberd
#
# Description: Starts and stops the jabberd services as jabber user .
#
#Date 2005/06/09
# Source function library.
if [ -f /etc/init.d/functions ] ; then
. /etc/init.d/functions
elif [ -f /etc/rc.d/init.d/functions ] ; then
. /etc/rc.d/init.d/functions
else
exit 0
fi
# Jabberd services must be run by jabber user
KIND=”Jabberd”
RETVAL=0
start() {
echo -n $”Starting $KIND services: ”
echo “—————————————————-” >> /usr/local/var/jabberd/log/jabberd.log
date +”! %T %a %D : Starting Jabberd as part of system up.” >> /usr/local/var/jabberd/log/jabberd.log
echo “—————————————————-” >> /usr/local/var/jabberd/log/jabberd.log
su - jabber -c jabberd & >> /usr/local/var/jabberd/log/jabberd.log
echo “Done.”
RETVAL=$?
echo “———————–” >> /usr/local/var/jabberd/log/jabberd.log
date +”! %T %a %D : Finished.” >> /usr/local/var/jabberd/log/jabberd.log
echo “———————–” >> /usr/local/var/jabberd/log/jabberd.log
echo
return $RETVAL
}
stop() {
echo -n $”Shutting Down $KIND services: ”
echo “———————————————————–” >> /usr/local/var/jabberd/log/jabberd.log
date +”! %T %a %D : Shutting Down Jabberd as part of system down.” >> /usr/local/var/jabberd/log/jabberd.log
echo “———————————————————–” >> /usr/local/var/jabberd/log/jabberd.log
killall s2s >> /usr/local/var/jabberd/log/jabberd.log
killall c2s >> /usr/local/var/jabberd/log/jabberd.log
killall sm >> /usr/local/var/jabberd/log/jabberd.log
killall resolver >> /usr/local/var/jabberd/log/jabberd.log
killall router >> /usr/local/var/jabberd/log/jabberd.log
echo “Done.”
RETVAL=$?
echo “———————–” >> /usr/local/var/jabberd/log/jabberd.log
date +”! %T %a %D : Finished.” >> /usr/local/var/jabberd/log/jabberd.log
echo “———————–” >> /usr/local/var/jabberd/log/jabberd.log
echo
return $RETVAL
}
restart() {
stop
start
}
case “” in
start)
start
;;
stop)
stop
;;
restart)
restart
;;
*)
echo $”Usage: ”
exit 1
esac
exit $?
这个脚本我起名叫jabberd,放在init.d下面,root权限,然后:
# ln -s /etc/rc.d/init.d/jabberd /etc/rc.d/rc3.d/S99jabberd
# ln -s /etc/rc.d/init.d/jabberd /etc/rc.d/rc5.d/S99jabberd
# ln -s /etc/rc.d/init.d/jabberd /etc/rc.d/rc6.d/K01jabberd
# ln -s /etc/rc.d/init.d/jabberd /etc/rc.d/rc0.d/K01jabberd
这样计算机启动和关闭的时候就自动关闭和启动了,如果手工想关闭重启什么的时候,直接执行:
# /etc/rc.d/init.d/jabberd (start|stop|restart)
这个文件是用txt文本格式写的,不能直接把脚本内容拷贝成sh文件,用写字板或者Ultraedit什么的重写吧,否则换行符是跟linux不一样的。
注册新用户可以用客户端(如gaim)或在数据库操作
添加用户
connect jabberd2;
insert into authreg (username, realm, password) values (’user1′, ‘zhangjianfeng.com’, ‘123456′);
insert into authreg (username, realm, password) values (’user2′, ‘zhangjianfeng.com’, ‘123456′);
编译时如果报configure: error: MySQL client libraries not found错,那么
先export LDFLAGS=”-L/usr/local/lib -L/usr/lib/mysql”


