同僚のohkawa氏が最近ブログをTP(Tokyo Promenade)に変更しました。

さすがにCで書かれているだけあってバカみたいに速い。。。

ちょっと羨ましさは感じますが、マネするのはしゃくな気もするので私はMovableTypeで突き進みます。

ただ、エントリが少ないにも関わらず既に若干の遅さを感じているのも事実。

そこでFastCGIを導入してMovableTypeの高速化を計ることとしました。

FastCGIとは

例えばMovableTypeはPerlで作られていますが、これらのインタプリタ言語では

ユーザからCGIにアクセスがある度に、プロセスの生成や破棄、実行できる状態にコンパイルを

行うためオーバーヘッドが大きく動作が遅くなります。

FastCGIではCGIのプロセスをメモリに記録しておくことでこれらのオーバーヘッドを軽減する

効果があります。

同じ高速化の方法としては、他にSpeedyCGIやmod_perlがあります。

環境

CetnOS5.4

Apache2.2.3系

MovableType5

設定

Perl モジュールのインストール

# cpan FCGI

# cpan CGI::Fast

httpd-develのインストール

# yum install httpd-devel

FastCGIライブラリ(fcgi)のインストール

# wget http://www.fastcgi.com/dist/fcgi-2.4.0.tar.gz

# tar zxvf fcgi-2.4.0.tar.gz

# cd fcgi-2.4.0

# export APXS=/usr/sbin/apxs

# ./configure

# make

# make install

mod_fcgidのインストール

# wget http://ftp.riken.jp/net/apache/httpd/mod_fcgid/mod_fcgid-2.3.5.tar.gz

# tar zxvf mod_fcgid-2.3.5.tar.gz

# cd mod_fcgid-2.3.5

# ./configure.apxs

# make

# make install

FastCGIの設定

fcgiの設定ファイル作成

# vi /etc/httpd/conf.d/fcgid.conf

MTの設定

# vi /etc/httpd/conf/httpd.conf

<Directory "/var/www/cgi-bin/mt">
AllowOverride None
Options None
Order allow,deny
Allow from all
<FilesMatch "^mt(?:-(?:comments|search|ftsearch|tb|cp))?\.cgi$">
SetHandler fcgid-script
</FilesMatch>
</Directory>

 

httpdサービスの再起動

設定が完了したらモジュールの読み込みと設定の反映のためhttpdを再起動します。

# /etc/init.d/httpd restart

確認

一時的にhttpd.confのServerTokenをFullに設定する

# vi /etc/httpd/conf/httpd.conf

ServerToken Full

# /etc/init.d/httpd restart

telnetで80番ポートに接続する

# telnet localhost 80

HEAD / HTTP/1.0

[ Enter ]

[ Enter ]

Server: Apache/2.2.3 (CentOS) DAV/2 mod_fcgid/2.3.5 ← mod_fcgidが表示されればOK

 

参考URL

MOVABLE TYPE.JP

http://www.movabletype.jp/documentation/developer/server/fastcgi.html