2006-12-23
■ [catalyst][server]さくらインターネットのCGIでCatalystを動かす設定(完全版?)

さくらインターネットでCatalystを動かす設定 - LAPISLAZULI HILL#Catalyst - Catalystグループの続きです.あれから半分あきらめていたんですが,ようやく思い通りのURLで公開できるようになったのでメモメモ
ぶっちゃけるとCatalyst Advent Calendar - Day 10の方法そのまんまですので,そちらを参考にしてもよし
下準備
- CatalystはCPANでインストール済
参考:レンタルサーバでPlagger #0 CPAN設定 - LAPISLAZULI HILL#diary - アプリケーションの場所はどこでもok
userディレクトリのwww以下でないところをオススメしておきます
CPANモジュールは~/perl/lib(/home/username/perl/lib)がインストール先,アプリケーションは~/MyApp(/home/username/MyApp)に作成したとして書きます
script/myApp_cgi.plの書き換え
apacheの環境変数を書き換えようと思ったんですが,できなかったのでuse libにmoduleの検索パスを追加します
【~/MyApp/script/myapp_cgi.pl】
use lib '/home/username/perl/lib', "$FindBin::Bin/../lib";
書き換えてから,動作を確認してみました
> perl myapp_cgi.pl
@INC関係のエラーが出てなければ成功しているはずです
シンボリックリンクの作成
apache公開ディレクトリにscriptディレクトリのシンボリックリンクを張ります
> cd ~/www > ln -s ~/MyApp/script script
.htaccessの作成
作成するのは~/www/.htaccessです.http://username.sakura.ne.jp/でアクセスできるように設定します.もちろんドメインでアクセスできるように設定されていればそのドメインでok
AddHandler cgi-script .pl RewriteEngine On RewriteCond %{REQUEST_URI} !^/?script/myapp_cgi.pl RewriteRule ^(.*)$ script/myapp_cgi.pl/$1 [PT,L]
http://username.sakura.ne.jp/にアクセスして動作していることを確認します
----
結局mod_rewriteの設定をよくわかってなかったのが敗因ですね.今後の課題としては複数のアプリケーションの稼働とサブドメインでの運用でしょうか
(追記)
こんなふうにするとディレクトリを分けてやれば2つでもいけました
それぞれ~/www/myappと~/www/myapp2の下にscriptディレクトリのシンボリックリンク張ってます
AddHandler cgi-script .pl RewriteEngine On RewriteCond %{REQUEST_URI} !^/myapp2/?script/myapp2_cgi.pl RewriteRule ^myapp2/(.*)$ myapp2/script/myapp2_cgi.pl/$1 [PT,L] RewriteCond %{REQUEST_URI} !^/myapp/?script/myapp_cgi.pl RewriteRule ^myapp/(.*)$ myapp/script/myapp_cgi.pl/$1 [PT,L]