apache から zope につなぐ (VirtualHostMonster と Apache proxy_module)
fastcgi による apache から zope へのリクエスト割り振りを試みたところ, ZWiki のアイコン画像の参照だけうまくいかなかった.このとき var/log/apache/error.log には下記のように表示された.

[Fri Jun 15 14:37:34 2007] [error] [client 192.168.1.2] File does not exist: /var/www/misc_/ExternalEditor/edit_icon
[Fri Jun 15 14:37:34 2007] [error] [client 192.168.1.2] File does not exist: /var/www/misc_/ZWiki/star_icon
[Fri Jun 15 14:37:34 2007] [error] [client 192.168.1.2] File does not exist: /var/www/p_/sp

「 apache zope 」を検索語で調べると, Apache でアクセスを受け取り,一部を Zope に任せる方法は他にも幾つかあるらしい.そのうち「 VirtualHostMonster と Apache のプロキシ機能を使う方法」は簡単そうであり,丁寧な説明のあるページを見つけたので,これを用いることにした.
http://desktop.good-day.net/blog/index.cgi/software/zope/plone/publish.htm
http://desktop.good-day.net/blog/index.cgi/software/zope/plone/mapping.htm

試した環境および意図する設定は下記の通り.
machine: debian/etch (192.168.1.2)
zope2.9: LANでは port 8081 でリクエストを受けとる. http://192.168.1.2:8081/manage/ で ZMI .
外部からは apache を介して, port 80 で受けとる. http://foo/zp/manage/ で ZMI . (foo はインターネット上でのホスト名とする)
apache1.3: port 80 で受けとる.

つまり, http://foo/zp/* は Zope が,他は Apache が,という風にして処理の振り分けを行なう.

1. ZMI (Zope Management Interface) にて VirtualHostMonster 導入

http://192.168.1.2:8081/manage にブラウザでアクセスし,ZMI画面へ行く.「 VirtualHostMonster 」というプロダクトを右上の Add にて追加する. ID を尋ねられるが,空白でなければ適当でよいらしい.試した環境では,Add したところ下記のエラーがあらわれた.

Site Error
An error was encountered while publishing this resource.

Error Type: BadRequest
Error Value: This container already has a Virtual Host Monster

「すでにある」とのエラー内容から,あらためて ZMI の root folder を眺めると,最下行の virtual_hosting という ID のインスタンスが, VirtualHostMonster であることがわかった.つまり既に導入されていたということになるが,自分で行なった覚えはないので何らかのパッケージのインストール時のデフォルト設定だと思う.

とりあえず既に存在していることがわかったから,次に進む.

2. apache の proxy_module を有効にする

/etc/apache/modules.conf において proxy_module が存在するかを確認する.

% grep proxy_module /etc/apache/modules.conf
LoadModule proxy_module /usr/lib/apache/1.3/libproxy.so

存在しない場合は,同ファイルを管理する下記コマンドを実行してみる.

% sudo /usr/sbin/apache-modconf apache

試した環境では,これにより有効になった.

3. apache の VirtualHost 設定

/etc/apache/httpd.conf を編集し,ファイル末尾に下記を加える.

NameVirtualHost *
<VirtualHost *:80>
ServerName foo
ProxyRequests Off
<Directory proxy:*>
Order deny,allow
Allow from all
</Directory>
ProxyPass /zp http://localhost:8081/VirtualHostBase/http/foo:80/VirtualHostRoot/_vh_zp/
ProxyPassReverse /zp http://localhost:8081/VirtualHostBase/http/foo:80/VirtualHostRoot/_vh_zp/
</VirtualHost>

そして apache の再起動.

% sudo /etc/init.d/apache restart


4. 確認

LAN 内部では http://192.168.1.2/manage/ で ZMI に至ることを確認.
LAN 外部からの確認は, http://foo/zp/公開設定のページ に外からつながることを確認.
[PR]
by edogawadai_bio | 2007-06-17 05:55 | comp
<< apache から zope ... apache から zope ... >>