fedora7でPaintChatApp設置

ようやくwebサーバー稼働しはじめた。
ひとまず初期目標としてあったお絵チャサーバーを立てる。
モノはしぃちゃんのお絵描きしぃちゃっと PaintChatApp
とある持ちネタがあって、実験も兼ねて、といった感じでとりあえず運用を開始してみる。
導入は以下。

簡単な環境

  • OS:fedora7(linux)
    • サーバーの操作はすべてCUIで行う
    • GUI環境の場合は、参考サイト等に書いてある方法で簡単に動かせる
  • httpサーバーはapacheを使用するので、PaintChatに封入されているhttpサーバーは使用しない
  • PaintChat V3

参考サイト

  • pinkチャンネルお絵かきチャットしようぜ 4のお絵チャサーバー

作業内容

ひとまず公式のヘルプの手順どおりに作業を進める。

1.とりあえずサーバーにjavaを入れる

yumを使ってjavaパッケージをインストール

# yum -y install java
2.PaintChatをサーバーにインストール

ファイルを、apacheのDocumentRoot以下に配置する。
通常は/var/www/html以下。*1
PaintChatファイル群のパーミッション等はすでに適切に変更してあるが、
配置する上位のディレクトリの影響を受けるので、パーミッションを良く確認しておく。

3.httpサーバーを立てる

公式のヘルプの順番では、次にhttpサーバーを立てる内容が来るが、
今回の場合は、すでにapacheでhttpサーバーを稼働させているので、
特に何もせず飛ばす。

4.Paintchatサーバーを立てる

Paintchatサーバーにはコンフィグファイルが必要。
とりあえず動かすために
コンフィグファイルは公式ページのsampleを自分のサーバー用にちょっと手を加えて作ることにする。
実際に使っているのは以下の内容

#キャッシュ(キャンバス)
Server_Cash_Line=true

#キャッシュ(会話)
Server_Cash_Text=true

#チャットポート
Connection_Port_PaintChat=41411

#線データーのログ
Server_Log_Line=true

#テキストキャッシュ(ライン単位)
Server_Cash_Text_Size=200

#ラインキャッシュ(Byte)
Server_Cash_Line_Size=512000

#管理機能の為のパスワード
Admin_Password=

Cash_Text=true

#テキストデーター起動時読み込み
Server_Load_Text=true

#インターネットの接続
Connection_GrobalAddress=false

#ウェッブポート
Connection_Port_Http=80

#チャット管理機能の使用許可
Admin_ChatMaster=false

#テキストのログ
Server_Log_Text=false

#デバッグ情報の表示
Server_Debug=false

Cash_Text_Size=200

File_Config=\cnf\paintchat.cf

#保存線データー起動時読み込み
Server_Load_Line=true

#サーバーインフォメーションの書き込み先
File_PaintChat_Infomation=cnf/template/.paintchat

#HTTP公開フォルダの位置
Http_Dir=cnf/template

ファイルの保存先は/paintchat/cnf以下(公式ヘルプ通り)
そして、主に手を加えたのは下の方の項目で

  • サーバーインフォメーションの書き込み先
    • よく分からんが、サーバー実行時に使用するファイルらしい
    • 公開フォルダに指定(公開フォルダについては後述)
  • HTTP公開フォルダの位置
    • HTTP公開フォルダ?というニュアンスがよく分からなかったが、外部から参照可能なディレクトリのことだろう
    • 求められているのは、ログインページや、実際のアプレットがどこに置いてあるのか?ということだ
    • /paintchat/cnf/templateにサンプルのロビーページと関連ファイルがすべて入っているので、とりあえずはそれを指定する


また、コンフィグファイルの詳しい値の説明は
/paintchat/cnf/resource_ja.propertiesファイルに記述してあるようだ。

5.アプレットとHTMLファイルの用意

公式のヘルプではこの項が一番よく分からなかった。

チャットを立ち上げるにはページを表示するHTMLファイルと
アプレット関連のファイルを用意する必要があります。

と書いてあるが、実際の所、templateに一通り関連ファイルが揃っている。
これを利用する場合は、特に何もやらなくても大丈夫のようだ。

6.立ち上げ

すでにapacheでhttpサーバーはあるので、あとはPaintChatサーバーを立ち上げるだけでok。
コマンドはPaintChat.jarがあるディレクトリにて

java -Duser.dir=/var/www/html/paintchat -cp ./PaintChat.jar paintchat_server.Server ./cnf/paintchat.cf

などと打てばok

起動に成功するとターミナルに

/var/www/html/paintchat/cnf/paintchat.cf
Run ChatServer port=41411

とか出る。
これでサーバーがクライアント接続待ちとなり、起動完了。
試しにLan内で接続テストを行うと、サーバー上ではこんな表示になる。

見づらいけど、クライアント側がログインに成功すると
サーバーのconsole上にログイン名とIPが表示されているのが分かる。

7.ポート解放

しかし、このままログインページのurlを外部に公開しても
ログインページとアプレットは見れるけど、同期を取るサーバーにうまく接続できない。
iptablesなどのfireWallソフトにポート解放ルールが適用されていないためである。


PaintChatの使用するport番号はコンフィグファイルで指定した値である。
sampleのコンフィグファイルでは41411番を使用することになっている。
よってiptablesなどのfirewallルールに41411番通過のルールを追加する。
ポート解放についての内容は割愛。


確認については、PaintChatサーバーが立ち上がってる状態で
ポート解放確認サイトで41411番のポートが空いているかどうかをチェックする。
この時、上手くポートが解放されていれば

(^o^) ホスト=**.**.**.** ポート=41411 にアクセスできました。
    応答時間は *秒 でした。

と表示される。

8.サーバー停止

console上ではctrl+cのジョブ終了ショートカットキーで終了は可能であるが、
終了コマンドも用意されている
(現在このコマンドで終了できません!検証中・・・)

java -Duser.dir=/var/www/html/paintchat -cp ./PaintChat.jar paintchat_server.Server ./cnf/template/.paintchat exit

実行すると

/var/www/html/paintchat/cnf/template/.paintchat
server got terminated

と表示される。・・・・が、なぜか肝心のプロセスは終了していない!
terminatedうそやん。

(追記)
やはり、exitコマンド効かないようです。
ps aux | grep java | grep PaintChat.jar | grep -v grep | awk '{ print $2 }' | xargs kill -9
などで、プロセスを直接殺すしかないようです。

*1:僕の場合DocumentRootを変更しているが