バーチャルホストで複数のCatalystアプリを起動
複数のCatalystアプリケーションを別々の名前ベースのvirtualhostで起動させようとしたところ、なんだかうまくいかなくて喫緊のタスクでもない(というか自宅での趣味プログラミングだし)のでとりあえず後回しにしていたのですが、httpd.confの設定を以下のようにすると普通に起動しました。
環境はCentOS4.5(i386)、Apache/2.0.52、Perl5.8.8。
NameVirtualHost *:80 PerlSwitches -I/var/www/Hoge/lib PerlModule Hoge <virtualhost *:80> ServerName www.hoge.net DocumentRoot /var/www/Hoge/root <location> SetHandler perl-script PerlHandler Hoge </location> </virtualhost> PerlSwitches -I/var/www/Foo/lib PerlModule Foo <virtualhost *:80> ServerName www.foo.net DocumentRoot /var/www/Foo/root <location> SetHandler perl-script PerlHandler Foo </location> </virtualhost>
要はport指定をしてやらないとダメなんですよね。
ポート指定をしない(たとえば*:80を127.0.0.1とか*にする)と、Apache起動時にCatalystアプリ(Perlモジュール)を読み込んではいるものの、virtualhostからのアクセスができないようで、デフォルトのドキュメントルートに飛ばされてしまいます。
静的なhtmlだけのページとかphpとかだと(環境によっては?)ポート省略してもいけてしまったりするので、そこが原因だという発想がありませんでした。。
あんまり情報ない事からしてCatalystアプリケーションをvirtualhostで複数動かすっていうのはあまりやるべきではないのかもしれないけど、ハード的な問題(手持ちのサーバが少ないとか)でどうしても試されたい場合はhttpd.confの設定に上記の注意が必要です。