2007年04月29日
モジュールを追加
先日行った「MTのFastCGI化」の備忘録。これは自宅サーバーを公開している方向けかもしれません。
サーバーがスペックダウンした事により、MT再構築が困難(全体の再構築に1時間も掛かる)なので、少しでも動作を早くする為にFastCGIを導入する事にしました。
一つ断っておくと、当サイトのApacheのバージョンは1.3なので、2.2とはインストール方法が多少異なります。テスト環境は2.2だったので、どちらも書いておきますが[:sweat:] なお、ディストリビュージョンは「Vine Linux 3.2 & 4.1」です。
現サーバーは「Vine Linux 3.2」で、基本的にApache1.3がインストールされています。インストールが必要なものは「fcgi」「mod_fastcgi」なので、以下のように作業します。
まずは「fcgi」のインストール。
$ wget http://www.fastcgi.com/dist/fcgi-2.4.1-SNAP-0311112127.tar.gz
$ tar zxvf fcgi-2.4.1-SNAP-0311112127.tar.gz
$ cd fcgi-2.4.1-SNAP-0311112127
$ ./configure
$ make
$ su
# make install
Vine3.2のApacheはDSO対応なので、「mod_fastcgi」は以下のようにインストール。
$ wget http://www.fastcgi.com/dist/mod_fastcgi-SNAP-0404142202.tar.gz
$ tar zxvf mod_fastcgi-SNAP-0404142202.tar.gz
$ cd mod_fastcgi-SNAP-0404142202
$ /usr/sbin/apxs -o mod_fastcgi.so -c *.c
$ su
# /usr/sbin/apxs -i -a -n fastcgi mod_fastcgi.so
次にFastCGI用のPerlも追加します。
su
perl -MCPAN -e shell
install FCGI
install CGI::Fast
exit
あとはhttpd.confに以下を追加して保存、Apacheを再起動します。
LoadModule fastcgi_module modules/mod_fastcgi.so
#これ↑は自動で追加されるようです。ただし、パスが狂っている場合があるので、必ず確認してみましょう。<IfModule mod_fastcgi.c>
FastCgiIpcDir /tmp/fcgi_ipc/
AddHandler fastcgi-script .fcgi
FastCgiConfig -autoUpdate -idle-timeout 300
</IfModule>
「FastCgiConfig」の設定はいろいろ書かれていますが、気にしなくても良さそうです。ただ、「-idle-timeout」の値は「120」では再構築でタイムアウトする可能性が高いので、このくらいが良いみたいです。なお、ディレクトリ「/tmp/fcgi_ipc/」はOS上での設定は不要です。Apacheが自動的に作成してくれます。
その後MTのスクリプトの拡張子を「fcgi」に変更、mt-config.cgiにも変更を追加します。この辺は各所で情報が出ているので省きます。
これでMTをFastCGIで動作させられると思います(できなくても責任は取れませんが[:sweat:])。
Apache2.2の場合、「fcgi」は同じようにインストールできますが、「mod_fastcgi」は手順が異なります。と言うのは、「mod_fastcgi」がコンパイルできない(Vine4.1の場合のみ?)ので、ダウンロード・展開・ディレクトリ移動後に以下のようにします。また、libtool(※)を使ってインストールします。
$ wget http://www.fastcgi.com/dist/mod_fastcgi-SNAP-0404142202.tar.gz
$ tar zxvf mod_fastcgi-SNAP-0404142202.tar.gz
$ cd mod_fastcgi-SNAP-0404142202 ←ここまで同じ
$ wget http://kokogiko.net/fastcgi-apache22-patch ←パッチをダウンロード
$ patch -p1 < fastcgi-apache22-patch ←パッチを当てる
次にコンパイルするためのファイルをコピーします。また、ファイル内容のディレクトリがVineと違うので修正します。
$ cp Makefile.AP2 Makefile
$ vi Makefiletop_dir = /usr/local/apache2
↓
top_dir = /usr/lib/apache2
修正後に保存し、コンパイルしてインストールします。
$ make LIBTOOL=/usr/lib/apr-1/build/libtool ←libtoolを利用してインストール
$ su
# make install LIBTOOL=/usr/lib/apr-1/build/libtool ←libtoolを利用してインストール
こちらはhttpd.confに自動でモジュールが追加されなかったので追加しました(インストールも怪しげでしたがファイルはコピーされていました)。
LoadModule fastcgi_module modules/mod_fastcgi.so ←これ
#以下は必ず手動で追加します。
<IfModule mod_fastcgi.c>
FastCgiIpcDir /tmp/fcgi_ipc/
AddHandler fastcgi-script .fcgi
FastCgiConfig -autoUpdate -idle-timeout 300
</IfModule>
保存してApacheの再起動とPerlのインストールもお忘れなく。
※追記:
Vine Linux 4.1にてlibtoolでモジュールを追加する場合、apache2-develをインストールする必要があります。Vineをインストールした状態ではインストールされていません。