Apatna Jaxer を自分のサーバに入れてみる
Apatna Jaxer とは?
サーバサイドJavascriptを実現するアプリケーションサーバ。Apatna社自身は Ajaxサーバ と表現しているようです。
構成としては、Apache と Ajaxサーバ を個別に稼動させ mod_jaxer というモジュールで連携させる感じ。
Firefox3と同じエンジンを利用していて、JavaScriptの標準に準拠。
サーバサイドの処理においてもDOM操作が可能で、protptype.jsやjQueryなどもサーバサイドで利用可能です。
さらに、Jaxer Framework というAjaxサーバで使える関数群が用意されていて、ファイル操作やMySQLなどのデータベース接続もJavaScriptで行えます。
とにかく、JavaScriptです。
Perl,Ruby,PHP,Python,etc...なんて使いたくないって人には最適です。
Apatna Jaxer のダウンロード
Download Aptana Jaxer(Aptana Jaxer ダウンロードページ)Windows版、Mac版、Linux版がそれぞれ用意されてます。
これらのパッケージにはApache2.2もバンドルされていて、本来は事前にApacheを用意しておく必要はない。
しかし、今回は既に構築済みのApacheにJaxerを入れようと思ったので、そのように環境を設定していこうと思います。
自分のサーバはLinuxなのでLinux版をソースディレクトリにダウンロードしておきます。(この時点での最新は Jaxer for Linux build 0.9.3.2156 でした)
Apatna Jaxer の設置
まず、ダウンロードしたファイルを展開します。unzip Jaxer_package_withApache.zip
すると、AptanaJaxer というフォルダにファイルが展開されます。(もし、バンドルされているApacheを利用する場合はこのAptanaJaxerを '/opt' に配置すれば簡単な設定で、すぐに利用可能です)
次にAptanaJaxerをソースディレクトリから設置箇所に移動します。
私の場合はApacheディレクトリと同じ階層に設置しました。
以後、このディレクトリパスを [APP_PATH] 、Apacheディレクトリパスを [APACHE_PATH]、AptanaJaxerディレクトリパスを [JAXER_PATH]、公開トップディレクトリを [DOCUMENT_ROOT] と記述します。
mod_jaxer.so の設置
'[JAXER_PATH]/jaxer/connectors' の中に mod_jaxer.so というApacheモジュールが入っているので、それをApacheモジュールディレクトリにコピーします。cp [JAXER_PATH]/jaxer/connectors/mod_jaxer.so [APACHE_PATH]/modules/mod_jaxer.so
コピーしたら httpd.conf に、
LoadModule jaxer_module modules/mod_jaxer.so
という記述を追加して mod_jaxer.so を読み込む設定にします。Apache の設定
'[JAXER_PATH]/jaxer/confs' の中に jaxer-linux.httpd.conf というlinux用の設定ファイルがあります。これを下記のようにコピーします。
cp [JAXER_PATH]/jaxer/confs/jaxer-linux.httpd.conf [APACHE_PATH]/conf/extra/httpd-jaxer.conf
コピーしたら httpd.conf の最後に、
Include conf/extra/httpd-jaxer.conf
という記述を追加して、httpd-jaxer.conf をhttpd.confにIncludeします。httpd-jaxer.conf の修正
httpd-jaxer.conf 内に記述してあるパス等を、自分の環境に書き換えます。今回は下記のように書き換えました(コメントは削除してあります)。
<Directory "[JAXER_PATH]/jaxer/aptana">
Order Deny,Allow
Allow from all
</Directory>
Alias /aptana [JAXER_PATH]/jaxer/aptana
<IfModule jaxer_module>
JaxerWorker localManagerWorker 127.0.0.1 4327
<Location "/jaxer-server">
SetHandler JAXER
</Location>
<Directory "[DOCUMENT_ROOT]">
DirectoryIndex index.php index.php3 index.html index.htm index.html.var index.html.var index.html.redirect
JaxerFilter localManagerWorker .html
JaxerFilter localManagerWorker .xhtml
JaxerFilter localManagerWorker .htm
JaxerFilter localManagerWorker .php
Order Deny,Allow
Allow from all
</Directory>
<Directory "[JAXER_PATH]/jaxer/aptana">
JaxerFilter localManagerWorker .html
JaxerFilter localManagerWorker .xhtml
JaxerFilter localManagerWorker .htm
JaxerFilter localManagerWorker .php
Order Deny,Allow
Allow from all
</Directory>
<LocationMatch "/jaxer-include/">
JaxerPassThrough
Order Deny,Allow
Allow from all
</LocationMatch>
</IfModule>
まぁ、大体こんな感じなんだけど、この設定だと全体に影響を及ぼすので、バーチャルホストを利用して専用のドキュメントルートを設定するなり、Directory指定で部分的に JaxerFilter を適用する設定にしたりする必要がありそう。なのでドキュメントルート直下に"jaxer"というフォルダを作成して、その中で"JaxerFilter"を設定した。(.htaccessで設定を上書きできれば一番良いのだが、JaxerFilterの上書き許可の指定方法がわからん)
<Directory "[JAXER_PATH]/jaxer/aptana">
Order Deny,Allow
Allow from all
</Directory>
Alias /aptana [JAXER_PATH]/jaxer/aptana
<IfModule jaxer_module>
JaxerWorker localManagerWorker 127.0.0.1 4327
<Location "/jaxer-server">
SetHandler JAXER
</Location>
<Directory "[DOCUMENT_ROOT]/jaxer">
DirectoryIndex index.php index.php3 index.html index.htm index.html.var index.html.var index.html.redirect
JaxerFilter localManagerWorker .html
JaxerFilter localManagerWorker .xhtml
JaxerFilter localManagerWorker .htm
JaxerFilter localManagerWorker .php
Order Deny,Allow
Allow from all
</Directory>
<Directory "[JAXER_PATH]/jaxer/aptana">
JaxerFilter localManagerWorker .html
JaxerFilter localManagerWorker .xhtml
JaxerFilter localManagerWorker .htm
JaxerFilter localManagerWorker .php
Order Deny,Allow
Allow from all
</Directory>
<LocationMatch "/jaxer-include/">
JaxerPassThrough
Order Deny,Allow
Allow from all
</LocationMatch>
</IfModule>
Jaxer の起動スクリプトの修正
'[JAXER_PATH]/scripts' の中にJaxerの起動/停止スクリプトが入ってるので環境に合わせて修正する。[start.sh]
##3行目辺り
export JAXERBASE=/opt/AptanaJaxer
↓
export JAXERBASE=[JAXER_PATH]
##6行目辺りをコメントアウト
sleep 3
$JAXERBASE/scripts/startApache.sh
↓
#sleep 3
#$JAXERBASE/scripts/startApache.sh
[startJaxer.sh]
##76行目辺り
export JAXER_LOGFILE=file://$JAXERBASE/logs/jaxer.log
↓
export JAXER_LOGFILE=$JAXERBASE/logs/jaxer.log
[stop.sh]
##3行目辺り
export JAXERBASE=/opt/AptanaJaxer
↓
export JAXERBASE=[JAXER_PATH]
##6行目辺りをコメントアウト
$JAXERBASE/scripts/stopApache.sh
↓
#$JAXERBASE/scripts/stopApache.sh
Jaxer の起動と停止
Jaxerの起動:[JAXER_PATH]/scripts/start.sh
Jaxerの停止:
[JAXER_PATH]/scripts/stop.sh
上記のコマンドで、Jaxerの起動と停止が行える。Jaxerを起動したらApacheの再起動が必要なようなので、忘れずにApacheを再起動させる。
Jaxer の動作確認
Jaxerを起動し、Apacheを再起動したら、http://[YOURDOMAIN]/aptana
にアクセスしてみよう。こんなページが表示されます
うまくページが表示されましたか?
ページ左側に "Build: 0.9.3.2156" とBuild番号が表示されたらスクリプトも正常に動作していると思います。
サンプルの実行
Jaxer の動作確認がうまくいったら、サンプルページを表示させてみよう。ドキュメントルート直下に用意した"jaxer"ディレクトリの中に下記を記述した index.html を作成する。
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" lang="ja-JP" xml:lang="ja-JP">
<head>
<meta http-equiv="content-type" content="text/html; charset=UTF-8" />
<meta http-equiv="Content-Language" content="ja" />
<title>Jaxer Sample</title>
<script runat="server">
function init(){
document.getElementById('build').innerHTML = "Build:" + Jaxer.buildNumber;
}
</script>
</head>
<body onserverload="init()">
<div id="build"></div>
</body>
</html>
準備が出来たら、
http://[YOURDOMAIN]/jaxer/
にアクセスしてみる。うまく動作すれば"Build:0.9.3.2156"のようにBuild番号が表示されるはず。
→サンプル
表示されたら、ブラウザからソースを表示してみよう。
ちゃんと指示通りにDIVタグの中に文字列が挿入されているのが見てわかると思います。
ただ、htmlヘッダがグチャグチャにされて、xhtmlがValidじゃなくなってるのが残念。
まとめ
勢いで書いたので解りづらい説明になってしまいましたが、実際はほとんどサーバ設定をせずに動作させるようなパッケージになっています。なので気軽に試せるのは間違いありません。
自分はあまりさわってませんが、サンプルソースとかAPIを見るとちょっとワクワクしますよ。
--
楽しそうなことはたくさんあるんだけど、気力がついていかねぇー。
About this entry
Archive type
Individual archive
Published
2008/02/27 18:07
0 Comments