來自:LinuxSir.Org
簡介:本文主要介紹Jabber即時(shí)通訊服務(wù)器最簡單的架設(shè)方法;目的是自己學(xué)習(xí)一下,長長見識(shí);另外也是為了對(duì)此有興趣的弟兄所準(zhǔn)備的,用于和大家交流;本文所架的Jabber Server 是通過Mysql數(shù)據(jù)庫來進(jìn)行用戶認(rèn)證的;
目錄
1、什么是jabber server;
2、jabber server的簡單架設(shè),安裝篇;
3、jabber server的簡單配置;
4、Jabber Server 啟動(dòng)和管理;
5、Jabber 客戶端的應(yīng)用;
6、一些疑問;
7、關(guān)于本文;
8、參考文檔;
9、相關(guān)文檔;
+++++++++++++++++++++++++++++++++++++++++++++++++
正文
+++++++++++++++++++++++++++++++++++++++++++++++++
1、什么是jabber server;
Jabber 是著名的 Linux 即時(shí)通訊服務(wù)服務(wù)器,它是一個(gè)自由開源軟件。什么是即時(shí)通訊服務(wù)器呢?就是類似AIM,ICQ,MSN或Yahoo
Message 類似的服務(wù)器;只是Jabber能讓我們自己架即時(shí)通訊服務(wù)器,可以在Internet上應(yīng)用,也可以在局域網(wǎng)中應(yīng)用;
Jabber 最有優(yōu)勢(shì)的就是他的通信協(xié)議。他可以和多種即時(shí)通訊對(duì)接。比如有第三方插件,能讓jabber用戶和MSN 、Yahoo
Messager、ICQ..... 對(duì)聊;
下面是來自 jabber.org官方的原文
Jabber is best known as "the Linux of instant messaging" -- an open,
secure, ad-free alternative to consumer IM services like AIM, ICQ, MSN,
and Yahoo (see the IM quickstart). Under the hood, Jabber is a set of
streaming XML protocols and technologies that enable any two entities on
the Internet to exchange messages, presence, and other structured
information in close to real time. Jabber technologies offer several key
advantages:
1.1、我們能否自己架設(shè)jabber server;
我們自己來架Jabber server 是可能的;jabber.org
上提供了幾乎所有的文檔資料、服務(wù)器端及客戶端;如果您想擁有一個(gè)自己的即時(shí)消息服務(wù)器,那就自己動(dòng)手吧;jabber
能滿足您架自己的即時(shí)通訊服務(wù)器;如果您是高手,說不定也會(huì)弄一個(gè)類似TT公司呢;
1.2、jabber 應(yīng)用范圍;
jabber server 能在局域網(wǎng)中應(yīng)用,當(dāng)然也一樣架一臺(tái)internet 的jabber server
為您自己的用戶服務(wù);服務(wù)器端支持幾乎所有的操作系統(tǒng),從Linux、MACOS到Unix類的,同樣也支持Windows平臺(tái);客戶端也是一樣,無所不
包,無所不有... ...
服務(wù)器端: Jabber Servers
客戶端: Jabber Clients
2、jabber server的簡單架設(shè),安裝篇;
我是在局域網(wǎng)中架設(shè)并測(cè)試的,而且功能也極為簡單、安全性也沒有評(píng)測(cè)(或者說沒有安全性),就是簡單的注冊(cè)和相互通訊(聊天);
2.1、Jabber Server 測(cè)試架設(shè)環(huán)境和用戶認(rèn)證環(huán)境;
Slackware 10.1
,其實(shí)在哪個(gè)發(fā)行版都是一樣的,只要按官方文檔上面說的做,一般都會(huì)成功;好象沒有不成功的呢;我用的是mysql認(rèn)證,也就是說用戶注冊(cè)和認(rèn)證數(shù)據(jù)庫調(diào)
用的;當(dāng)然jabber 支持多種認(rèn)證,比如PostgreSQL、Berkeley DB ... ...
因?yàn)槲也欢渌恼J(rèn)證方式,我對(duì)Mysql 也只是了解一點(diǎn)點(diǎn);所以我就用了Mysql的方法;
另外如果在局域網(wǎng)中架Jabber Server ,得有DNS服務(wù)器;也就是說局域網(wǎng)中的機(jī)器相互能通過hostname
來訪問;如果您不懂什么是DNS,或者不會(huì)DNS
的架設(shè)。我感覺也沒有什么,現(xiàn)在幾乎所有的路由器都有這個(gè)功能,點(diǎn)幾下鼠標(biāo)就能弄得起來;如果你只一臺(tái)機(jī)器,我看架Jabber Server
也沒有必要了;
所以本文架設(shè)Jabber Server
的前提條件是你懂DNS(至少你有一個(gè)路由器,并且能在路由器上指定DNS來解析每臺(tái)機(jī)器的hostname);另外您還要懂一點(diǎn)Mysql服務(wù)器的架設(shè)
和簡單的應(yīng)用;
2.2、Jabber Server 版本的選擇;
我用的Jabber Server 的版本是 jabberd-2.0s10.tar.gz ;
http://jabberd.jabberstudio.org/2/#download
2.3、為Jabber Server添加一個(gè)系統(tǒng)用戶,用來管理服務(wù)器的啟動(dòng)等;
一般的說來root超級(jí)用戶是能對(duì)所有服務(wù)器程序進(jìn)行管理的;但這樣做有點(diǎn)不安全;所以盡可能的少用root權(quán)限來啟動(dòng)一個(gè)服務(wù)器;
[root@localhost ~]# groupadd jabber 注:添加jabber用戶組; [root@localhost ~]# useradd jabber 注:添加 jabber用戶;
至于設(shè)置不設(shè)置jabber用戶的密碼,您看著辦。如果您當(dāng)前操作的普通用戶,想通過su 命令切換到 root用戶下,然后再通過 su jabber ,這樣就不用密碼也行;如果您認(rèn)為這樣切來切換去的有點(diǎn)麻煩,那你就設(shè)置一下jabber用戶的密碼;
[root@localhost ~]# passwd jabber 注:設(shè)置jabber 用戶的密碼;
2.4、編譯安裝Jabber Server所需要的軟件環(huán)境;
在Linux中編譯安裝Jabber Server 需要編譯工具;比如gcc 之類的,如果您沒有編譯環(huán)境, 就要找出自己所用發(fā)行版的光盤,把這些安裝上;
Jabber Server 依賴 openssl ,您也得安裝上;在您的Linux發(fā)版的安裝盤中也應(yīng)該有;
Jabber Server 依賴 Mysql ,因?yàn)槲覀円肕ysql 存儲(chǔ)用戶資料;這個(gè)不可缺少吧;在發(fā)行版的光盤也有;
libidn 這個(gè)軟件包也在各大發(fā)行版中有;自己找找看;也可以自己編譯安裝;
參考文檔:《Jabberd 2 Installation and Administration Guide》
2.5、解壓編譯安裝Jabber Server;
[root@localhost ~]# tar zxvf jabberd-2.0s10.tar.gz [root@localhost ~]# cd jabberd-2.0s10 [root@localhost jabberd-2.0s10] # ./configure --enable-ssl --enable-mysql --enable-idn \ --with-extra-include-path=/usr/include/mysql \ --with-extra-library-path=/usr/lib/mysql \ --prefix=/opt/jabberd2
[root@localhost jabberd-2.0s10] # make [root@localhost jabberd-2.0s10] # make install
注意: 在./configure 中要指定您的Mysql的include所在的位置,也要指定
mysql的lib所在的位置;您應(yīng)該知道這些東西在哪里;我的mysql 的include和
lib分別是/usr/include/mysql和/usr/lib/mysql
--prefix 用來指定把jabberd安裝在哪個(gè)位置上。我是安裝到了
/opt/jabberd2目錄中;自己看著辦吧。這樣指定比較方便。當(dāng)我們不需要jabberd的時(shí)候,就直接刪除
/opt/jabberd2目錄就行了。就是重裝也方便;卸載就更方便了;
3、jabber server的簡單配置;
3.1、創(chuàng)建Jabber Server 進(jìn)程存放目錄pid及日志存放目錄log
[root@localhost ~]# mkdir -p /opt/jabberd2/var/jabberd/pid [root@localhost ~]# mkdir -p /opt/jabberd2/var/jabberd/log
[root@localhost ~]# chown -R jabber:jabber /opt/jabberd2/var
說明:改變/opt/jabberd2/var權(quán)限,讓用戶jabber可以寫數(shù)據(jù)到/opt/jabberd2/var及下級(jí)目錄;
3.2、有關(guān)Mysql數(shù)據(jù)庫的操作;
在我們的解壓編譯的Jabber Server 目錄中 jabberd-2.0s10 ,有一個(gè)目錄tools,里面有一個(gè)文件db-setup.mysql,就是創(chuàng)建數(shù)據(jù)庫的腳本;
首先我們得啟動(dòng)Mysql 服務(wù)器;這個(gè)過程省略;
然后我們導(dǎo)入 db-setup.mysql;
[root@localhost jabberd-2.0s10] # cd tools [root@localhost tools] # mysql -uroot -p < db-setup.mysql Enter password: 在這里輸入Mysql數(shù)據(jù)庫的管理密碼
經(jīng)過上一步,我們就導(dǎo)入了一個(gè)jabberd2的數(shù)據(jù)庫;下一步我們要進(jìn)行授權(quán);讓jabberd2 數(shù)據(jù)庫有一個(gè)專門的管理用戶;
[root@localhost tools] # mysql -uroot -p Enter password: 注:在這里輸入Mysql數(shù)據(jù)庫的管理密碼
然后我們?cè)?mysql 數(shù)據(jù)庫中運(yùn)行下面的一條指令;
mysql>GRANT select,insert,delete,update ON jabberd2.* \ to jabberd2beinan@localhost IDENTIFIED by '123456';
注解: 其中jabberd2beinan 是jabberd2數(shù)據(jù)庫的管理員,這個(gè)可以自己定義;定義你自己喜歡的;其中123456是用戶 jabberd2beinan用戶的密碼;
如果沒有問題的話,我們從mysql退出后,就要吧用jabberd2beinan 用戶來連接Mysql服務(wù)器了;
[root@localhost tools] # mysql -ujabberd2beinan -p Enter password: 在這里輸入jabberd2數(shù)據(jù)庫管理員jabberd2beinan的密碼;
mysql> show databases; 注:查看數(shù)據(jù)庫; +----------+ | Database | +----------+ | jabberd2 | | test | +----------+ 2 rows in set (0.00 sec)
mysql> quit
3.3、Jabber Server 的配置文件的修改;
以我的安裝和配置環(huán)境為準(zhǔn),我是安裝Jabber Server 在/opt/jabberd2目錄中;配置文件在 /opt/jabberd2/etc/目錄中;我們需要改的文件,有如下幾個(gè);
c2s.xml resolver.xml router-users.xml router.xml s2s.xml sm.xml
我只是簡單的說一下我的配置,不一定對(duì),但能用得起來;
注意:所有192.168.1.4的IP都是我架Jabber Server 這臺(tái)機(jī)器的IP,您要根據(jù)自己的情況來進(jìn)行改動(dòng);
3.31、c2s.xml 文件
第77行;
<id>localhost</id> 改為 <id>linuxsir</id>
重要:這個(gè)是極為重要的,linuxsir是服務(wù)器的hostname,并且能被局域網(wǎng)每臺(tái)機(jī)器都能識(shí)別的,也就是我們前面所說要自己做DNS,或通過路由器來做解析;一般路由器都有這個(gè)功能;這個(gè)需要您自己來弄;
第81行;
<ip>0.0.0.0</ip> 改為 <ip>192.168.1.4</ip>
277和278行,是Mysql服務(wù)器認(rèn)證的;
<!-- Database username and password --> <user>jabberd2</user> <pass>secret</pass>
改為:下面改動(dòng)是根據(jù)您在Mysql數(shù)據(jù)庫jabberd2授權(quán)給你所設(shè)置的用戶名和密碼;
<!-- Database username and password --> <user>jabberd2beinan</user> <pass>123456</pass>
3.32、resolver.xml 文件
不做改動(dòng),默認(rèn)就行;
3.33、router-users.xml 文件
不做改動(dòng);如果您要改動(dòng),其它文件也要改。這個(gè)文檔是簡單架設(shè)。沒有考慮的太多;大多是默認(rèn)的配置;
我的建議是為了安全,你還是改一下用戶和密碼;也就是下面的;
<name>jabberd</name> <secret>secret</secret>
把上面的改一改,最好改的比較安全一點(diǎn);下面只是一個(gè)簡單的例子;
<name>jabberd1234</name> <secret>654321</secret>
如果router-users.xml中做了改動(dòng)其它文件中的如下內(nèi)容也要改動(dòng);
<router> <!-- IP/port the router is waiting for connections on --> <ip>127.0.0.1</ip> <!-- default: 127.0.0.1 --> <port>5347</port> <!-- default: 5347 -->
<!-- Username/password to authenticate as --> <user>jabberd</user> <!-- default: jabberd --> <pass>secret</pass> <!-- default: secret -->
也就是要改動(dòng)上面的中的
<!-- Username/password to authenticate as --> <user>jabberd1234</user> <!-- default: jabberd --> <pass>654321</pass> <!-- default: secret -->
3.34、router.xml 文件
不做改動(dòng),默認(rèn)就好;
3.35、s2s.xml 文件
第77行;
<ip>0.0.0.0</ip> 改為 <ip>192.168.1.4</ip>
3.36、sm.xml 文件
第7行;
這是服務(wù)器hostname的設(shè)置,您所用的hostname要在局域網(wǎng)中被識(shí)別;這就涉及到DNS;現(xiàn)在路由器大多都有指定DNS的功能;這個(gè)需要您自己來弄;我的這臺(tái)機(jī)器在路由器上做了DNS后,被指定解析為linuxsir;
<id>localhost</id> 改為
<id>linuxsir</id>
第88、89行;
這兩行也是連接Mysql數(shù)據(jù)庫服務(wù)器;也要改動(dòng);
<user>jabberd2</user> <pass>secret</pass> 改為 <user>jabberd2beinan</user> <pass>123456</pass>
4、Jabber Server 啟動(dòng)和管理;
我們?cè)谇懊嬉呀?jīng)添加了 jabber這個(gè)用戶,目的就是為了服務(wù)的安全性,讓這個(gè)用戶來添加和啟動(dòng)Jabber Server;
當(dāng)然我們要切換到j(luò)abber這個(gè)用戶,然后讓jabber這個(gè)用戶來啟動(dòng)jabberd服務(wù)器;
[root@localhost ~] #su jabber [jabber@localhost ~] $ /opt/jabberd2/bin/jabberd -D
這個(gè)Debug模式運(yùn)行,如果有什么錯(cuò)誤,就能顯示出來;如果不行,你就按幾下回車,看看是不是有錯(cuò)誤發(fā)生。如果沒有,就Ctrl+C結(jié)束運(yùn)行,然后轉(zhuǎn)為后臺(tái)運(yùn)行;
[jabber@localhost ~] $ /opt/jabberd2/bin/jabberd& [jabber@localhost ~] $ ps -aux |grep jabberd
jabber 7048 12.3 1.2 5072 3184 pts/0 R 05:33 0:00 perl -w -x /opt/jabberd2/bin/jabberd jabber 7049 2.3 0.5 4656 1452 pts/0 S 05:33 0:00 /opt/jabberd2/bin/router -c /opt/jabberd2/etc/jabberd/router.xml jabber
7050 0.6 0.4 4552 1252 pts/0 S 05:33 0:00
/opt/jabberd2/bin/resolver -c /opt/jabberd2/etc/jabberd/resolver.xml jabber 7051 2.0 0.6 4796 1716 pts/0 S 05:33 0:00 /opt/jabberd2/bin/sm -c /opt/jabberd2/etc/jabberd/sm.xml jabber 7052 0.6 0.5 4644 1340 pts/0 S 05:33 0:00 /opt/jabberd2/bin/s2s -c /opt/jabberd2/etc/jabberd/s2s.xml jabber 7053 1.6 0.6 4752 1672 pts/0 S 05:33 0:00 /opt/jabberd2/bin/c2s -c /opt/jabberd2/etc/jabberd/c2s.xml jabber 7055 0.0 0.2 2256 732 pts/0 R+ 05:33 0:00 grep jabberd
說明: 第一行是后臺(tái)運(yùn)行;第二行是查看是否jabberd已經(jīng)啟動(dòng)起來了;如果出現(xiàn)類似上面的提示,這表示jabberd已經(jīng)運(yùn)行;
5、Jabber 客戶端的應(yīng)用;
5.1、Jabber 客戶端的選擇;
對(duì)于客戶端的選擇,您可以用gaim;也可能用其它的,我用的是gaim;請(qǐng)到 Jabber 客戶端: Jabber Clients 去找適合自己;
如果您想用gaim ,可以到 http://gaim.sourceforge.net 上去下載;Windows版本和Linux版本都有;如果您用的是Linux,各大發(fā)行版都有這個(gè)軟件包;安裝上就行了;
5.2、客戶機(jī)的DNS配置;
如果您是Linux,就得讓/etc/resolv.conf 有DNS主機(jī)的設(shè)置;比如我的設(shè)置是
nameserver 192.168.1.1
192.168.1.1 這行就是DNS服務(wù)器的,我用的是路由器,路由器我配置DNS的時(shí)候,用的就是這個(gè)地址;
如果您是用Windows,也得在網(wǎng)卡設(shè)置IP那個(gè)界面上,寫上這個(gè)吧;自己看著辦吧;
5.3、Jabber 客戶端之一Gaim的使用;
Gaim使用就簡單了,我們可以通過Gaim來向局域網(wǎng)Jabber Server 申請(qǐng)ID;
第一步: 添加帳號(hào);
點(diǎn)擊[帳號(hào)]=>添加=》
協(xié)議:選擇 Jabber
用戶名: 先隨便寫一個(gè)您喜歡的,比如我寫是的beinan
服務(wù)器:也就是我們前面設(shè)置的Jabber Server 那臺(tái)機(jī)器的hostname;我的機(jī)器是linuxsir;
資源:不用管他;
密碼:自己寫一個(gè)吧;因?yàn)闆]有注冊(cè)呢;這個(gè)不是重要的;
別名:就是昵稱,比如大灰狼之類;
點(diǎn)擊[顯示主要選項(xiàng)]
Jabber 選項(xiàng)
可用則使用TLS 這個(gè)要選中,其它兩個(gè)是 [強(qiáng)制舊SSL]和[允許不加密流上的純文本驗(yàn)證],這兩個(gè)就不要選中了;l
端口:5222
連接服務(wù)器:就是Jabber Server所在機(jī)器的IP地址,我這臺(tái)機(jī)器是192.168.1.4
代理類型:不用改變,保持原來的狀態(tài)就行;[使用全局代理設(shè)置]
第二步 注冊(cè)帳號(hào);
這些都添寫好了,再點(diǎn)擊[注冊(cè)];
然后寫上用戶名和密碼;他會(huì)提示注冊(cè)成功;
第三步 修改帳戶
我們還得從頭再來,點(diǎn)擊[帳戶],然后選中您剛才注冊(cè)的成功的那個(gè)帳戶;點(diǎn)擊修改;就按前面所說的來修改;只是在[顯示主要選項(xiàng)]中的連接服務(wù)器改一改就
行了。因?yàn)檫@個(gè)是空的;要改為你自己服務(wù)器的IP地址就行了;我的服務(wù)器是192.168.1.4。我就改成了192.168.1.4;
至于Windows用戶的Gaim的使用同理;
6、一些疑問;
6.1、jabberd2能否和MSN、Yahoo Messager、ICQ等用戶對(duì)聊功能;
能的;但要安裝一些插件;在我看來這些插件有點(diǎn)難度。因?yàn)槲覝y(cè)試過一些插件;但不能解決一些依賴關(guān)系;等解決了依賴關(guān)系,卻不能應(yīng)用;錯(cuò)誤是的。
http://www.jabber.org/software/components.shtml
6.2、jabberd2能否支持客戶端傳文件功能;
如果是默認(rèn)安裝是不支持的,這也需要第三方插件;目前有三種方法吧;在jabber的主頁上說,如果想要實(shí)現(xiàn)相互傳文件功能,與客戶端有關(guān);我測(cè)試了好多
種,但還是不行。psi據(jù)說是能行,我測(cè)試后也不行;可能依靠客戶端傳文件還是有點(diǎn)難度;蛟S不久就以解決?
如果通過服務(wù)器端解決呢?也是有可能的,有兩種方法;proxy65和定義apache dav模塊的辦法;apache
dav模塊據(jù)說比較簡單。但我沒有試過。據(jù)有關(guān)洋人說,不太安全;proxy65的方法也有難度,他依賴太多的東西,比如python 、zope
、twist、pyopenssl ... ...多多;雖然也能解決依賴關(guān)系,但proxy65還是一樣運(yùn)行不起來;
大家還是自己測(cè)試吧;寫這些東西只不是想讓新手走太多的路;
6.3、jabberd2能否讓支持語音或電話功能;
可能有這個(gè)成功案例,我沒有仔細(xì)看;但通過jabberd2文檔,我沒有看到,或許有第三方插件能解決;或許有點(diǎn)難度;
7、關(guān)于本文
本文是最簡單的Jabber
即時(shí)通訊服務(wù)器的架設(shè);沒有太多的功能,當(dāng)然安全機(jī)制也沒有考慮;高水平的文檔并不是我能寫的出來的,當(dāng)然我也在努力寫一寫高水平的文檔,到現(xiàn)在還沒有這
個(gè)能力,所以只能期待高手出現(xiàn),或者期待自己某一天成為高手;
本文面向初學(xué)者;
8、參考文檔
《Jabberd 2 Installation and Administration Guide》
9、相關(guān)文檔
|