Apache で fastCGI モードで実行される php-fpm の統合 インターネット上には、英語であっても関連する資料がほとんどないようです。 php-fpmであれば基本的にnginxと組み合わせます。関連する情報をたくさん調べて、それをまとめるためにこの記事を書きました。
Apache には複数の fastCGI サポート ソリューションがあります: 少なくとも mod_fcgi、mod_fastcgi (git)、mod_proxy_fcgi など。どちらのモジュールも少し古いですが、特に mod_fastcgi は 2007 年以来更新されていません。実際には使用されていません。 mod_proxy_fcgi モジュールは、簡潔な 1 行の ProxyPassMatch ディレクティブを通じて、httpd のバージョン 2.4 以降で正式に導入されました。
mod_fcgi
mod_fcgi モジュール自体は fastCGI プロセス管理に使用されます。これを使用する場合、プロセスを管理するために php-fpm は必要ありません。コア構成パラメータ
リーリーいくつかの Fcgid* 命令は最適化のためのものであり、実際の状況に応じて値を調整する必要があります。詳細については、mod_fcgi 公式ドキュメントを参照してください
mod_fcgid を使用するいくつかの機能
php-fgiプロセスはApacheモジュールによって開始および管理され、php-fpmを設定する必要はありません
php-cig プロセスでは、php プログラムによって書き込まれたファイルの権限は、php-fpm ユーザーが所有する php-fpm で作成されたファイルとは異なり、Apache ユーザーによって所有されます。デフォルトはnobodyです)。この方法では、ディレクトリのアクセス許可管理の点で一貫性が高くなります。
mod_fastcgi
Apache 2.2 は CentOS 6.x で使用されていますが、幸いなことに誰かが移植に成功しました: https://github.com/ceph/mod-proxy-fcgi 私たちはそれを直接使用できるようになりました。さらに幸運なことに、Apache 2.2 は epel ソースに組み込まれています。また、直接 yum でインストールすることもできます。epel ソースと一致させたくない場合は、rpm パッケージを直接ダウンロードしてインストールすることもできます (例: http://mirrors.ustc.edu.cn/epel/6/)。 x86_64/)
もちろん、mod_proxy_fcgi を直接使用できるように、Apache 2.4 を再コンパイルしてインストールすることもできますが、ここではコンパイルの作業負荷を節約するために、元のバージョンを変更せずに保持します。
php-fpmの設定手順を統合するには、mod_proxy_fcgi公式ドキュメントを参照してください
ProxyPassMatch "^/myapp/.*.php(/.*)?$" "fcgi://localhost:9000/var/www/"
構文は非常に単純で、リバース プロキシの構成に似ており、実際のニーズに応じて変更できます。実際、http プロトコルが fcig プロトコルに変更されたことを除いて、構文は mod_proxy モジュールと一致しています。
上記は、Apache 統合 php-fpm モードで実行されている fastCGI です。次に、yum によってインストールされた php に設定を変更する必要があります。
yum によってインストールされた php 設定ファイル /etc/httpd/conf.d/php.conf には次の行が含まれています
リーリー異なるサイトに対して異なる php を有効にする必要があります。上記の行は、処理のためにグローバル .php ファイルを php モジュールに割り当てます。代わりに、各サイトで異なる php 実行モードを有効にします。
上記が加工方法です。
[既知の問題]: ネイキッド ディレクトリ アドレス転送
解決されていない厄介な問題があり、モジュールのバグのように感じられます:
DirectoryIndexindex.php で構成されたディレクトリの場合、そのサブディレクトリにindex.php がない場合でも、上記の ProxyPassMatch は引き続き fastCGI 転送を実行します。この時点では、php-fpm から 403 の代わりに 404 応答が表示されます。 apacheのページ。しかし、前のルールではこの裸のディレクトリの URL が転送されないため、バグのような気がします
さらに、ProxyPassMatch で一致したディレクトリでは、Apache の自動インデックス作成機能が失敗します。 (もちろん、autoindex を有効にしなくても問題ありません。通常、本番環境では自動インデックスは有効になりません)
その他、重大な影響はないようです、もしくはまだ気づいていません(?)。
解決策: fpm-php が空のリクエストを処理しないように、各ディレクトリにindex.html を配置します