ejabberd (Erlangで書かれたというJabberサーバ)
というのをインストールしたら、ハマりましたので軽くメモ。
まぁ以下のページを参考にするなどすればほとんどトラブルはない、はずなんですけどね。
ハマったのは主にローカルの環境でDNS解決部分に罠があったという話でして。上記の2つ目にある以下の記述の部分
どうやらそのモジュール自体はDNSと難の関係もないファイル転送用のモジュールで、だから「うわーん僕の7777番ポートをかえせー」とかログにエラーを吐くわけですね。具体的には /var/log/ejabberd/ejabberd.logに以下のようなエラーが出てくる (IPアドレス等はごにょごにょ
原因が分かれば、やるべきなのはDNSの方の設定であってejabberdの方じゃないとわかるわけですが、そもそも何故仕組みとしてショートホストに暗に依存しているのかはちょっと気になるところではあります。
なおjabberとかいうもの自体につきましては別途勉強する必要がありますよね。
まぁ以下のページを参考にするなどすればほとんどトラブルはない、はずなんですけどね。
- http://memo.yomukaku.net/entries/275
- http://ndpar.blogspot.jp/2010/02/installing-ejabberd-on-ubuntu.html
ハマったのは主にローカルの環境でDNS解決部分に罠があったという話でして。上記の2つ目にある以下の記述の部分
The list of hostnames is tricky. In theory you can provide there just localhost but in practice it didn't work for me. After digging into some Erlang exceptions I got while registering admin account (see next step) I came to conclusion that in the list of hostnames there must be a short hostname of the box. You can get it by running hostname -s command (in my case it was "ubuntu"). In addition you can provide other hostnames you like, but the short one is mandatory.このショートホスト名部分もそもそも罠ですが、それを知った上でejabberd.cfgに書いてみたら、なぜか別のドメインのDNSサーバ にmod_proxy65とかいうモジュールがアクセスする、と。
どうやらそのモジュール自体はDNSと難の関係もないファイル転送用のモジュールで、だから「うわーん僕の7777番ポートをかえせー」とかログにエラーを吐くわけですね。具体的には /var/log/ejabberd/ejabberd.logに以下のようなエラーが出てくる (IPアドレス等はごにょごにょ
=ERROR REPORT==== 2012-08-23 14:30:08 === C(<0 .36.0=".36.0">:gen_mod:75) : Problem starting the module mod_proxy65 for host "localhost" options: [{access,local},{shaper,c2s_shaper}] error: {error, {{eaddrnotavail,{7777,{XXX,XXX,XXX,XXX},tcp}}, {child,undefined, {7777,{XXX,XXX,XXX,XXX},tcp}, {ejabberd_listener,start, [{7777,{XXX,XXX,XXX,XXX},tcp}, mod_proxy65_stream, ["localhost",{access,local},{shaper,c2s_shaper}]]}, transient,brutal_kill,worker, [ejabberd_listener]}}}
原因が分かれば、やるべきなのはDNSの方の設定であってejabberdの方じゃないとわかるわけですが、そもそも何故仕組みとしてショートホストに暗に依存しているのかはちょっと気になるところではあります。
なおjabberとかいうもの自体につきましては別途勉強する必要がありますよね。