今までsuexecで動くスクリプトもmod_perlアプリも全てApache1.3使ってサーブしてたんだけど、 さすがにクローラーとかが一度に来たときなど、mod_perlでモジュールを読み込んだ分重たい子プロセスをたくさん走らせるのはなんだな、というわけでApache2.0をインストしてリバースプロキシ環境を導入したみた。 基本的にはTechknow Movable Type: Apache 2.0 + mod_proxy によるリバース・プロキシの構築を参考に、ってか必要なことはだいたいこれに書いてあって素晴らしいね。 今回構築した構成はこんな具合。
- Apache2.0 (with mod_proxy)
- フロントエンド。80番ポート。静的コンテンツやユーザー毎のsuexecで動かさなくてはいけないようなスクリプトを返す。 またリクエストされたURLによってはバックエンドのサーバーに飛ばす
- Apache1.3 (with mod_perl)
- バックエンド。8080番ポート。mod_perlのアプリケーションを動かす。 俺の場合、今のところ全てCatalystで作ったもの。
個人的な方針としてdebianのaptで入れれるものは全部それで入れる、というポリシーでやっているので、今回もaptでApache2.0を導入。設定も含め、とりわけ目だってはまったところは無いけど、軽く気になった点をメモっておく。
- 当初apache2-mpm-workerを選択したが、aptでphpモジュールを入れようとするとworkerが削除され、 代わりにapache2-mpm-preforkがインストールされる
- --suexec-docrootは/var/wwwになっているので、ソースを持ってきて修正を加えた後、debuildする
- Apache1.3と2.0のconfig設定の主な変更点はVirtualHost中のUserとGroup がSuexecUserGroupになったこと
- Apache2のVirtualHostディレクティブではCustomLogが2つ指定してあるとサーバー起動時にfailする
というわけで、移行が完了して今のところ不具合が見られずに、いい感じ。 abでmod_perl関係なしにcgiスクリプトの処理速度を測定したらApache2の方が速かったんだけど、これって進化しているってことなのかな?どちらにしろ、気分的には速く感じるよ。

