パーソナルツール
現在の場所: ホーム plone カスタマイズ CacheFu + Varnish
書いた本
Plone 完全活用ガイド の Chapter 1, 2, 3, 11 を執筆しました。
plone のインストール、使い方から、機能・デザインのカスタマイズ、プロダクトの作り方まで、 plone のすべてがぎゅっと詰まっている書籍になっていると思います。
plone に興味がある人から、すでに使いこなしている方まで、ぜひ読んでみてください。
Plone 完全活用ガイドのサポートページ
ナビゲーション

 
文書操作

CacheFu + Varnish

作成者 takanori 最終変更日時 2008年05月27日 12時49分

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/varnishvarnish.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 を選択して、設定画面を表示します。

CacheFuの設定画面

とりあえずここでは簡単に 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 のドメインとポート番号を指定します。

以上で、 varnishCacheFu を組み合わせて plone サイトのキャッシュを行うための設定は終了です。

あとは CacheFu 側で細かいキャッシュに関する設定(どういうヘッダを返すか等)を行うことになります。


Powered by vine linux, python, zope, plone, coreblog