この情報は古い情報です
意味のない情報ではないですが、VHM について問題があります。イマイチ設定メモとして残しておきます。参照は ApacheConf2をどーぞ。
- FastCGIによる接続とは
ソケットを使って、Apache と Zope を通信させる方法。ZServerも並行して動いています。
Apache と Zopeのホストを分けたいときにも必要です。
- 具体的な方法
- Zope の設定
/usr/local/zope/startの中の最後の行
exec /usr/local/zope/bin/python $cwd/z2.py "$@"
を
exec /usr/local/zope/bin/python $cwd/z2.py -F 10999 "$@"
にします。10999は適当なポート番号。ヨソとあたらなきゃなんでもいいです(8000番以降がいいですが)。
- 同一マシン上の場合には named pipe も使えます。
sniffer にひっかからないなどのメリットがあるかもしれません
- named pipe の作りかた
mknod /usr/local/zope/var/fcgi.soc p
# unix屋にとっては常識だけど、普通、知りませんよね(^^;;
このときは
exec /usr/local/zope/bin/python $cwd/z2.py -F $cwd/var/fcgi.soc "$@"
になります。
- Apache の設定
http://www.fastcgi.com/dist/
から mod_fastcgi-2.x.x.tar.gz をダウンロードします。
tar xzvf mod_fastcgi-2.x.x.tar.gz
cd mod_fastcgi-2.x.x
cp Makefile.AP2 Makefile
Makefile の中で
top_dir = /usr/local/apache2
となっているところを必要に応じて変えます(RedHat9,OS Xは /etc/httpd でした)
make
make install (要 root)
- httpd.conf
LoadModule fastcgi_module modules/mod_fastcgi.so
を追加、apacheを再起動します。
# 再度再起動が必要だが、ここでインストールエラーを切りわけたいので。
httpd.confの最後のほうにこんなエントリをかきます。
NameVirtualHost zope.who.com
<VirtualHost zope.who.com>
ServerName zope.who.com
DocumentRoot /usr/local/zope/doc/who
<Location />
SetHandler fastcgi-script
</Location>
</VirtualHost>
FastCgiExternalServer /usr/local/zope/doc/who \
-host localhost:10999 \
-pass-header Authorization
を追加し、apacheを再起動します。
/usr/local/zope/doc/who はファイルもディレクトリもなくてもokです。
Apache的には
- URL からどこを観にいくか算出
- それが !FastCgiExternalServer で指定した場所やその下だったら
- -host での指定ホスト:ポートを見にいく
みたいなので、
- !VirtualHostを設定し、
- !DocumentRoot を適当に指定し
- !FastCgiExternalServer を同一にすると
!VirtualHost で指定したサイト全体が zope にforwardされる。ということのようです。
Zope の /plone に plone site を作り、それを http://plone.who.com/ でアクセスさせたいときは
NameVirtualHost plone.who.com
<VirtualHost plone.who.com>
ServerName plone.who.com
DocumentRoot /usr/local/zope/doc/who
RewriteEngine On
RewriteCond %{REQUEST_URI} !=^/plone
RewriteRule ^/(.*) /plone/%{REQUEST_URI} [L]
</VirtualHost>
で・・・動きますが、/plone の直下には plone で始まるオブジェクトは作れません。
FastCGIの利点は、SiteRoot を使わなくていいことです。
欠点はちょっとめんどいのと、proxy 型でないため、場合によっては情報がZope に渡らないかもしれないことです。
# RewriteRule + VHM + SiteRoot はproxy型です