SOFTELメモ Developer's blog

会社概要 ブログ 調査依頼 採用情報 ...
技術者募集中

FastCGI+Apache インストールメモ(mod_fcgid)

意外と簡単、すんなりできた、FastCGI。

FastCGIって何?

普通のCGIだと都度起動するオーバーヘッドが激しい。そこで、別プロセスでプログラムを起動しておいてそちらに処理をお願いできる仕組みにする。phpの処理はそちらにお願いできるので、Apacheのプロセスにはphpなどの機能をモジュールとして組み込まないでよい。

Apacheには、その仕組み(FastCGI)に処理をお願いできるようにするモジュールだけ組み込む。それがmod_fcgidmod_fastcgi

なので、FastCGImod_fcgid または mod_fastcgi(どちらか一方でよい)をインストールする。

FastCGIインストール

ダウンロードページのCurrent(現バージョン)のDownloadからダウンロード。

$ cd /usr/local/src/
$ wget http://www.fastcgi.com/dist/fcgi.tar.gz
$ tar xzf fcgi-2.4.0.tar.gz
$ cd fcgi-2.4.0
$ ./configure
$ make
# make install

mod_fcgidインストール

ダウンロードページからmod_fcgid-x.x.x.tar.gzをダウンロード。

$ cd /usr/local/src/
$ wget http://ftp.kddilabs.jp/infosystems/apache/httpd/mod_fcgid/mod_fcgid-2.3.5.tar.gz
$ tar zxf mod_fcgid-2.3.5.tar.gz
$ cd mod_fcgid-2.3.5/
$ ./configure.apxs
$ make
# make install

Apacheを設定

モジュールができたので、使用するよう設定

こちらはmake install時に勝手に追記されているはず

LoadModule fcgid_module /usr/lib/httpd/modules/mod_fcgid.so

あとはこんな設定を該当のディレクトリなどに適用すれば*.phpの拡張子でphpがFastCGIで実行される。

<Directory /xxx/xxx/xxx>
    Options ExecCGI
    AddHandler fcgid-script .php
    FCGIWrapper /usr/local/bin/php-cgi .php
</Directory>

conf.dディレクトリにファイルを作って、fcgid用の設定を書いて細かく設定するのもよい。(ディレクティブ一覧

# vi /etc/httpd/conf.d/fcgid.conf
<IfModule mod_fcgid.c>
    AddHandler fcgid-script .fcgi
    SocketPath /tmp/fcgid_sock/
    IPCConnectTimeout 20
    MaxProcessCount 8
    DefaultMaxClassProcessCount 2
    TerminationScore 10
    SpawnScore 80
    IdleTimeout 300
</IfModule>

FastCGIでphpinfo()

phpinfo.php(ファイル名は任意)というファイルに <?php phpinfo(); とだけ書いて、ブラウザでアクセス。

画像のconfigureオプションに–enable-fastcgiが見えるが、php5.3.3からはそんなオプションなくなりました(いつも有効)。間違って書いてしまった。

関連するメモ

コメント