這些天搗鼓了下ejabberd,准備研究它的代碼,做為榜樣~ 我這兒用的是1.1.3的代碼,而svn上面的代碼有些地方做了比較大的改動.
在Linux平台安裝很簡單
就ok了.
若現在 像ejabberd的指南所說的那樣執行
就會出錯,沒有定義配置文件的路徑。最簡單的方法就是先設置一個環境變量
然後再執行剛才的erl命令,這兒節點名稱用全稱.
erl -pa /var/lib/ejabberd /ebin -name [email protected] -s ejabberd 當然也可以用
來詳細地定義啟動參數.
下面是ejabberdctl工具來注冊一個用戶admin.
ejabberdctl 實際上是一個shell文件,具體內容是
可以看出,它實際上是調用ejabberd_ctl模塊,對應的文件就是 ejabberd_ctl.beam. 這工具原本在ejabberd源碼下的tools文件夾下,但它找不到ejabberd_ctl.beam.你可以將它copy至/var/lib /ejabberd/ebin下面方方便使用.
當你執行
時它會出現如下錯誤
開始以為是192.168.0.98非法, 後面用它的源碼檢查了一番發現是rpc:call調用有問題。因為ejabberctl這個shell文件中定義了
調 用sname定義的短節點名與長節點名,兩者所定義的結點不能通信.連net_adm:ping都失敗.
我這兒把./ejabberdctl改成 下面的樣子:
這樣rpc:call就沒有問題了.但再執行那個注冊命令就會出現:
Can't register user "[email protected]" at node '[email protected]': not_allowed
檢查源碼發現是由於配置文件ejabberd.cfg中沒有此host. 我這兒98加到hosts裡面就可以了:
再執行一下,就沒問題了。admin用戶已經注冊成功!
接下來,就是登陸管理頁面了. 我這兒默認是在 http://192.168.0.98:5280/admin
換台有浏覽器的 機器登陸這個頁面. 這時admin登錄總是出現401錯誤。我將源代碼web/ejabberd_web.erl代碼中的密碼驗證難取消了,就可以看到管理頁面啦. 有空再研究一下到底是哪兒出了錯,查了下代碼,可能又是配置方面 :)