インストール
環境はCentOS5.6で極力yumで対処してみた。
- CentOS 5.6
- Apache 2.2.3 (yum install)
- fastcgi 2.4.0 (yum install)
- mod_fastcgi 2.4.2 (source install)
- mysql 5.1.57 (rpm install)
- perl 5.8.8 (yum install)
ちなみにMobaSiFのdocsに記載されている対応環境の内容は以下の通り
要求 確認環境
CentOS 4.x / 5.x 4.5 (i386)
Apache 1.3.x 1.3.41
MySQL 5.0.x 5.0.51a
perl 5.8.x 5.8.0
fastcgi 2.4.x 2.4.6
詰まった所、注意点
- MobaSiF
- mod_fastcgiとmod_fcgidがあるがMobaSiFはmod_fastcgi
- yumで入れたApacheのバージョンが2.2だったが、mod_fastcgiは2.0までしか対応していない。
- パッチを当てれば2.2にmod_fastcgiを入れるられる⇒'Apache2.2+fastcgiで Ruby on Rails'
- perl
- FastCGIがシステム標準のperlを使うのでperlbrewを使うと混乱する。
- 素直にシステム標準のperlを使うのが楽
- Apache
- MobaSiFとは全然関係ないがバーチャルホストでDocumentRootの設定に変な癖がある⇒VirtualHost環境化でのPermission Denied
MobaSiFのミニマムサ
ンプル
MobaSiFでのページとURLの対応は以下のようになる
- ルート
- http://[domain]/
- 各ページ(アンダースコア+ページ名)
- http://[domain]/[_ページ名前]
ページを追加してみる
conf/pages.conf
our %PAGE = {
.
.
.
'sample' => [0, package Page::Sample;
use strict;
use HTMLTemplate;
use Response;
sub pageMain {
my $func = shift;
my $rhData = {};
my $html = HTMLTemplate::insert("sample/top", $rhData);
Response::output(\$html);
}
1;0,0, 'Page::Sample', 'pageMain'],
# http://[domain]/_sample にアクセスすると Page::SampleモジュールのpageMainの処理が走る
};
pm/Page/Sample.pm
package Page::Sample;
use strict;
use HTMLTemplate;
use Response;
sub pageMain {
my $func = shift;
my $rhData = {};
my $html = HTMLTemplate::insert("sample/top", $rhData);
Response::output(\$html);
}
1;
テンプレートのコンパイル
MobaSiFでは速度を出すためにアプリで機種毎に出し分けなどの処理をしないよう最初からテンプレートを機種別に生成したりするようです。(変なバイナリデータをテンプレートに埋め込んでいたり他にも色々やってそうな感じ)
$ perl script/tool/compile_template
conf/pages.confの数字の意味
'ページ名' => [ UID_ST, USER_ST, SERV_ST, モジュール, サブルーチン ]
- UID_ST
- 0:情報なし
- 2:serial/uid あり
- USER_ST
- 0:非会員でもOK
- 1:会員(メアド未登録でもOK)
- 2:会員(メアド登録済)
- SERV_ST (以下を足したもの)
- 1:自主退会だと不能
- 2:運用退会だと不能
- 4:PENALTYだと不能
- 8:メール不達だと不能
まとめ
- 機能は非常にミニマム
- 文字コードはテンプレートやコード等でsjis,utf8,eucが入り交じる
- テンプレートの中に絵文字のバイナリを直接書く
- ロジックの所でレスポンスにテンプレートと引数を合成したものの返り値を渡す処理を自分で書く。
⇒多分拡張して使われる事が前提と思ってよい。
- 古いのでPlackに対応していないため、動作確認までの環境構築が非常に面倒。
- 開発段階でわざわざApacheとFastCGIを入れないといけない
⇒今時Plack対応して欲しいかも。開発段階でFastCGIがどうのとかあんまり考えたく無い。
以下で説明されている通りモダンじゃないのは確かかもしれませんね。