1台のマシン上で複数のアプリを動かすときのこととか

http://yusukebe.com/archives/09/05/02/212113.html で「apache + mod_perlだと同じメモリ上にモジュールを読み込むからメモリ効率が悪いけど、lighttpd + fastcgiだとアプリごとに起動するからそんなことは無くなる」ってあったけど、アプリ1とアプリ2で別々にモジュール読むより、1回メモリ上にロードしたやつを共有した方がいいのでは?とか思ったけどapachemod_perlがよく分かってないので多分俺の誤解だろうということで後回し。勉強が足りない。後で調べる。


さておき。


うちの自宅サーバでは複数のcatalystアプリと、静的コンテンツだけを扱うapacheのプロセスを立ち上げている。
mod_perlを組み込んでいないフロントエンドのapacheが1つと、mod_perlを組み込んであるバックエンドのapachecatalystアプリの数だけ。
catalystアプリのリクエストは、まず全てフロントのapacheが受け、静的コンテンツならフロントのapacheが返す。動的処理なら、バックエンドのapacheにRewriteRuleで飛ばしてる。
フロントには、あらかじめ各catalystアプリの分だけ、名前ベースのバーチャルホストを作っておく。
バックエンドのapacheは当然ポートも変えて起動しているので、RewriteRuleする際はポート指定して飛ばす。アプリ1の動的処理をアプリ2が受けるわけにはいかないので。


ロードバランサやpoundを使えば、フロントもアプリ毎に起動してもいいのだけど、フロントくらい全部一緒でええやん、なノリ。
まーフロントがアプリ毎にあるのも、1個だけなのも、どっちにも長所も短所あるので。


ときに、このフロント/バックでapacheを分けるってのはwebアプリにおいては常識なのだけど、一昨年に神に聞くまで知りませんでしたがな。