<%CollapsedContents()%>
ということでイントラの中で、IMを動かしたいと考えましてJabberサーバーを立ててみました。
Linuxでやれば情報もあって早いんでしょうが、もし今後常用する場合にLinixサーバーでは管理しきれない面があるので、あえて社内にあるWindows2000サーバーで動かすことを試してみました。
3日かかりましたが、まぁなんとか動いたのでそのメモ。
条件としてはフリーでWindowsで動くもの。こちらで探してみたところ、jabberd 1.x、jabberd 2.x、ejabberd、Jive Messengerというところがフリーで動きそうなものでした。
このうち、Jabberd2の設定に関して、お気楽JabberサーバにLinux版の情報があったので、これを参考にということでサーバーソフトはJabberd2で決定。
ダウンロードはここから、と言いたいところですがここにあるのはソースです。自分でmakeしないといけないというもの。
そんな環境は「ない&作るのめんどくさい(できるかもわからんし…)」のでmake済みのものを求めてぐぐってみました。
で、見つかったのがPackages - Jabberd2。一番下に、s7とs8をビルドしたもののリンクがありました。当然s8で。
ここには3つのビルドがあるのですが、お気楽Jabberサーバの情報を参考にするため、mysqlを利用した「jabberd-2.0-CVS20050523-win32-mysql.zip」をダウンロードします。
まず、Mysqlは4系でなくてはいけないので、そちらのインストール&設定。
手順は他を参考にしてください。
次にテキトウなフォルダを作成して(c:\jabberd2)とかそこにダウンロードしたファイルを展開。
設定は全部xmlファイルになってますので、お気楽Jabberサーバ - jabberd2を参考に設定。
router.exe、sm.exe、resolver.exe、s2s.exe、c2s.exeをダブルクリックして実行し、コマンドプロンプト画面が表示され続けることを確認。
5つの画面がでているならば、無事起動ができていると思われるのでテキトウなJabberクライアントを使用して接続テストを実行。(見た目からいうとPandionがオススメ)
このままでも普通に使用できますが、社内で使用するという目的から考えると、誰が登録しているのかがわからないというのは辛い。
一覧表示できればいいのでしょうが、それは難しそうなので検索ができるようにJUD(Jabber User Directory)を稼動させる。
お気楽Jabberサーバ - jabberd2によればusers-agentというperlスクリプトでJUDが構築できるようなので、Windows用のActivePerlを使用して動かしてみました。
結論としては動いたのですが、かなり苦労しました。
まず、ActivePerlのインストール。5.6系と5.8系がありますが、うちでは5.6系でうまくいかなかったので5.8系をインストールしてください。
(ダウンロードはこちらから)
インストール後、users-agentに必要なperlモジュールをインストールします。方法はCPANを使用する方法とPPMを使用する2つの方法があります。PPMの方が簡単で準備が楽ですが、依存関係は処理しない(たぶん)のと、Packageが存在しない場合があります。よって、私はCPANとPPMを併用し
ました。
CPANの使用方法はこちら → Perlモジュール/インストール(CPAN) - Walrus,Digit.
PPMの使用方法はこちら → Perlモジュール/インストール(PPM) - Walrus,Digit.
必要なモジュールはNet::JabberとDBI。とりあえずCPANでインストールしてうまくいかなければPPMという手順で行いました。
また、make用としてMSのnmake.exeを使用しましたが、test makeでエラーを起こして進まなかったため、
force install Net::Jabber
でインストールしています。
DBIはCPANでは「clがない」とエラーを吐くのでPPMでインストール。
http://www.jabberstudio.org/projects/users-agent/releases/ からusers-agentをダウンロードしてテキトウなフォルダに展開(例:C:\jabberd2\users-agent\)。
お気楽Jabberサーバ の手順ではdatabaseを別に作成していますが、これだとそのDBにデータを別途作成する必要があるため、ここは飛ばします。
config.xmlの設定は基本的にはお気楽Jabberサーバ - jabberd2を参考にしますが、
<dbname>jabberd2</dbname>
の様にjabberd2で使用するDB名を指定します。
通常のスクリプトのままだとJUDテーブルがあることが前提のため、こちらの記述を参考に「users-agent」ファイルを書き換えます。(-がついている行を+のついている行に書き換える)
Windows環境でエラーが出ますので、1,4,6行目を削除
削除する内容
#!/bin/sh exec perl -x $0 "$@"; #!perl
これで起動はしますが、日本語が文字化けるので、削除した部分あたりに以下の行を追加
use encoding "utf8"; binmode STDERR, ":encoding(utf8)";
コマンドラインからusers-agentを展開したディレクトリへ移動し、以下のコマンドで起動。
perl users-agent
また、終了してしまう、動きがわからないというのであれば
perl users-agent -D 1
で起動すると動作状態が画面表示されます。
(たぶん足りないモジュールがエラーとして表示されるので、それは都度PPMでインストール)
Jabberクライアントを起動し、自分のプロフィールとして姓、名、ニックネーム、メールアドレスを編集します。
ユーザーの追加で検索サーバーが表示され、検索ができればOK。
Pandionではできました。Psiではどこで検索画面が出てくるかわからず、Exodusはメニューが日本語にならなかったのでパス。
このままだとログオンしていないと起動できないので、Windowsのサービスとして動かします。
使用したツールはExecSVC(ssk's Home)
テキトウなフォルダに展開し、ExcSvc.iniファイルに以下の内容を記述
[router] EXE = C:\jabberd2\router.exe ARG = DIR = C:\jabberd2\ PRI = LOW [resolver] EXE = C:\jabberd2\resolver.exe ARG = DIR = C:\jabberd2\ PRI = LOW [c2s] EXE = C:\jabberd2\c2s.exe ARG = DIR = C:\jabberd2\ PRI = LOW [s2s] EXE = C:\jabberd2\s2s.exe ARG = DIR = C:\jabberd2\ PRI = LOW [sm] EXE = C:\jabberd2\sm.exe ARG = DIR = C:\jabberd2\ PRI = LOW [users-agent] EXE = c:\perl\bin\perl.exe ARG = C:\jabberd2\Users-Agent\users-agent.pl DIR = C:\jabberd2\Users-Agent\ PRI = LOW
コマンドプロンプトから展開したフォルダに移動して以下のコマンドを実行すればサービス化の完了です。
instsvc C:\展開したフォルダ\ExecSvc.exe -a -s Jabberd2
以下のコマンドを実行してサービスを起動させてください。
net start Jabberd2
クライアントから接続、検索がきちんとできることを確認したらすべて完了。
ちなみに、完全に試行錯誤で行いましたので質問は受け付けられません(答えられるとは思えない…)。特にperlはまったくわからないので、「やったら動いた」レベルの記述です。
むしろおかしいところがあったらコメント希望です。
(右クリックからショートカットのコピーを選択)