歡迎您光臨本站 註冊首頁

簡單架設Jabber 區域網即時通訊伺服器

←手機掃碼閱讀     火星人 @ 2014-03-29 , reply:0

1、什麼是jabber server;

Jabber 是著名的 Linux 即時通訊服務伺服器,它是一個自由開源軟體。什麼是即時通訊伺服器呢?就是類似AIM,ICQ,MSN或Yahoo Message 類似的伺服器;只是Jabber能讓我們自己架即時通訊伺服器,可以在Internet上應用,也可以在區域網中應用;

Jabber 最有優勢的就是他的通信協議。他可以和多種即時通訊對接。比如有第三方插件,能讓jabber用戶和MSN 、Yahoo Messager、ICQ..... 對聊;

下面是來自 jabber.org官方的原文
QUOTE:
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、我們能否自己架設jabber server;

我們自己來架Jabber server 是可能的;jabber.org 上提供了幾乎所有的文檔資料、伺服器端及客戶端;如果您想擁有一個自己的即時消息伺服器,那就自己動手吧;jabber 能滿足您架自己的即時通訊伺服器;如果您是高手,說不定也會弄一個類似TT公司呢;

1.2、jabber 應用範圍;

jabber server 能在區域網中應用,當然也一樣架一台internet 的jabber server 為您自己的用戶服務;伺服器端支持幾乎所有的操作系統,從Linux、MACOS到Unix類的,同樣也支持Windows平台;客戶端也是一樣,無所不包,無所不有... ...

伺服器端: Jabber Servers http://www.jabber.org/software/servers.shtml

客戶端: Jabber Clients http://www.jabber.org/software/clients.shtml

2、jabber server的簡單架設,安裝篇;

我是在區域網中架設並測試的,而且功能也極為簡單、安全性也沒有評測(或者說沒有安全性),就是簡單的註冊和相互通訊(聊天);

2.1、Jabber Server 測試架設環境和用戶認證環境;

Slackware 10.1 ,其實在哪個發行版都是一樣的,只要按官方文檔上面說的做,一般都會成功;好象沒有不成功的呢;我用的是mysql認證,也就是說用戶註冊和認證資料庫調用的;當然jabber 支持多種認證,比如PostgreSQL、Berkeley DB ... ...

因為我不懂其它的認證方式,我對Mysql 也只是了解一點點;所以我就用了Mysql的方法;

另外如果在區域網中架Jabber Server ,得有DNS伺服器;也就是說區域網中的機器相互能通過hostname 來訪問;如果您不懂什麼是DNS,或者不會DNS 的架設。我感覺也沒有什麼,現在幾乎所有的路由器都有這個功能,點幾下滑鼠就能弄得起來;如果你只一台機器,我看架Jabber Server 也沒有必要了;

所以本文架設Jabber Server 的前提條件是你懂DNS(至少你有一個路由器,並且能在路由器上指定DNS來解析每台機器的hostname);另外您還要懂一點Mysql伺服器的架設和簡單的應用;

2.2、Jabber Server 版本的選擇;

我用的Jabber Server 的版本是 jabberd-2.0s10.tar.gz ;

http://jabberd.jabberstudio.org/2/#download


2.3、為Jabber Server添加一個系統用戶,用來管理伺服器的啟動等;

一般的說來root超級用戶是能對所有伺服器程序進行管理的;但這樣做有點不安全;所以儘可能的少用root許可權來啟動一個伺服器;


[root@localhost ~]# groupadd jabber 註:添加jabber用戶組;
[root@localhost ~]# useradd jabber 註:添加 jabber用戶;

至於設置不設置jabber用戶的密碼,您看著辦。如果您當前操作的普通用戶,想通過su 命令切換到 root用戶下,然後再通過 su jabber ,這樣就不用密碼也行;如果您認為這樣切來切換去的有點麻煩,那你就設置一下jabber用戶的密碼;


[root@localhost ~]# passwd jabber 註:設置jabber 用戶的密碼;

2.4、編譯安裝Jabber Server所需要的軟體環境;

在Linux中編譯安裝Jabber Server 需要編譯工具;比如gcc 之類的,如果您沒有編譯環境, 就要找出自己所用發行版的光碟,把這些安裝上;

Jabber Server 依賴 openssl ,您也得安裝上;在您的Linux發版的安裝盤中也應該有;
Jabber Server 依賴 Mysql ,因為我們要用Mysql 存儲用戶資料;這個不可缺少吧;在發行版的光碟也有;
libidn 這個軟體包也在各大發行版中有;自己找找看;也可以自己編譯安裝;

參考文檔:《Jabberd 2 Installation and Administration Guide》http://jabberd.jabberstudio.org/2/docs

2.5、解壓編譯安裝Jabber Server;
QUOTE:
[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所在的位置;您應該知道這些東西在哪裡;我的mysql 的include和 lib分別是/usr/include/mysql和/usr/lib/mysql

--prefix 用來指定把jabberd安裝在哪個位置上。我是安裝到了 /opt/jabberd2目錄中;自己看著辦吧。這樣指定比較方便。當我們不需要jabberd的時候,就直接刪除 /opt/jabberd2目錄就行了。就是重裝也方便;卸載就更方便了;

3、jabber server的簡單配置;

3.1、創建Jabber Server 進程存放目錄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許可權,讓用戶jabber可以寫數據到/opt/jabberd2/var及下級目錄;



3.2、有關Mysql資料庫的操作;



在我們的解壓編譯的Jabber Server 目錄中 jabberd-2.0s10 ,有一個目錄tools,裡面有一個文件db-setup.mysql,就是創建資料庫的腳本;

首先我們得啟動Mysql 伺服器;這個過程省略;

然後我們導入 db-setup.mysql;

[root@localhost jabberd-2.0s10] # cd tools
[root@localhost tools] # mysql -uroot -p < db-setup.mysql
Enter password: 在這裡輸入Mysql資料庫的管理密碼


經過上一步,我們就導入了一個jabberd2的資料庫;下一步我們要進行授權;讓jabberd2 資料庫有一個專門的管理用戶;


[root@localhost tools] # mysql -uroot -p
Enter password: 註:在這裡輸入Mysql資料庫的管理密碼



然後我們在 mysql 資料庫中運行下面的一條指令;


mysql>GRANT select,insert,delete,update ON jabberd2.* \
to jabberd2beinan@localhost IDENTIFIED by '123456';

註解: 其中jabberd2beinan 是jabberd2資料庫的管理員,這個可以自己定義;定義你自己喜歡的;其中123456是用戶 jabberd2beinan用戶的密碼;

如果沒有問題的話,我們從mysql退出后,就要吧用jabberd2beinan 用戶來連接Mysql伺服器了;


[root@localhost tools] # mysql -ujabberd2beinan -p
Enter password: 在這裡輸入jabberd2資料庫管理員jabberd2beinan的密碼;
mysql> show databases; 註:查看資料庫;
+----------+
| Database |
+----------+
| jabberd2 |
| test |
+----------+
2 rows in set (0.00 sec)
mysql> quit


3.3、Jabber Server 的配置文件的修改;

以我的安裝和配置環境為準,我是安裝Jabber Server 在/opt/jabberd2目錄中;配置文件在 /opt/jabberd2/etc/目錄中;我們需要改的文件,有如下幾個;

c2s.xml resolver.xml router-users.xml router.xml s2s.xml sm.xml

我只是簡單的說一下我的配置,不一定對,但能用得起來;

注意:所有192.168.1.4的IP都是我架Jabber Server 這台機器的IP,您要根據自己的情況來進行改動;

3.31、c2s.xml 文件

第77行;


localhost
改為
linuxsir

重要:這個是極為重要的,linuxsir是伺服器的hostname,並且能被區域網每台機器都能識別的,也就是我們前面所說要自己做DNS,或通過路由器來做解析;一般路由器都有這個功能;這個需要您自己來弄;

第81行;

0.0.0.0
改為
192.168.1.4

277和278行,是Mysql伺服器認證的;



jabberd2
secret
改為:下面改動是根據您在Mysql資料庫jabberd2授權給你所設置的用戶名和密碼;

jabberd2beinan
123456

3.32、resolver.xml 文件

不做改動,默認就行;

3.33、router-users.xml 文件

不做改動;如果您要改動,其它文件也要改。這個文檔是簡單架設。沒有考慮的太多;大多是默認的配置;

我的建議是為了安全,你還是改一下用戶和密碼;也就是下面的;


jabberd
secret

把上面的改一改,最好改的比較安全一點;下面只是一個簡單的例子;


jabberd1234
654321

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




127.0.0.1
5347

jabberd
secret

也就是要改動上面的中的



jabberd1234
654321

3.34、router.xml 文件

不做改動,默認就好;

3.35、s2s.xml 文件

第77行;


0.0.0.0
改為
192.168.1.4

3.36、sm.xml 文件

第7行;

這是伺服器hostname的設置,您所用的hostname要在區域網中被識別;這就涉及到DNS;現在路由器大多都有指定DNS的功能;這個需要您自己來弄;我的這台機器在路由器上做了DNS后,被指定解析為linuxsir;


localhost
改為
linuxsir

第88、89行;

這兩行也是連接Mysql資料庫伺服器;也要改動;


jabberd2
secret
改為
jabberd2beinan
123456

4、Jabber Server 啟動和管理;

我們在前面已經添加了 jabber這個用戶,目的就是為了服務的安全性,讓這個用戶來添加和啟動Jabber Server;

當然我們要切換到jabber這個用戶,然後讓jabber這個用戶來啟動jabberd伺服器;


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

這個Debug模式運行,如果有什麼錯誤,就能顯示出來;如果不行,你就按幾下回車,看看是不是有錯誤發生。如果沒有,就Ctrl+C結束運行,然後轉為後台運行;
QUOTE:
[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

說明: 第一行是後台運行;第二行是查看是否jabberd已經啟動起來了;如果出現類似上面的提示,這表示jabberd已經運行;



5、Jabber 客戶端的應用;

5.1、Jabber 客戶端的選擇;

對於客戶端的選擇,您可以用gaim;也可能用其它的,我用的是gaim;請到 Jabber 客戶端: Jabber Clients 去找適合自己;

如果您想用gaim ,可以到 http://gaim.sourceforge.net 上去下載;Windows版本和Linux版本都有;如果您用的是Linux,各大發行版都有這個軟體包;安裝上就行了;

5.2、客戶機的DNS配置;

如果您是Linux,就得讓/etc/resolv.conf 有DNS主機的設置;比如我的設置是


nameserver 192.168.1.1

192.168.1.1 這行就是DNS伺服器的,我用的是路由器,路由器我配置DNS的時候,用的就是這個地址;

如果您是用Windows,也得在網卡設置IP那個界面上,寫上這個吧;自己看著辦吧;

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

Gaim使用就簡單了,我們可以通過Gaim來向區域網Jabber Server 申請ID;

第一步: 添加帳號;

點擊[帳號]=>添加=》

協議:選擇 Jabber
用戶名: 先隨便寫一個您喜歡的,比如我寫是的beinan
伺服器:也就是我們前面設置的Jabber Server 那台機器的hostname;我的機器是linuxsir;
資源:不用管他;
密碼:自己寫一個吧;因為沒有註冊呢;這個不是重要的;
別名:就是昵稱,比如大灰狼之類;

點擊[顯示主要選項]

Jabber 選項

可用則使用TLS 這個要選中,其它兩個是 [強制舊SSL]和[允許不加密流上的純文本驗證],這兩個就不要選中了;l

埠:5222

連接伺服器:就是Jabber Server所在機器的IP地址,我這台機器是192.168.1.4

代理類型:不用改變,保持原來的狀態就行;[使用全局代理設置]

第二步 註冊帳號;

這些都添寫好了,再點擊[註冊];

然後寫上用戶名和密碼;他會提示註冊成功;

第三步 修改帳戶

我們還得從頭再來,點擊[帳戶],然後選中您剛才註冊的成功的那個帳戶;點擊修改;就按前面所說的來修改;只是在[顯示主要選項]中的連接伺服器改一改就行了。因為這個是空的;要改為你自己伺服器的IP地址就行了;我的伺服器是192.168.1.4。我就改成了192.168.1.4;

至於Windows用戶的Gaim的使用同理;








6、一些疑問;

6.1、jabberd2能否和MSN、Yahoo Messager、ICQ等用戶對聊功能;

能的;但要安裝一些插件;在我看來這些插件有點難度。因為我測試過一些插件;但不能解決一些依賴關係;等解決了依賴關係,卻不能應用;錯誤是的。

http://www.jabber.org/software/components.shtml

6.2、jabberd2能否支持客戶端傳文件功能;

如果是默認安裝是不支持的,這也需要第三方插件;目前有三種方法吧;在jabber的主頁上說,如果想要實現相互傳文件功能,與客戶端有關;我測試了好多種,但還是不行。psi據說是能行,我測試后也不行;可能依靠客戶端傳文件還是有點難度。或許不久就以解決?

如果通過伺服器端解決呢?也是有可能的,有兩種方法;proxy65和定義apache dav模塊的辦法;apache dav模塊據說比較簡單。但我沒有試過。據有關洋人說,不太安全;proxy65的方法也有難度,他依賴太多的東西,比如python 、zope 、twist、pyopenssl ... ...多多;雖然也能解決依賴關係,但proxy65還是一樣運行不起來;

大家還是自己測試吧;寫這些東西只不是想讓新手走太多的路;

6.3、jabberd2能否讓支持語音或電話功能;

可能有這個成功案例,我沒有仔細看;但通過jabberd2文檔,我沒有看到,或許有第三方插件能解決;或許有點難度;

7、關於本文

本文是最簡單的Jabber 即時通訊伺服器的架設;沒有太多的功能,當然安全機制也沒有考慮;高水平的文檔並不是我能寫的出來的,當然我也在努力寫一寫高水平的文檔,到現在還沒有這個能力,所以只能期待高手出現,或者期待自己某一天成為高手;

本文面向初學者;

[火星人 ] 簡單架設Jabber 區域網即時通訊伺服器已經有2821次圍觀

http://coctec.com/docs/linux/show-post-204611.html