CacheFu + Varnish
plone のコンテンツをキャッシュする仕組み CacheFu と、HTTP アクセラレータ Varnish を組み合わせて、plone サイトを高速化する方法について説明します。
Varnishの設定
インストール
ハイ・パフォーマンスなHTTPアクセラレーター varnish をインストールします。
Vine Linux 用の RPM は存在しないため、src.rpm から Vine Linux 用の RPM を構築してインストールします。
% rpmbuild --rebuild varnish-1.1.2-5.src.rpm % cd ~rpm/RPMS/i386 % ls varnish-1.1.2-5.i386.rpm varnish-libs-devel-1.1.2-5.i386.rpm varnish-libs-1.1.2-5.i386.rpm % sudo rpm -i varnish-1.1.2-5.i386.rpm varnish-libs-1.1.2-5.i386.rpm
varnish の RPM をインストールすると、主には下記のファイルがインストールされます。 詳細は rpm -ql varnish などして確認してください。
- /etc/init.d/varnish varnish の制御スクリプト
- /etc/init.d/varnishlog varnish のログデーモンの制御スクリプト
- /etc/sysconfig/varnish varnish の設定ファイル
- /etc/varnish/default.vcl vcl(Varnish Configuration Language)で記述された設定ファイルの例
- /usr/sbin/varnishd varnish の本体
- /var/lib/varnish キャッシュなどを保存するディレクトリ
- /var/log/varnish ログ出力ディレクトリ
OS起動時に varnish、varnishlog が自動的に立ち上がるように設定します。
% chkconfig --list | egrep varnish varnish 0:off 1:off 2:off 3:off 4:off 5:off 6:off varnishlog 0:off 1:off 2:off 3:off 4:off 5:off 6:off % sudo chkconfig varnish on % sudo chkconfig varnishlog on % chkconfig --list | egrep varnish varnish 0:off 1:off 2:off 3:on 4:on 5:on 6:off varnishlog 0:off 1:off 2:off 3:on 4:on 5:on 6:off
設定ファイルの作成
CacheFu に付属している、設定ファイルを生成するスクリプトを使用して、varnish 用の設定ファイルを作成します。
(apache用、squid用もあります)
後述する、定義ファイル makeconfig.cfg に必要な情報を記述して、 PYTHONPATH に zope の python を設定して実行します。 (makeconfig.cfg の記述方法については後述します。)
% tar xfz CacheFu-1.1.2.tar.gz % cd CacheFu-1.1.2/cachefu-proxy-configs/varnish-apache % vi makeconfig.cfg % setenv PYTHONPATH /usr/lib/zope/lib/python/ % python makeconfig Configuration file [makeconfig.cfg]: Template directory [templates]: Output directory [output]: Generating files for varnish behind apache Generating .../output/deploy Generating .../output/httpd.conf Generating .../output/varnish-start Generating .../output/varnish-stop Generating .../output/varnish.vcl
すると、 output ディレクトリに以下の5つのファイルが生成されます。
- deploy 各種ファイルを配置するスクリプト
- httpd.conf Apache の設定ファイルに書き込む、varnish 用の記述
- varnish-start varnish を起動するための Shell スクリプト
- varnish-stop varnish を停止するための Shell スクリプト
- varnish.vcl plone と組み合わせて使用するための、varnish の設定ファイル
このうち、varnish-start, varnish-stop は RPM でインストールした場合は /etc/init.d/varnish スクリプトを使用するため不要です。
必要な設定作業としては、 httpd.conf の記述を追加することと、 varnish.vcl を適当なディレクトリに配置し、起動スクリプトで読み込むようにすることです。
ここでは /etc/varnish に varnish.vcl を配置し、 /etc/sysconfig/varnish を以下のように書き換えます。 ついでに、varnish へのアクセス元を localhost のみにしておきます。
変更前:
DAEMON_OPTS="-a :6081 \
-T localhost:6082 \
-f /etc/varnish/default.vcl \
-u varnish -g varnish \
-s file,/var/lib/varnish/varnish_storage.bin,1G"
変更後:
DAEMON_OPTS="-a localhost:6081 \
-T localhost:6082 \
-f /etc/varnish/varnish.vcl \
-u varnish -g varnish \
-s file,/var/lib/varnish/varnish_storage.bin,1G"
makeconfig.cfg
CacheFu と varnish を組み合わせて使用するときの各種設定ファイルを生成します。 ファイルを生成するための設定ファイル makeconfig.cfg には下記のように記述します。
[varnish] # address/port that varnish should listen to (defaults to 127.0.0.1:8000) address: 127.0.0.1 port: 6081 # size of cache in MB (defaults to %50 of filesystem free space) cache_size: 1000 # varnish paths (see examples below) binary: /usr/sbin/varnishd config_dir: /etc/ cache_dir: /var/lib/varnish [virtualhosts] # Syntax --> host: zope_domain:zope_port/zope_path takanory.net: localhost:8080/takanory
重要な設定項目について説明します。
virtualhosts plone 用のバーチャルホストの設定を記述します。 ホスト名: zopeサーバのホストまたはIP:ポート番号/パス の形式で記述します。
バーチャルホストについては Apache 2との連携 を参照してください。
httpd.conf
生成された httpd.conf ファイルのうち、RewriteRule に関する部分は以下のような形式になります。
RewriteRule ^/(.*)/$ http://127.0.0.1:6081/VirtualHostBase/http/takanory.net:80/takanory/VirtualHostRoot/$1 [P] RewriteRule ^/(.*) http://127.0.0.1:6081/VirtualHostBase/http/takanory.net:80/takanory/VirtualHostRoot/$1 [P]
この内容を Apache の httpd.conf に記述します。
サービス起動
設定を反映させるために、varnish の起動と apache への設定ファイルの再読み込みを行います。
% sudo /etc/init.d/varnish start % sudo /etc/init.d/apache2 reload
この状態で、plone サイトにアクセスしてコンテンツが表示されれば、varnish が正常に動作しているということが確認できます。
また varnishstat コマンドで、状態を確認することができます。
CacheFuの設定
最後に、plone 側で CacheFu の設定を行います。ここでは CacheFu 1.1.2 がすでにインストールされているものとします。
サイト設定→Cache Configuration Tool を選択して、設定画面を表示します。
とりあえずここでは簡単に plone 側で Cache を有効にするために、以下の項目を設定します。
- Enable CacheFu CacheFu を有効にするためにチェックします。
- Active Cache Policy Cacheの方針として「Default Cache Policy (v1.1.2)」を選択します。
- Proxy Cache Purge Configuration varnish と apache を組み合わせているので「Purge with VHM URLs」を選択します。
- Site Domains このサイトのドメインとポート番号を指定します。
- Proxy Cache Domains Cache する varnish のドメインとポート番号を指定します。
以上で、 varnish と CacheFu を組み合わせて plone サイトのキャッシュを行うための設定は終了です。
あとは CacheFu 側で細かいキャッシュに関する設定(どういうヘッダを返すか等)を行うことになります。
