javaのアプリケーションサーバresinをCentOS 5にインストールし、Quercus(java製php)でWordPressME 2.2.1を動かしてみようとしたのですが、残念ながら挫折した記録です。とりあえずresinのインストールと簡単な設定の備忘録メモとして。
Resinは高速軽量高機能が売りのjavaのアプリケーションサーバです。特徴はいくつかありますが、特に目を引くのがQuercusというjavaで実装されたphp5サブセットをコンポーネントとして持つ点です。
英語圏向けにはwordpressやdrupal,pliggなんかのphpアプリケーションの動作が確認されているようでサブセットとはいえ結構実用的に使えそうです。
またResinは商用版とオープンソース版がありますので、ここではオープンソース版を使いました。
このjava製php、Quercusの特徴はphpをjavaにコンパイルして動作し、素のphpの数倍高速で、eAcceleratorを使った場合より速いとのこと。うまく動くならWordPressやMediaWikiが軽くなるかもしれませんし、面白そうです。
javaとresinのインストール
- まずはjava 5.0をJPackageからインストール。
JPackage Project | Installation Instruction - 続いてresin-3.1.2.tar.gzを落としてくる。Download Resin
- 以下実行環境を/usr/local/resinに入れるとします。
- tar ballを展開して
./configure --with-apxs=/usr/sbin/apxs --prefix=/usr/local/resin
make
make install - 簡単にテスト
cd /usr/local/resin
./bin/httpd.sh start
- localhost:8080アクセスしてみる。resinが出ればインストールOK
apacheに組み込むためのmod_cauchoのインストールも終わっているはずです。apacheの設定ファイル(/etc/httpd/conf/httpd.conf)の最後に追加されていると思います。
設定など
mod_cauchoが組み込まれた状態のapacheでは、設定でresinと普通のapacheの使い分けが出来ます。ファイルタイプ、ディレクトリごとにどちらがハンドリングするかの設定ができます。既に配備済みのディレクトリに追加することも出来ます。また仮想サーバも設定できます。
設定ファイルは/usr/local/etc/resin.confです。デフォルト設定のままですと/var/www/htmlにwebapp/ROOTというディレクトリを作って、そこにhtmlやjspやphpファイルを置くと、そのままDocumentRootが移動したようなイメージで動作します。
特定の仮想サーバの特定のディレクトリだけをresin配下にしてみます。仮想サーバとディレクトリを以下のような感じでresin.confの<host-default>...</host-default>の後にに追加。
<host id="<myvirtual>.com>
<root-directory>/var/www/myvirtual</root-directory>
<web-app id='/apps' document-directory='/var/www/myvirtual/apps' />
</host>
上の例では 仮想サーバ <myvirtual>.comの/appがresin配下になります。ここに置いたphpファイルはオリジナルのphpではなくQuercusがハンドリングします。ディレクトリの中と外にphpinfo()なphpファイルを置いて比べればわかると思います。
またresin/bin/httpd.shは /etc/init.dに配置することも出来、chkconfigでonにすれば立ち上げ時に起動することも出来ます。
データベースドライバ
Quercusのデータベースドライバはjavaのデータベースアクセス機能を使うことになります。登録が必要ですが、MySQL AB :: Download Connector/J 5.0からmysqlのコネクタをダウンロードします。
展開したらjarファイルを/usr/local/resin/libにコピーしておきます。
WordPressにチャレンジして失敗。。。
まずはresinのメモリを増やす
- defaultのresinのメモリ設定ではWordPressを扱い切れないようなのでメモリを増やします。
- /usr/local/resin/conf/resin.confのvm-argエントリ内の-Xmxの値を1024mにします。
- resin/binでhttpd.sh restart
- apacheも再起動 /etc/init.d/httpd restart
- WordPresss用データベースを作成します
- 以降先ほど作った仮想サーバを使うとして
- /var/www/myvirtual/appsに展開したwordpressをコピーします。
- http://myvirtual/appsにアクセスするとWordPressの初期画面が出るはずです
以降、普通にWordPressのインストールステップを行います - 途中でiconv関係の関数がUnimplementedなエラーとなって終了(^^;
- でもインストールはほぼ終わっているようで、トップページにアクセスするとデフォルトページが出ました
- 日本語が化けました。また初期パスワードの画面が見れてません。
- もしメモリ不足のエラーが出ても再度チャレンジするといけるかもしれません。700m程度の設定でやっていたのですがすぐメモリ不足になります。増やすとマシになります。
- phpからjavaに変換してコンパイルするので最初のアクションはかなり遅いです。気長に。
pukiwiki utf8版はmb_string関係でこけたりregexp関係で引っかかったりと画面すら拝めませんでした。
ざっと引っかかったところをまとめると、まず国際化関係の関数が弱い、 定数などのエラーはJavaのものを渡してやればパスするかも知れない、regexpもjavaのものを使っていて拡張regexp等の互換性が完全ではない、メモリ食い、今のところ余り速くない、といった感じでしょうか。メモリの問題のせいか少し不安定に感じます。
- Quercus Modules Status-- モジュールの完成具合のステータス
resin自体は触れ込み通り反応も速くいい感じです。phpも意外に動いている印象です。iconvやマルチバイト文字関係を強化すれば日本でも十分使えると思います。安直なphpとjavaの組み合わせはなかなかいいかもしれません。