Apache 2との連携
Zopeサーバを直接ポート80番で公開しないで、Apache 2と連携して公開する方法について説明します。また、Apache 2側で画像のキャッシュ等の設定を行なうことにより、Zopeサーバの負荷が軽減されます。
目次
- VirtualHostMonsterを生成[vhm]
- Apache 2をインストール[install]
- Windowsにインストール[wininstall]
- Apache 2とZopeを連携[connect]
VirtualHostMonsterを生成[vhm]
Apache 2経由でアクセスするときには、URL等がZopeサーバの時とは変更になります。そのため VirtualHostMonster という Zope に標準で入っているプロダクトを使用して、
- Zopeの管理画面(http://localhost:8080/manage)をWeb browserで表示し、ルートフォルダにアクセスします。
- 右上のリストから
VirtualHostMonsterを選択して追加します。Idは何でもいいですが、わかりやすくするためにVirtualHostMonsterというIdにしておきます。
- 追加されるとルートフォルダはこんな感じになります。
Apache 2をインストール[install]
次に、Apache 2をインストールします。
Vine Linuxにインストールする場合は簡単で、下記のコマンドを実行するだけです。
% sudo apt-get install apache2
Windowsにインストール[wininstall]
- Windowsにインストールする場合は、Apache HTTP Serverのダウンロードページ から、最新版のWin32 Binary(apache_2.0.52-win32-x86-no_ssl.msi)をダウンロードします。
- 次にダウンロードしたファイルを実行するので、普通にインストールします。途中でServerName等の設定項目がでてきますが、あとで変更できるのでここではそのままにしてインストールします。
この段階で、Apache 2を起動しWeb browserでアクセスしてトップページが表示されることを確認します。
Apache 2とZopeを連携[connect]
Apache 2とZopeを連携させる設定を行ないます。例として以下のような設定を行なうこととします。
- サーバ名は www.example.com
- サーバの管理者は admin@example.com
- http://www.example.com/Zope にアクセスすると、Zopeサーバのトップ(http://localhost:8080/ を表示する。
- http://blog.example.com/ とblogのトップ(http://localhost:8080/blog/)を表示する。
設定ファイルの編集[conf]
エディタでApache 2の設定ファイルを開きます。Windowsでは
C:\Program Files\Apache Group\Apache2\conf\httpd.conf
Vine Linuxでは /etc/apache2/conf/httpd.conf に設定ファイルがあります。
まず ServerAdmin という行があるので、もし # でコメントアウトされていたらそのコメントアウトをはずして、管理者のメールアドレスを記述します。::
ServerAdmin admin@example.com
次に ServerName という行があるので、もし # でコメントアウトされていたらそのコメントアウトをはずして、サーバ名を記述します。::
ServerName www.example.com:80
Apache 2とZopeが連携できるように、Apach 2のproxyモジュール(mod_proxy)と、URL書き換えモジュール(mod_rewrite)を使用できるようにします。もし、以下の行が # でコメントアウトされていたら、コメントをはずして有効にします。::
LoadModule proxy_module modules/mod_proxy.so LoadModule proxy_connect_module modules/mod_proxy_connect.so LoadModule proxy_http_module modules/mod_proxy_http.so LoadModule proxy_ftp_module modules/mod_proxy_ftp.so LoadModule rewrite_module modules/mod_rewrite.so
最後に、実際にApache 2とZopeを連携させるためのバーチャルホストの設定をファイルに追加します。:
NameVirtualHost *
<VirtualHost *>
ServerName www.example.com
RewriteEngine On
RewriteRule ^/Zope(.*) http://localhost:8080/VirtualHostBase/http/www.example.com:80/VirtualHostRoot/_vh_Zope/$1 [L,P]
</VirtualHost>
<VirtualHost *>
ServerName blog.example.com
RewriteEngine On
RewriteRule ^(.*) http://localhost:8080/VirtualHostBase/http/blog.example.com:80/blog/VirtualHostRoot/$1 [L,P]
</VirtualHost>
編集が終了したら、設定ファイルを保存します。
Apache 2の再起動[restart]
設定終了後、Apache 2を再起動します。再起動する場合は、まず最初に設定ファイルに文法的に間違いがないかチェックしてから、行ないます。
- Vine Linux上のApache 2を再起動する場合は、以下の手順で 設定ファイルの確認→設定ファイルの再読み込み を実行します。
% sudo /etc/init.d/apache2 configtest % sudo /etc/init.d/apache2 reload
- Windows上のApache 2を再起動する場合は、以下の手順で 設定ファイルの確認→Apache 2の再起動 を実行します。
- スタートメニュー→プログラム→Apache HTTP Server 2.0.52→Configure Apache Server→Test Configratuon
- スタートメニュー→プログラム→Apache HTTP Server 2.0.52→Control Apache Server→Restart
Apache 2が再起動したら、Web browserで下記のURLにアクセスし、正しく画面が表示されることを確認します。
- http://www.example.com/Zope/
- http://www.example.com/Zope/manage
- http://blog.example.com/
Apache 2を信頼できるproxyに設定[proxy]
ここまでの設定でApache 2とZopeサーバの連携は行なえますが、Zopeサーバ側でWeb browserのIPアドレスがとれるようにするために、以下の設定を行なうことをおすすめします。
それは、信頼できる proxyサーバを指定する
trusted-proxyです。ここにproxyとして設定したApache 2サーバのIPアドレスを指定します。ZopeサーバとApache 2が同じマシン上で動作している場合は、以下の記述をzope.confファイルに追加します。
trusted-proxy 127.0.0.1
zope.conf の編集後、Zopeサーバの再起動を行ないます。こうすることにより、Zopeサーバ側でも REQUEST.getClientAddr() とすると Web browser のIPアドレスを取得できるようになります。
以上で、Apache 2とZopeの連携を行なえるようになりました。
ただし、上記の設定は基本的な設定です。他にもApache 2側で、キャッシュの設定や、ワームのログを出さないようにしたり、各VirtualHost毎にアクセスログを出力したりといった設定を行なったほうが、より安全で利便性があがります。
これらの設定については Apache 2のログ出力設定 を参照してください。