高速に動作させる
adiaryは SpeedyCGI, FastCGI, mod_perl2に対応しています。ここではそれぞれ設定方法について述べます。
共通の注意点
自前サーバ等で動作させる場合*1、いずれかの設定を行うことで数倍以上のパフォーマンスの向上が見込めます。またシステム設定からページキャッシュ機能(Ver3.10以降)を使用すると更に表示を高速化することができます。
adiaryのバージョンアップ時、.pmファイル書き換え時等のモジュールのリロードは内部で自動的に行われます。いずれの場合もApache等の再起動は不要です。
FastCGI
Apache側にプロセス管理モジュールを入れるタイプのキャッシュ環境です。fcgiではなくfcgidを使うことを推奨します。
apt-get install libapache2-mod-fcgid libfcgi-perl
Apacheでモジュールを有効にする必要があります。/etc/apache2 などの設定ディレクトリに移動します。
cd mods-enabled ln -s ../mods-available/fcgid.load ln -s ../mods-available/fcgid.conf vi fcgid.conf
confの設定詳細はApacheのマニュアルをみてください。いくつか注意点だけ触れておきます。
Fcgidはデフォルトで「フォームの最大送信サイズが128KB」「タイムアウトが40秒」などのかなり強い制限値に設定されています。この設定ではインポート処理やアルバム機能で問題となりますので、適当に緩和してください。
<IfModule mod_fcgid.c> FcgidMaxRequestLen 131072 FcgidIOTimeout 120 </IfModule>
最後に、adiaryの実行ファイルを adiary.fcgi に変更してください。
mod_perl2
Apache自体にperlを組み込んでしまうという形式のキャッシュ環境です。オーバーヘッドがもっとも少なく最高の性能(Req/sec)を発揮します。
mod_perl (Ver1)でも動くはずですが、特にサポートはしません。
apt-get install libapache2-mod-perl2
Apache側でモジュールを有効にします。/etc/apache2 などの設定ディレクトリに移動します。
cd mods-enabled ln -s ../mods-available/perl.load
設定は default.conf(site-enabled/000-default) 等で行います。
<IfModule mod_perl.c> PerlSwitches -I/<path-to>/adiary/lib PerlOptions +ParseHeaders <Directory "/<path-to>/adiary/"> <Files ~ "\.mod\.cgi$"> SetHandler perl-script </Files> PerlResponseHandler ModPerl::Registry </Directory> </IfModule>
adiaryの実行ファイルを adiary.mod.cgi に変更してください。
Ver2の頃は(pmファイルを置き換えた直後など)いまいち安定しない部分がありましたが、Ver3からモジュールのリロードまわりを自前で用意したため、設定も簡潔になり安定度も向上しました。
注意
- 名前空間が衝突するため adiary Ver2以前と adiary Ver3以降を同一の mod_perl で動作させることはできません。
- 外部DBを利用する場合、mod_perl環境ではDB設定の{Pool=>1}を指定しない方が無難かもしれません。*2
SpeedyCGI
Perl自体をラップしてスクリプトを常駐させます。
最もお手軽でおすすめの方法でしたが、長らくSpeedyCGI側がメンテナンスされていません。そのせいか最近はImage::Magickと相性が悪く、画像処理関連で不明なエラーを頻発します。利用は控えたほうが懸命です。
apt-get install speedy-cgi-perl
あとは adiary.cgi の代わりに adiary.speedy.cgi を実行するだけです。
最新のDebian系ではパッケージがありません。こちらを参照にソースから入れることは可能です。