FastCGI は、HTTP サーバーと動的スクリプト言語間のスケーラブルな高速通信インターフェイスです。最も一般的な HTTP サーバーは、Apache、Nginx、lighttpd などの FastCGI をサポートしています。同時に、FastCGI は、mod_phpsusexec で実行される PHP アクセラレーション モードの代わりに、PHP の mod_fastcgi で実行される PHP を含む多くのスクリプト言語でもサポートされています。
特徴:
1. 持続的な接続。リクエストごとに起動して初期化する必要がなく、高速です。
2. PHPの実行速度を3~30倍高速化できると言われています。その理由は、PHP インタープリターが必要になるたびにメモリーから読み取られるのではなく、メモリーにロードされるため、スクリプトに依存するサイトのパフォーマンスが大幅に向上するためです。
3. リクエストごとに起動して初期化する必要がないため、システム リソース (CPU) の使用量も大幅に削減されます。
4. 元の PHP プログラムを変更する必要はまったくありません。
5. 使用可能な php.ini ファイルは 1 つだけです。さまざまなスクリプトのニーズを満たすために複数の php.ini ファイルを構成する場合は、そのサブディレクトリで PHP の高速 CGI を無効にする必要があります。これにより、他のディレクトリが引き続き CGI に対して有効になります。
phpはLinux上でfastcgiモードで実行されます
1.Linuxシステム
[root@localhost /]# cat /etc/redhat-release
CentOS リリース 5.2 (最終)
2.Apacheをインストールします
Apache をダウンロードして解凍します。この記事のデモで使用したバージョンは 2.2.19 です。
[root@localhost]# wget http://labs.renren.com/apache-mirror//httpd/httpd-2.2.19.tar.gz
[root@localhost]# tar xvzf httpd-2.2.19.tar.gz
[root@localhost]#./configure --enable-so
[root@localhost]#make
[root@localhost]#make install
3. mod_fcgid をインストールします (mod_fastcgi ではなく mod_fcgid であることに注意してください)。
mod_fcgid をダウンロードして解凍します。この記事のテストで使用したバージョンは 2.3.6
[root@localhost]tar xvzf mod_fcgid-2.3.6.tar.gz
mod_fcgidをコンパイルしてインストールします
[root@localhost]cd mod_fcgid-2.3.6
[root@localhost]make
[root@localhost]メイクインストール
注: インターネット上の一部のドキュメントには APXS=/usr/local/apache2/bin/apxs がありません。詳細については、mod_fcgid ソフトウェアの README-FCGID ドキュメントを参照してください。
4.PHPをインストールする
[root@localhost]wget http://www.php.net/get/php-5.3.6.tar.bz2/from/cn.php.net/mirror
[root@localhost]tar xvjf php-5.3.6.tar.bz2
PHPをコンパイルしてインストールします
[root@localhost] cd php-5.3.6
[root@localhost]./configure --prefix=/usr/local --with-configure-file-path=/etc
[root@localhost]メイクインストール
注: ライブラリ ファイルのエラーが報告された場合は、関連するライブラリ ファイルをインストールしてください。作者のシステムでは、yum install libxml2-devel で問題が解決されました。インターネット上の多くのドキュメントでは、--enable-fastcgi パラメータを使用する必要があると記載されています。作成者は ./configure --help でこのパラメータを見つけられませんでした。その代わりに、--disable-cgi パラメータを見つけたので、使用しないことにしました。 --enable-fastcgi を追加します。このパラメータは省略できることが後で確認されました。 --with-apxs2 パラメーターを追加しないでください。
5.設定
FastCGIスクリプトディレクトリを作成する
[root@localhost]# mkdir /usr/local/apache2/fcgi-bin[root@localhost]# ln -s /usr/local/php/bin/php-cgi /usr/local/apache2/fcgi-bin/php-cgi
Apache設定ファイルを編集する
[root@localhost]# vi /usr/local/apache/conf/httpd.conf
以下を追加します
AddHandler php-fastcgi .php
アクション php-fastcgi /fcgi-bin/php-cgi
AddType application/x-httpd-php .php
アイドルタイムアウト 300
プロセスライフタイム 1800
最大プロセス数 100
デフォルトMinClassProcessCount 3
デフォルトMaxClassProcessCount 8
IPCConnectタイムアウト15
IPCCommタイムアウト 300
プロセスあたりの最大リクエスト数 100
<ディレクトリ/usr/local/apache2/fcgi-bin>
許可オーバーライドなし
オプション FollowSymLinks +ExecCGI
注文の許可、拒否
全員から許可
ディレクトリ>
変更
<ディレクトリ「/usr/local/apache2/htdocs」>
オプション インデックス FollowSymLinks +ExecCGI
許可オーバーライドなし
注文の許可、拒否
全員から許可
ディレクトリ>
注: 作成者がテストした test.php ファイルは htdocs ディレクトリに配置されているため、htdocs ディレクトリの権限には ExecCGI が必要です。ディレクトリが異なる場合は、ディレクトリに ExecCGI 権限を与えてください。 mod_fcgid がインストールされると、別の LoadModule fcgid_module modules/mod_fcgid.so が自動的に追加されます。
6. 検証
テストページを編集
[root@localhost]# vi /usr/local/apache2/htdocs/test.php
echo phpinfo();
?>
IIS7 で PHP を実行するように FastCGI を構成する
環境の説明:
設定手順: