diff --git a/install/unix/apache2.xml b/install/unix/apache2.xml index deb1b33f09..bb9b44e62f 100644 --- a/install/unix/apache2.xml +++ b/install/unix/apache2.xml @@ -1,50 +1,83 @@ - + - Apache 2.x (Unixシステム用) - - - このセクションでは、PHPを Unix システム上の Apache 2.x にインストールする際の - 手引きと注意事項について説明します。 - - - &warn.apache2.compat; - - + Apache httpd 2.x (Unixシステム用) + + + このセクションでは、PHP を Linux および Unix 系のシステム上の + Apache HTTP Server 2.x にインストールする際の手引きと注意事項について説明します。 + + + + mod_php ではなく PHP-FPM を使いましょう + + 新規のインストールで mod_php + を使ってはいけません。 + このページの手順は、過去の経緯を知るための参考として、また PHP を Apache httpd + のプロセスに直接組み込むことがどうしても必要な、まれなケースのために残されています。 + + + 最近のデプロイ環境であれば、どんな場合でも + PHP-FPM (FastCGI Process Manager) + を Apache httpd の mod_proxy_fcgi + モジュールと組み合わせて使いましょう。PHP-FPM を使うと、 + リソース管理やプロセスの分離がより優れたものになり、 + Apache httpd を再起動せずに PHP だけを再起動できるようになります。 + また、Apache httpd の event MPM (Apache httpd 2.4 + 以降のデフォルト) とも互換性があります。 + 主要な Linux ディストリビューションは、この構成をデフォルトとして提供しています。 + + + mod_php による方式では、PHP が Apache httpd + のすべてのワーカープロセスに直接組み込まれます。 + PHP をスレッドセーフ (--enable-zts) でコンパイルしていない限り、 + mod_phpprefork MPM を必要とし、 + 同時実行性が大きく制限されます。それでも mod_php + を使う場合は、パフォーマンスとセキュリティの面でどんな影響があるのかを + 完全に理解しておく必要があります。 + + + + Apache ドキュメンテーション - を参照し、Apache 2.x の基本的な事項について理解しておくことを強く推奨します。 - Apache のインストールオプションについてのより詳しい情報が得られます。 - + は、Apache httpd 2.x サーバーに関する最も信頼できる情報源です。 + Apache httpd のインストールオプションについてのより詳しい情報も、 + そこで得られます。 + - - 最新バージョンの Apache HTTP Server を + + 最新バージョンの Apache httpd を Apache ダウンロードサイト からダウンロードし、上述のいずれかのバージョンの PHP を用意してください。 - この手引きでは Apache 2.x で PHP を動作させるための + この手引きでは Apache httpd 2.x で PHP を動作させるための 基本的な部分しかカバーしていません。さらに詳しい情報については、Apache ドキュメンテーション を参照ください。 情報が古く不正確になってしまうため、以下では詳細なバージョン番号は - 記述されていません。'NN' という文字列をご使用のバージョンに適宜置き換えて - ください。 - - - - 現在、Apache 2.x には 2.4 と 2.2 の二種類があります。 - どちらを選ぶにしてもそれなりの理由があるでしょうが、 - 2.4 が現在の最新版です。もし選択の余地があるのなら - 2.4 を使うことを推奨します。しかし、この例では 2.4 と 2.2 - のどちらでも使えるようにしています。 - Apache httpd 2.2 は正式には廃止予定で、新しい開発やパッチが - 発行されないことに注意してください。 - + 記述されていません。'NN' という文字列をご使用の Apache httpd + のバージョンに適宜置き換えてください。 + + + + ここで説明する手順は Apache httpd 2.4 を対象としています。 + Apache httpd がサポートしているリリースブランチは 2.4 だけです。 + それより前のバージョン (2.2 以前) はサポートが終了しているため、 + 使ってはいけません。 + + + + + PHP 8.4.0 以降、apache2handler SAPI は Apache 2.4 以降を必要とします。 + EOL を迎えた Apache 2.0 および 2.2 のサポートは削除されました。 + + - - Apache HTTP server を上のサイトから取得して展開します。 - + + Apache httpd を上のサイトから取得して展開します。 + @@ -56,9 +89,9 @@ tar -xzf httpd-2.x.NN.tar.gz - + 同じく、PHP のソースを取得して展開します。 - + @@ -68,18 +101,24 @@ tar -xzf php-NN.tar.gz - + - - Apache をビルドしてインストールします。Apache のビルドに関する詳細は - Apache のドキュメントを参照ください。 - + + Apache httpd をビルドしてインストールします。Apache httpd のビルドに関する詳細は + Apache httpd のドキュメントを参照ください。 + PHP をスレッドセーフ (--enable-zts) でコンパイルしていない限り、 + mod_phpprefork MPM + を必要とすることに注意してください。かわりに PHP-FPM を使うつもりなら (推奨)、 + デフォルトの event MPM をそのまま使い、 + PHP-FPM のインストール手順 + まで読み飛ばしてかまいません。 + @@ -89,10 +128,9 @@ make install - 以上で Apache 2.x.NN が、モジュールの動的ロードとデフォルトの - MPM(マルチプロセッシングモジュール)である prefork が有効になった - 状態で、/usr/local/apache2 にインストールされます。 - インストールが正常か調べるには、以下のようにして Apache サーバーを立ち上げます。 + 以上で Apache httpd 2.x.NN が、モジュールの動的ロードと + prefork MPM が有効になった状態で、/usr/local/apache2 にインストールされます。 + インストールが正常か調べるには、以下のようにして Apache httpd サーバーを立ち上げます。 @@ -115,21 +153,21 @@ make install - + PHP の configure を行います。ここでは、様々なオプションを指定し、 特定の拡張モジュールを有効にするといったカスタマイズを行います。 指定可能なオプションの一覧は、./configure --help を実行すると得られます。 - 以下に、Apache 2 と MySQL のサポートを有効にする、簡単な設定例を示します。 - + 以下に、Apache httpd と MySQL のサポートを有効にする、簡単な設定例を示します。 + - - 上で説明したように Apache をソースからビルドした場合は、 + + 上で説明したように Apache httpd をソースからビルドした場合は、 apxs のパスも下の例のとおりになっているでしょう。しかし、 - もし別の方法で Apache をインストールした場合は apxs + もし別の方法で Apache httpd をインストールした場合は apxs のパスを適切に変更しなければなりません。 ディストリビューションによっては、apxs の名前が apxs2 と変更されていることもあるので注意しましょう。 - + @@ -142,14 +180,14 @@ make install - + configure オプションを変更して再インストールする場合は、 configure, make, make install の手順を繰り返さなければなりません。 共有モジュールとしてコンパイルされた PHP を有効にするには - Apache を再起動するだけです。Apache の再コンパイルは不要です。 - - + Apache を再起動するだけです。Apache httpd の再コンパイルは不要です。 + + 特に断りがない限り、make install は、PEAR, phpize のような様々な 関連ツール、CLI 版 PHP などもインストールすることに注意してください。 @@ -157,10 +195,10 @@ make install - + php.ini ファイルを設定する - - + + - + PHP の実行時設定を変更するには、.ini ファイルを編集します。 php.ini ファイルを他の場所に置きたい場合は、手順 5 で、 オプション --with-config-file-path=/some/path を使用します。 - - - + + + php.ini-development ではなく、php.ini-production を使用する場合は、PHP の 動作が変化しますので、ファイル中に記載されている変更点の一覧を確認する ようにしてください。 - + - + httpd.conf を編集し、PHP の共有モジュールをロードするよう設定します。 LoadModule 命令の右側に記述するパスは、システムの PHP 共有モジュール を指している必要があります。上記の make install により既にこの設定は 追加されている場合もありますが、確認が必要です。 - + - - PHP 8 向けの設定は以下のようになります: - - - - - - - - PHP 7 向けの設定は以下のようになります: - - - - - - Apache が特定の拡張子のファイルを PHP としてパースするよう設定します。 - たとえば、Apache が拡張子 .php のファイルを PHP としてパースするようにします。 - 単に Apache の AddType ディレクティブを使うだけではなく、 + + Apache httpd が特定の拡張子のファイルを PHP としてパースするよう設定します。 + たとえば、Apache httpd が拡張子 .php のファイルを PHP としてパースするようにします。 + 単に AddType ディレクティブを使うだけで済ませるのではなく、 悪意を持ってアップロード (あるいは作成) された exploit.php.jpg のようなファイルが PHP として実行されてしまわないようにしたいものです。 この例では、PHP としてパースさせたい任意の拡張子を追加していくだけです。 ためしに .php を追加してみましょう。 - + @@ -236,17 +258,17 @@ LoadModule php7_module modules/libphp7.so - + あるいは、拡張子 .php, .php2, .php3, .php4, .php5, .php6, .phtml のファイルだけを PHP として実行したい場合は、以下のようにします。 - + + SetHandler application/x-httpd-php ]]> @@ -271,7 +293,6 @@ LoadModule php7_module modules/libphp7.so 他にハンドラが見つからないときのデフォルトのハンドラとして PHP ファイルを使いたい場合 (ルーティングエンジンを使うときなど)は、FallbackResource ディレクティブが使えます。 - このディレクティブは Apache 2.4.4 以降で使用できます。 @@ -317,10 +338,10 @@ RewriteRule (.*\.php)s$ $1 [H=application/x-httpd-php-source] - - Apache サーバーを、通常の手順通り、起動させます。 - - + + Apache httpd を、通常の手順通り、起動させます。 + + - - 上記の手順で、Apache2 ウェブサーバー上で - SAPI モジュールとして PHP を動作させることができます。もちろん、Apache と PHP の双方とも、もっと多くの configure オプションを指定することが出来ます。 + + 上記の手順で、Apache httpd ウェブサーバー上で + SAPI モジュールとして PHP を動作させることができます。Apache httpd と PHP の双方とも、もっと多くの configure オプションを指定することが出来ます。 詳しい情報を得るには、ソースツリーディレクトリで ./configure --help を実行してください。 - - - - マルチスレッド版の Apache をビルドするには、Apache のビルド時に標準の - prefork MPM ではなく worker MPM を選択します。 - そのためには、先ほどの手順 3 のところで ./configure の引数に次のオプションを追加します。 - - - - - - - - - - そうすることで何がどのようになるのかをきちんと認識したうえで、これを行わなければなりません。 - 詳細については Apacheドキュメントの - マルチプロセッシングモジュール (MPM) - を参照ください。 - + - - Apache MultiViews FAQ では、PHP でマルチビューを使う方法について解説しています。 - + MPM の互換性 + + PHP を Zend Thread Safety (--enable-zts) でコンパイルしていない限り、 + mod_phpprefork MPM を必要とします。 + その理由については、マルチスレッド MPM + の Apache httpd を使う場合についての FAQ の項目を参照してください。 + + + + ディストリビューションが提供する mod_php パッケージのほとんどは + ZTS でビルドされていないため、通常は prefork が必要になります。 + マルチスレッド MPM が必要な場合 (負荷がかかる状況ではパフォーマンスが向上するため推奨されます) は、 + かわりに PHP-FPM と + mod_proxy_fcgi を使いましょう。 + - - マルチスレッド版の Apache をビルドするには、ターゲットシステムがスレッドに対応していなければなりません。 - その場合は、PHP についても Zend Thread Safety (ZTS) でビルドしなければなりません。 - この構成では使用できない拡張モジュールもあります。推奨される方法は、Apache をデフォルトの - prefork MPM モジュールでビルドすることです。 - + + Apache MultiViews FAQ では、PHP でマルチビューを使う方法について解説しています。 + @@ -404,3 +413,4 @@ vim600: syn=xml fen fdm=syntax fdl=2 si vim: et tw=78 syn=sgml vi: ts=1 sw=1 --> +