バーチャルホストで複数の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の設定に上記の注意が必要です。