なはずだったんだが、結構はまってしまいました。何にはまったのかというと、lighttpd の名前空間での妙な動作にです。
具体的には、例えば http://neoflow.local/hoge/fuga というメソッドにアクセスしようとControllerやViewで $c->uri_for(); を利用すると http://neoflow.local/hoge/fuga/hoge/fuga みたいになってしまう。
スタンドアロンサーバでは問題ないので、lighttpd の問題だと帰結したのだが以外と情報がなくて困った。
というわけで、そこらへんも踏まえて、メモしておきたいと思います。サンプルもこれから bitbucket にでもアップしておこうと思います。
前置きが長くなりましたが、簡単な掲示板アプリを紹介してみます。っていうか、lighttpd 環境の人は参考になるかもしれないというレベルの話。
テスト環境
CentOS 5.x系最新
Perl 5.8.8
Catalyst 5.90060
lighttpd-fastcgi-1.4.32-1.el5
lighttpd-1.4.32-1.el5
MVC事始め
アプリケーション作成
DBテーブル作成
いらんサンプルデータ付きw
モデル作成
書式:
実行例:
※なんでだか、s が消えるっ。このサンプルは、trends_and_wom というテーブル名なんだけど TrendAndWom.pm になる。きもwww
ちなみに tablename なら Tablename.pm, table_name なら TableName.pm になる。まぁ気にせずいこう。。
コントローラ作成
メソッドを実装
サブルーチンを追加します。
Attr.pm を開いて、sub index{} の下に以下をペーストして保存しといてください。
ビューの実装
・ビュー作成します
・テンプレート保存フォルダを作っておきます
[[email protected] Neoflow-Bbs]# mkdir -p root/ctrl/attr
・.tt テンプレートを作ります
※各 .tt は ↑で作成したディレクトリ配下に作成します。
bbs_all.tt
bbs_create.tt
bbs_edit.tt
bbs_error.tt
bbs_show.tt
ローカルサーバでテスト
(省略)
lighttpd 1.4.32 について
書いたら簡単なんだが、宮川さんのPlack::Middleware::LighttpdScriptNameFix のありがた~いコメントを見て(´;ω;`)っとなったことを告白しておきます。
引用:
This middleware fixes wrong SCRIPT_NAME and PATH_INFO set by lighttpd when you mount your app under the root path (“/”). If you use lighttpd 1.4.23 or later you can instead enable fix-root-scriptname flag inside fastcgi.server instead of using this middleware.
#宮川さんといえば、Plagger を未だに愛してやまない私ですが、ネット検索しても2008年とかその辺で時が止まっていて、plagger.orgドメインもなんか・・・な感じのサイトになってるし。
#みんなどうしているんだろうか。Yahoo Pipes とかも触ってみたけどなんかわくわく感がないし。Ypacとか申し込んだけど仕事でいけなかったしくっそ。おれPla++
脱線しましたが、コンフィグサンプルは以下です。動いているものを晒します。
要点は、fastcgi.server の設定で fix-root-scriptname を指定し、且つ “/” を指定しているところです。
うっは、まとまってねーー。