内容へ移動
Cat Paw Software
ユーザ用ツール
ログイン
サイト用ツール
検索
ツール
文書の表示
以前のリビジョン
バックリンク
最近の変更
メディアマネージャー
サイトマップ
ログイン
>
最近の変更
メディアマネージャー
サイトマップ
トレース:
catalyst
この文書は読取専用です。文書のソースを閲覧することは可能ですが、変更はできません。もし変更したい場合は管理者に連絡してください。
====== Catalyst ====== ''注意:最近追ってないので情報が怪しいです!'' [[http://www.catalystframework.org/|Catalyst - Web Framework]] CatalystはPerlのMVC Webフレームワーク。各コンポーネントは、RailsのActiveRecord等のように固定ではなくPerlの様々なライブラリから選択可能。例えばViewにTemplate-ToolkitやMason、ModelとしてClass:DBIやDBIx::Classから選択することができる。 なお、Catalystとは化学用語で触媒のこと。触媒とは反応前後でそれ自体変化せずに他の物質の化学反応を促進する物質である。 環境 * CentOS 5 * Perl 5.8.8 * Catalyst 5.7 以下のはろーわーるどセットアップ手順はCatalyst知識ゼロの状態の人間が実際に動かしながら書いているため、間違いが多数あるかもしれません。注意してください。 ===== インストール ===== OSはCentOS5。GCCが入ってなければ場合は先に入れておけ。あとmysqlも <code> # yum intall gcc # yum intall gcc-c++ # yum install mysql # yum install mysql-server </code> mysql-serverと同時にインストールされるBD::mysqlはバージョンが多少古いが、Catalystをインストールするときに上書きされるので気にしない。 開発用パッケージをインストール <code> # cpan Catalyst::Devel </code> 本番環境など実行するだけならCatalyst::Runtimeを入れる <code> # cpan Catalyst::Runtime </code> ===== アプリケーションの作成 ===== Hogeアプリケーションの雛形を作成する。適当なフォルダで以下のコマンドを実行 $ catalyst.pl Hoge Hogeフォルダが作成され、中にアプリの雛形が作成される。以下のコマンドでテスト用サーバを起動(Railsにおけるwebrickみたいなの)できる。 $ cd Hoge $ ./script/hoge_server.pl サーバ起動時にスクリプトを変更しても反映されない。変更が即座に反映されるようにするにはrオプションで起動する。 $ ./script/hoge_server.pl -r 以下このHogeフォルダを${APP_ROOT}とする。 ===== コントローラ作成 ===== ヘルパースクリプトでコントローラを作成 $ ./script/hoge_create.pl controller Test 新しいコントローラクラス、''${APP_ROOT}/lib/Hoge/Controller/Test.pm'' が生成される。このコントローラはURLのパスが/test/以下の処理を担当する。 Test.pmはこんな感じ <code perl> # /test/ へのアクセス sub index : Private { my ($self, $c) = @_; $c->response->body('.....') } # URLに対応するサブルーチンが見つからない sub default : Private { my ($self, $c) = @_; $c->response->status(404); $c->response->body("not found"); } # パス ''/test/hello'' へのリクエストを処理するアクションメソッド sub hello : Local { my ($self, $c) = @_; # 処理 } # アクションメソッドの前処理 sub begin : Private { my ($self, $c) = @_; # 処理 } # アクションメソッドの前処理 sub auto : Private { my ($self, $c) = @_; # 処理 } # アクションメソッドの後処理 sub end : Private { my ($self, $c) = @_; # 処理 } </code> LocalだのPrivateだの見慣れないものはアトリビュートというらしい。 ''/test/hello''にアクセスした場合、以下の順番でsubが呼ばれる - begin : Private - auto : Private - hello : Local - end : Private autoとbeginの違いは、下の階層でオーバーライドされるかどうか。autoは <code> Root.pm - begin : Private - auto : Private - end : Private Piyo.pm - hello : Local Hoge.pm - auto : Private - hello : Local Hoge::Fuga.pm - begin : Private - hello : Local - end : Private </code> という感じでControllerを作ったとき /piyo/hello へリクエストすると - Root::begin - Root::auto - Hoge::hello - Root::end /hoge/hello へリクエスト - Root::begin - Root::auto - Hoge::auto - Hoge::hello - Root::end /hoge/fuga/hello を呼ぶと… - Hoge::Fuga::begin - Root::auto - Hoge::auto - Hoge::Fuga::auto - Hoge::Fuga::hello - Hoge::Fuga::end の順番に呼ばれる。 深い場所でbegin、endを定義するとオーバーライドされる。autoは浅い方から全て実行される。アクセス認可処理などは浅い方のautoに記述すると良い。 ===== モデル ===== * [[catalyst:dbic|DBICをモデルとして使う]] ===== ビュー ===== * [[catalyst:tt|Template Toolkitによるビュー作成]] ===== プラグイン ===== [[catalyst:plugin]] ===== 認証処理 ===== [[catalyst:auth]] ===== テスト用サーバ ===== 起動 $ ./script/hoge_server.pl * -r ファイル変更時に自動リロード * -k キープアライブを有効に * -f フォークして並列リクエスト処理 * -p 80 80番ポートで起動 ログをファイルに出してコマンドラインに復帰 $ ./script/hoge_server 1>hoge.log 2>&1 & ===== Apache(mod_perl)へのデプロイ ===== ==== mod_perlのインストール ==== 最近のLinuxディストリビューション(CentOS、Debian、Ubuntu等)ではApacheと一緒にインストールしてあることが多い。 ==== CatalystのApache用エンジンをインストール ==== $ sudo cpan Catalyst::Engine::Apache ==== 設定ファイル ==== catalystのディレクトリが /var/www/catalyst にあり、catalyst アプリケーションは Paulownia::Web で作成したとする。 $ catalyst.pl Paulownia::Web catalystアプリをドキュメントルートではなくパス /app にデプロイする場合 <code config> # ライブラリの場所を指定 PerlSwitches -I/var/www/app/Paulownia-Web/lib # catalystアプリケーションモジュールを読み込む PerlModule Paulownia::Web # staticディレクトリ以下を Apache に直接処理させる Alias /app/static /var/www/app/Paulownia-Web/root/static <Location /app/static> SetHandeler default-handler </Location> # catalystアプリケーションを /app にデプロイ <Location /cms> SetHandler perl-script PerlResponseHandeler Paulownia::Web </Location> # mod_perlのステータス監視用(Catalystアプリを動作させるには不要) <Location /perl-status> SetHandler perl-script PerlResponseHandeler Apache2::Status Order deny,allow Deny from all Allow from 127.0.0.1 </Location> </code> [[http://httpd.apache.org/docs/2.2/ja/mod/mod_alias.html#order|Aliasの順番]]に注意、逆にするとstatic以下もcatalystが配信してしまう。静的ファイルは Apache が直接配信するので、Static::Simpleプラグイン等を読み込ませる必要は無い。 ==== 権限 ==== mod_perlで実行した場合の権限は、ApacheのUser ディレクティブ、Group ディレクティブで設定したユーザ・グループの権限となる。 ==== mod_perlでカレントディレクトリが変わる ==== ので、./ とか使わずCatalystの機能を使ってディレクトリを取るべし デプロイ先のパス取得 $c->config->{home} catalystのrootディレクトリ取得 $c->config->{root} でmod_perl環境でもperlテストサーバでも同一コードでサーバのパスが取得できる
catalyst.txt
· 最終更新: 2010/01/28 06:32 by
127.0.0.1
ページ用ツール
文書の表示
以前のリビジョン
バックリンク
文書の先頭へ