CentOS で Apache に接続された PHP マルチバージョン共存ソリューションの詳細な実装、_PHP チュートリアル

WBOY
リリース: 2016-07-12 09:02:31
オリジナル
1057 人が閲覧しました

CentOS で Apache に接続された PHP のマルチバージョン共存ソリューションの詳細な説明

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 を配置します

興味があるかもしれない記事:

  • Linux システムで共存するように複数のバージョンの PHP をセットアップし、Nginx サーバーで使用する

www.bkjia.comtru​​ehttp://www.bkjia.com/PHPjc/1084597.html技術記事 CentOS で Apache に接続された PHP のマルチバージョン共存ソリューションと、Apache で fastCGI モードで実行される php-fpm の統合についての詳細な説明。英語であっても、インターネット上には関連する資料がほとんどないようです。ただ…
関連ラベル:
ソース:php.cn
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
最新の問題
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート
私たちについて 免責事項 Sitemap
PHP中国語ウェブサイト:福祉オンライン PHP トレーニング,PHP 学習者の迅速な成長を支援します!