高速に動作させる

adiaryは SpeedyCGI, FastCGI, mod_perl2に対応しています。それぞれの設定方法について述べます。

共通の注意点

以下のいずれかの設定をすることで数倍以上のパフォーマンスアップが見込めます。またシステム設定からページキャッシュ機能(Ver3.10以降)が使用できるようになります。

adiaryのバージョンアップ時、.pmファイル書き換え時のモジュールのリロードは内部で自動的に行われます。いずれの場合もApache等の再起動は不要です。

SpeedyCGI

perl自体をラップして常駐してスクリプトを実行します。CGI動作の約5倍のパフォーマンスを発揮します。

最もお手軽でおすすめの方法でしたが、メンテナンスされてないのかImage::Magickとの相性が悪く、画像処理関連で稀に意味不明なエラーが起きます。

# apt-get install speedy-cgi-perl

あとは adiary.cgi の代わりに、adiary.speedy.cgi を実行するだけです。

最新のDebian系ではパッケージがありません。こちらを参照にソースから入れることは可能です。

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}を指定しない方が無難かもしれません。*1

*1 : adiary Ver2の時代、時間が経つとDBサーバのコネクションを食いつぶす不具合がありました。Ver3以降は確認していません。

OK キャンセル 確認 その他