Apache2.2.3(FreeBSD ports)環境でMT3.2-ja-2をFastCGI化する

つい最近akiyan.comで動いているMovable Type(3.2-ja-2)をFastCGI化しました。結果、MTの管理画面が劇的に高速化されました。管理画面の速さはブログを書くうえでモチベーションに大きく影響するので、導入してよかったです。

導入にあたってあちこち検索したのですがApache2.2.3(FreeBSD ports)環境でFastCGI化した記事が見つからなかったので、ここに手順を記しておきます。導入したサーバーは FreeBSD 5.4-Release です。

なお、この設定手順はMT 3.2 on Apache + FastCGI - Ogawa::Memorandaを参考にさせて頂いております。小川宏高様、ありがとうございます。

設定方法

目次

  1. mod_fastcgiをportinstallする。
  2. httpd.confを設定する。
  3. CPANからFCGIとCGI::Fastモジュールをinstallする。
  4. MTにUnofficial Patchをあてる。
  5. dispatch.fcgiを用意する。
  6. RewriteRuleを設定する。
  7. mt-config.cgiを変更する。
  8. Apacheを再起動して動作確認する。
  9. FastCGI使用時はMTを改造したらApacheを再起動

1. mod_fastcgiをportinstallする

portsのwww/mod_fastcgiをインストールします。portupgradeがインストールされていればportinstall www/mod_fascgiで。されていなければcd /usr/ports/www/mod_fastcgi後にmake; make installしてください。

2. httpd.confを設定する

httd.conf (/usr/local/etc/apache22/httpd.conf)に以下を書き足します。

<IfModule fastcgi_module>
AddHandler fastcgi-script .fcgi
FastCGIConfig -maxClassProcesses 4 -minProcesses 1
FastCgiIpcDir /tmp
</IfModule>

LoadModuleはmod_fastcgiをportsインストールしてあれば自動で書き足されているはずなので書き足し不要です。LoadModule fastcgi_module libexec/apache22/mod_fastcgi.soと書かれた行があれば、まずOKでしょう。

3. CPANからFCGIとCGI::Fastモジュールをinstallする

perl -MCPAN -e shellでシェルを起動し、install FCGIinstall CGI::Fastを実行してperlモジュールをインストールします。シェルを抜けるにはexitです。

4. MTにUnofficial Patchをあてる

MT 3.2日本語版Unofficial Patch - Ogawa::Memorandaで公開されているUnofficial Patchをあてます。このパッチを当てることによって、FastCGI環境などで生じるMTの不具合がまとめて修正されるそうです。なお、パッチがあたったMT3.2-ja-2はfcgi環境でなくても正常に動作すると思われます。

5. dispatch.fcgiを用意する

http://code.as-is.net/svn/mt/fastcgi/trunk/mt-dispatch.fcgidispatch.fcgiとしてMTDIR(mt.cgiがあるディレクトリ)に置き、実行権限(755や705など)を与えます。

6. RewriteRuleを設定する

MTDIRかそれを含むディレクトリの.htaccessに以下のRwriteRuleを書きます。

RewriteEngine on
RewriteRule ^(MTDIRまでのパス)/mt\.fcgi(.*)$          /(MTDIRまでのパス)/dispatch.fcgi$1 [L]
RewriteRule ^(MTDIRまでのパス)/mt-comments\.fcgi(.*)$ /(MTDIRまでのパス)/dispatch.fcgi$1 [L]
RewriteRule ^(MTDIRまでのパス)/mt-tb\.fcgi(.*)$       /(MTDIRまでのパス)/dispatch.fcgi$1 [L]
RewriteRule ^(MTDIRまでのパス)/mt-search\.fcgi(.*)$   /(MTDIRまでのパス)/dispatch.fcgi$1 [L]

akiyan.comの場合は^cgi/mt/mt\.fcgi(.*)$ /cgi/mt/dispatch.fcgi$1 [L]でした。

ちなみにMT 3.2 on Apache + FastCGI - Ogawa::Memorandaで示されているRewriteRuleは私の環境ではなぜか動きませんでした。どうもRewriteRuleはApache1.3とApache2.2で挙動が異なる気がします。詳しくは未調査です。

7. mt-config.cgiを変更する

mt-config.cgiの AdminScript、CommentScript、TrackbackScript、SearchScriptを以下のように変更します。

AdminScript mt.fcgi
CommentScript mt-comments.fcgi
TrackbackScript mt-tb.fcgi
SearchScript mt-search.fcgi

8. Apacheを再起動して動作確認する

/usr/local/etc/rc.d/apache22.sh configtestで設定を確認し、/usr/local/etc/rc.d/apache22.sh restartでApacheを再起動します。無事再起動したら今までhttp://www.example.com/cgi-bin/mt/mt.cgiでMT管理画面にアクセスしていたURLをhttp://www.example.com/cgi-bin/mt/mt.fcgiに変更(.cgi.fcgi)してアクセスします。今までの画面が出ればFastCGI化は成功だと思われます。

9. FastCGI使用時はMTを改造したらApacheを再起動

FastCGIでMTを動作させている場合、MT本体のコードを直接書き換えてもすぐには反映されません。反映させるには毎回Apacheを再起動させる必要があります。他の方法があったり設定で調整できたりするかもしれませんが私自身FastCGIに詳しくないので誰かよい方法があれば教えてください。(_ _)

コメント / トラックバック

コメントは受け付けていません。