Catalyst ことはじめ
散々既出なのだし、もっと知識豊富でタメになるエントリを書いてる方がいるのに
今さら書くのはどーかと思うけど、とりあえずメモ程度に。
ただし、以下の条件つき。
- root 権限がない
- mod_perl は使えない
インストール
一般ユーザが、CPANを使ってモジュールをインストールする方法は
前に書いた記憶が。。。*1
そんなワケで、最近お気に入りな zsh から
$ perl -MCPAN -e 'install Task::Catalyst' $ perl -MCPAN -e 'install Catalyst'
でインストール。
インストールは途中問題が発生したり*2したけど
なんとか終了。
プロジェクト生成
アルバムCGIを作りたいので、それっぽい名前のプロジェクトを生成
$ cd public_html/cgi-bin/ # Project つくるばしょ $ catalyst.pl Album # Project 生成 $ cd Album # Project の中にはいるよ $ ./script/album_server.pl # とりあえず確認してみる
この状態で、サーバの 3000 番ポートにブラウザからアクセスすると
Catalyst の Demo ページが表示されました。
CGI として動かしたい
mod_perl が使えない & モジュールが一般ユーザのディレクトリにインストールされているため
CGI として動かすためにちょっとした準備。
script/ の中に CGI として動かすのに必要な設定が書いてあるので
それをコピーして
$ pwd /home/yuki/public_html/cgi-bin/Album $ cp script/album_cgi.pl album.cgi $ vi album.cgi
コピーした album.cgi に
# モジュールをインストールしてあるディレクトリへの path use lib '/path/to/module/dir';
を書き加えて保存。
ブラウザから http://servername/~yuki/cgi-bin/Album/album.cgi にアクセスし
しっかり動いてるのを確認しました。
問題点。わからないこと。
この、CGIで動いている状態だと F5 などでページをリロードすると
画像、CSS が読み込まれなくなってしまう。。。
読み込まれない状態で、もう一度リロードすると
今度は読み込まれる。。。
で、もう一度リロードすると、また読み込まれない。。。
この状況のループになってしました。
たぶん、Catalyst::Plugin::Static::Simple の使い方に問題がありそうなんだけど。。。
おまけ: debian etch + apache2 + mod_perl2 で使う
家の貧弱サーバ (200MHz 64MB) なら root 権限があるので
mod_perl2 で動かせそう!?
と思い、インストール。
さすが root、かくがちがった。
# aptitude install libapache2-mod-perl2
インストールもすぐに終了*3して、apache の設定に。
まずは mod_perl を有効に
# a2enmod perl # mod_perl 有効に This module is already enabled! # あ、ごめんなしあ><
site-enabled なファイル mod_perl で動くように設定を書き書き。
# vi /etc/apache2/site-enabled/mysite
以下が書き加えた後の site-enabled な設定ファイルの内容
NameVirtualHost *:80 <VirtualHost *:80> DocumentRoot /www/public ...... Alias /album/ /www/catalyst/Album/ PerlOptions +Parent PerlSwitches -I/www/catalyst/Album/lib PerlLoadModule Album PerlTransHandler Album <Location /album> SetHandler modperl PerlResponseHandler Album Options +ExecCGI </Location> ...... </VirtualHost>
この辺に関しては
- http://www.ishihara.ne.jp/blog/archives/2005/09/apache20_mod_pe_1.html
- http://d.hatena.ne.jp/webdoraku/20061117/p2
が、とてもとてもとても役に立ちました。
とてもとてもとてもとても感謝です。
これで
# /etc/init.d/apache2 force-reload
で apache を再起動し
http://servername/album/
にアクセスすると、無事に mod_perl な環境で Catalyst が動くことが確認できました。
おまけ: mod_perl のメモリ消費量
# top PID USER PR NI VIRT RES SHR S %CPU %MEM TIME+ COMMAND 5047 www-data 9 0 21740 13m 8504 S 0.0 21.4 0:04.70 apache2 5044 www-data 9 0 21464 12m 8824 S 0.0 21.1 0:04.06 apache2 5046 www-data 9 0 21224 12m 9152 S 0.0 20.5 0:03.95 apache2 5045 www-data 9 0 21204 12m 9156 S 0.0 19.7 0:03.89 apache2 5038 root 9 0 20568 9024 7712 S 0.0 14.4 0:16.13 apache2 # vmstat procs -----------memory---------- ---swap-- -----io---- -system-- ----cpu---- r b swpd free buff cache si so bi bo in cs us sy id wa 1 0 26872 1752 2496 22968 0 0 2 2 3 14 0 0 99 0
ぎゃー。
もうちょと頑張れるサーバが必要な気がします。