Ubuntu と CentOS で mod_php の代わりに mod_fcgid を使用するにはどうすればよいでしょうか。2 つの主な利点と違いは何ですか。
答え1
php_mod: を使います。
- mod_fcgidよりも少し速い
- httpdプロセスで実行される
- Apache API にアクセスできる ( de.php.net/manual/en/ref.apache.php )
- すべてのドメインが同じユーザーの下で実行されるため、共有ホスティングには適していません。
mod_fcgid:
- スクリプトは希望するユーザーで実行されます(共有ホスティングに適しています)
- セキュリティ強化
- PHP以外のものも実行可能
- 複数の PHP バージョン (php4、php5、php5.1、php5.2、php 5.3) を実行できます。
答え2
私の共有ホスティング プラットフォームでは、PHP を直接呼び出すのではなく、FastCGI を使用して PHP を実行します。デフォルトでは PHP はモジュールとしてではなく CGI 経由で実行されるため、私の場合はファイルに次のコードを追加するだけで済みました.htaccess
。
AddHandler application/myphp .php
Action application/myphp /cgi-bin/myphp.fcgi
myphp.fcgi
次に、 cgi-bin ディレクトリに次の内容を含むスクリプトを作成する必要がありました。
#!/bin/sh
# This ensures PHP doesn't try to run it's own
# process manager.
export PHP_FCGI_CHILDREN=0
# Replace this shell image with a PHP
# image.
exec /path/to/php -c /path/to/my/php.ini
これは私にとっては問題なく動作し、私のホスティング環境はハードウェア ロード バランサーの背後にある約 12 個のサーバーのクラスター内で動作しています。
答え3
cgi = 各リクエストはプロセスを開始し、結果をクライアントに返します。fcgi = アプリケーション (Ruby/Django など) またはインタープリター (PHP) は実行されたままになり、Web サーバーはリクエストを転送し、そこから応答を取得します。
FastCGI はほとんどの場合高速です (サポートされているものの場合)。ただし、非常に古いもの (たとえば Nagios) では CGI が必要です。CGI の唯一の利点は、トラフィック スクリプトがない場合、CGI アプリケーションはメモリを使用しないことです。ただし、通常、Web サーバーは、一定時間使用されていない FastCGI アプリケーションをシャットダウンするほどインテリジェントであるため、これは本当の利点ではありません。