標籤

4GL (1) 人才發展 (10) 人物 (3) 太陽能 (4) 心理 (3) 心靈 (10) 文學 (31) 生活常識 (14) 光學 (1) 名句 (10) 即時通訊軟體 (2) 奇狐 (2) 爬蟲 (1) 音樂 (2) 產業 (5) 郭語錄 (3) 無聊 (3) 統計 (4) 新聞 (1) 經濟學 (1) 經營管理 (42) 解析度 (1) 遊戲 (5) 電學 (1) 網管 (10) 廣告 (1) 數學 (1) 機率 (1) 雜趣 (1) 證券 (4) 證券期貨 (1) ABAP (15) AD (1) agentflow (4) AJAX (1) Android (1) AnyChart (1) Apache (14) BASIS (4) BDL (1) C# (1) Church (1) CIE (1) CO (38) Converter (1) cron (1) CSS (23) DMS (1) DVD (1) Eclipse (1) English (1) excel (5) Exchange (4) Failover (1) Fedora (1) FI (57) File Transfer (1) Firefox (3) FM (2) fourjs (1) Genero (1) gladiatus (1) google (1) Google Maps API (2) grep (1) Grub (1) HR (2) html (23) HTS (8) IE (1) IE 8 (1) IIS (1) IMAP (3) Internet Explorer (1) java (4) JavaScript (22) jQuery (6) JSON (1) K3b (1) ldd (1) LED (3) Linux (117) Linux Mint (4) Load Balance (1) Microsoft (2) MIS (2) MM (51) MSSQL (1) MySQL (27) Network (1) NFS (1) Office (1) OpenSSL (1) Oracle (126) Outlook (3) PDF (6) Perl (60) PHP (33) PL/SQL (1) PL/SQL Developer (1) PM (3) Postfix (2) postfwd (1) PostgreSQL (1) PP (50) python (5) QM (1) Red Hat (4) Reporting Service (28) ruby (11) SAP (234) scp (1) SD (16) sed (1) Selenium (3) Selenium-WebDriver (5) shell (5) SQL (4) SQL server (8) sqlplus (1) SQuirreL SQL Client (1) SSH (2) SWOT (3) Symantec (2) T-SQL (7) Tera Term (2) tip (1) tiptop (24) Tomcat (6) Trouble Shooting (1) Tuning (5) Ubuntu (37) ufw (1) utf-8 (1) VIM (11) Virtual Machine (2) VirtualBox (1) vnc (3) Web Service (2) wget (1) Windows (19) Windows (1) WM (6) Xvfb (2) youtube (1) yum (2)

2014年4月28日 星期一

簡單架設Jabber局域網即時通訊服務器

http://tc.wangchao.net.cn/bbs/detail_1476173.html

目錄
  1、什麽是jabber server;
  1.1、我們能否自己架設jabber server;
  1.2、jabber 應用範圍;
  2、jabber server的簡單架設,安裝篇;
  2.1、Jabber Server 測試架設環境和用戶認證環境;
  2.2、Jabber Server 版本的選擇;
  2.3、爲Jabber Server添加一個系統用戶,用來管理服務器的啓動等;
  2.4、編譯安裝Jabber Server所需要的軟件環境;
  2.5、解壓編譯安裝Jabber Server;
  3、jabber server的簡單配置;
  3.1、創建Jabber Server 進程存放目錄pid及日志存放目錄log;
  3.2、有關Mysql數據庫的操作;
  3.3、Jabber Server 的配置文件的修改;
  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、Jabber Server 啓動和管理;
  5、Jabber 客戶端的應用;
  5.1、Jabber 客戶端的選擇;
  5.2、客戶機的DNS配置;
  5.3、Jabber 客戶端之一Gaim的使用;
  6、一些疑問;
  6.1、jabberd2能否和MSN、Yahoo Messager、ICQ等用戶對聊功能;
  6.2、jabberd2能否支持客戶端傳文件功能;
  6.3、jabberd2能否讓支持語音或電話功能;
  7、關于本文;
  8、參考文檔;
  9、相關文檔;
  1、什麽是jabber server;
   Jabber 是著名的 Linux 即時通訊服務服務器,它是一個自由開源軟件。什麽是即時通訊服務器呢?就是類似AIM,ICQ,MSN或Yahoo Message 類似的服務器;只是Jabber能讓我們自己架即時通訊服務器,可以在Internet上應用,也可以在局域網中應用;
  Jabber 最有優勢的就是他的通信協議。他可以和多種即時通訊對接。比如有第三方插件,能讓jabber用戶和MSN 、Yahoo Messager、ICQ..... 對聊;
  下面是來自 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、我們能否自己架設jabber server;
  我們自己來架Jabber server 是可能的;jabber.org 上提供了幾乎所有的文檔資料、服務器端及客戶端;如果您想擁有一個自己的即時消息服務器,那就自己動手吧;jabber 能滿足您架自己的即時通訊服務器;如果您是高手,說不定也會弄一個類似TT公司呢;
  1.2、jabber 應用範圍;
   jabber server 能在局域網中應用,當然也一樣架一台internet 的jabber server 爲您自己的用戶服務;服務器端支持幾乎所有的操作系統,從Linux、MACOS到Unix類的,同樣也支持Windows平台;客戶端也是一樣,無所不 包,無所不有... ...
  服務器端: Jabber Servers
  客戶端: Jabber Clients
  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》
  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所在的位置;您應該知道這些東西在哪裏;我的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結束運行,然後轉爲後台運行;
  [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 即時通訊服務器的架設;沒有太多的功能,當然安全機制也沒有考慮;高水平的文檔並不是我能寫的出來的,當然我也在努力寫一寫高水平的文檔,到現在還沒有這個能力,所以只能期待高手出現,或者期待自己某一天成爲高手;
  本文面向初學者;
  (王朝網路 wangchao.net.cn)

沒有留言:

張貼留言