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を参考にさせて頂いております。小川宏高様、ありがとうございます。
設定方法
目次
- mod_fastcgiをportinstallする。
- httpd.confを設定する。
- CPANからFCGIとCGI::Fastモジュールをinstallする。
- MTにUnofficial Patchをあてる。
- dispatch.fcgiを用意する。
- RewriteRuleを設定する。
- mt-config.cgiを変更する。
- Apacheを再起動して動作確認する。
- 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 FCGI
、install 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.fcgiをdispatch.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に詳しくないので誰かよい方法があれば教えてください。(_ _)
コメント / トラックバック