やっぱりZopeとApacheの両方で別ポートを開けるのがいやだし、ApacheをFrontendにして使いたいので、連携を検討。
JackさんのJ-Lab wikipageによると3種類くらいやり方があって、FastCGIを使うとheaderでもApacheが応答しているように見えるらしい。というわけでFastCGI方式を採用。
hide fukumotoさんのabsent minded logのZope on VDS/VPSをまるまる参考に作業した。
Zopeと接続するunix domain socketは/tmp/foo.socを使うことにする。
まずはzope.confの設定。サンプルにもとからあるfast-cgiの設定行のコメントを外し、addressでunix domain socketのパスを指定する。
<fast-cgi>
address /tmp/foo.soc
</fast-cgi>
さらに、文字コード周りの設定を追加。euc_jpでいいのかちゃんと調べてないけど、とりあえずこれでいいや。
rest-input-encoding euc_jp
rest-output-encoding euc_jp
zopeを再起動して、/tmp/foo.socができていることを確認。
続いてapacheの設定。apache上でzopeのdocument rootは/usr/local/www/data/barにする。このとき、/usr/local/www/data/barというふぁいるもディレクトリも作ってはいけない。
FastCGIは使えるようにした上で、さらに以下の設定をhttpd.confに追加。
<IfModule mod_fastcgi.c>
FastCgiIpcDir /tmp
FastCgiExternalServer /usr/local/www/data/bar \
-socket foo.soc \
-pass-header Authorization
<Location /myblog>
SetHandler fastcgi-script
</Location>
</IfModule>
さらに,文字化け防止のために
AddDefaultCharset EUC-JP
あとはApacheを再起動すれば終了。
動作確認はhide fukumotoさんのZope on VDS/VPSを参照。