「Apache HTTP Server」の版間の差分
細 |
(他言語へのリンクを修正) |
||
(3人の利用者による、間の12版が非表示) | |||
1行目: | 1行目: | ||
[[Category:ウェブサーバー]] |
[[Category:ウェブサーバー]] |
||
− | [[cs: |
+ | [[cs:Apache HTTP Server]] |
[[de:LAMP Installation]] |
[[de:LAMP Installation]] |
||
+ | [[en:Apache HTTP Server]] |
||
− | [[el:LAMP]] |
||
+ | [[es:Apache HTTP Server]] |
||
− | [[en:LAMP]] |
||
+ | [[pt:Apache HTTP Server]] |
||
− | [[es:LAMP]] |
||
+ | [[zh-hans:Apache HTTP Server]] |
||
− | [[fr:Lamp]] |
||
− | [[it:LAMP]] |
||
− | [[pl:LAMP]] |
||
− | [[ru:LAMP]] |
||
− | [[sr:LAMP]] |
||
− | [[tr:LAMP]] |
||
− | [[zh-CN:LAMP]] |
||
{{Related articles start}} |
{{Related articles start}} |
||
− | {{ |
+ | {{Related|PHP}} |
− | {{ |
+ | {{Related|MySQL}} |
{{Related|PhpMyAdmin}} |
{{Related|PhpMyAdmin}} |
||
{{Related|Adminer}} |
{{Related|Adminer}} |
||
22行目: | 16行目: | ||
[[Wikipedia:Apache HTTP Server|Apache HTTP Server]]、略して Apache は Apache Software Foundation によって開発されている、人気のウェブサーバーです。 |
[[Wikipedia:Apache HTTP Server|Apache HTTP Server]]、略して Apache は Apache Software Foundation によって開発されている、人気のウェブサーバーです。 |
||
− | Apache は PHP などのスクリプト言語や MySQL などのデータベースと一緒に使われることがほとんどです。この組み合わせは [[Wikipedia:ja:LAMP|LAMP]] ('''L'''inux, '''A'''pache, '''M'''ySQL, '''P'''HP) と呼ばれています。この記事では Apache を設定する方法と [[ |
+ | Apache は PHP などのスクリプト言語や MySQL などのデータベースと一緒に使われることがほとんどです。この組み合わせは [[Wikipedia:ja:LAMP|LAMP]] ('''L'''inux, '''A'''pache, '''M'''ySQL, '''P'''HP) と呼ばれています。この記事では Apache を設定する方法と [[PHP]] や [[MySQL]] と統合する方法を説明しています。 |
== インストール == |
== インストール == |
||
54行目: | 48行目: | ||
:ウェブページを置くディレクトリです。 |
:ウェブページを置くディレクトリです。 |
||
− | :必要に応じて変更してかまいませんが、{{ic|<Directory "/srv/http">}} も {{ic|DocumentRoot}} と同じように忘れずに変更しないと、新しいドキュメントルートにアクセスしたときに '''403 Error''' (権限不足) が表示されることになります。{{ic|Require all denied}} 行を変更するのも忘れないで下さい、そうしないと '''403 Error''' になります。 |
+ | :必要に応じて変更してかまいませんが、{{ic|<Directory "/srv/http">}} も {{ic|DocumentRoot}} と同じように忘れずに変更しないと、新しいドキュメントルートにアクセスしたときに '''403 Error''' (権限不足) が表示されることになります。{{ic|Require all denied}} 行を {{ic|Require all granted}} に変更するのも忘れないで下さい、そうしないと '''403 Error''' になります。また、DocumentRoot ディレクトリとその親ディレクトリには実行権限を与える必要があります ({{ic|chmod o+x /path/to/DocumentRoot}} で設定できます)。それを設定してない場合も '''403 Error''' になります。 |
AllowOverride None |
AllowOverride None |
||
− | :{{ic|<Directory>}} セクションにこのディレクティブを記述すると |
+ | :{{ic|<Directory>}} セクションにこのディレクティブを記述すると Apache は {{ic|.htaccess}} ファイルを完全に無視するようになります。{{ic|mod_rewrite}} などの設定を {{ic|.htaccess}} ファイルで用いる場合は、ファイルのどのディレクティブがサーバー設定を上書きできるようにするか許可できます。詳しくは [https://httpd.apache.org/docs/current/mod/core.html#allowoverride Apache のドキュメント] を参照。 |
{{Tip|設定に問題がある場合は、Apache で設定をチェックすることが可能です: {{ic|apachectl configtest}}。}} |
{{Tip|設定に問題がある場合は、Apache で設定をチェックすることが可能です: {{ic|apachectl configtest}}。}} |
||
78行目: | 72行目: | ||
$ chmod o+x ~ |
$ chmod o+x ~ |
||
$ chmod o+x ~/public_html |
$ chmod o+x ~/public_html |
||
+ | $ chmod -R o+r ~/public_html |
||
− | 変更を適用するために {{ic|httpd.service}} を再起動して下さい。 |
+ | 変更を適用するために {{ic|httpd.service}} を再起動して下さい。[[Umask#マスクの値を設定]]も参照。 |
=== TLS/SSL === |
=== TLS/SSL === |
||
TLS/SSL を使うには、{{pkg|openssl}} をインストールする必要があります。 |
TLS/SSL を使うには、{{pkg|openssl}} をインストールする必要があります。 |
||
+ | {{ic|/etc/httpd/conf/httpd.conf}} の以下の3行をアンコメントしてください: |
||
− | 自己署名証明書を作成 (キーのサイズや効力の日数は変更できます): |
||
− | # cd /etc/httpd/conf |
||
− | # openssl genpkey -algorithm RSA -pkeyopt rsa_keygen_bits:2048 -out server.key |
||
− | # chmod 600 server.key |
||
− | # openssl req -new -key server.key -out server.csr |
||
− | # openssl x509 -req -days 365 -in server.csr -signkey server.key -out server.crt |
||
− | |||
− | そして {{ic|/etc/httpd/conf/httpd.conf}} の、以下の3行をアンコメント: |
||
LoadModule ssl_module modules/mod_ssl.so |
LoadModule ssl_module modules/mod_ssl.so |
||
LoadModule socache_shmcb_module modules/mod_socache_shmcb.so |
LoadModule socache_shmcb_module modules/mod_socache_shmcb.so |
||
Include conf/extra/httpd-ssl.conf |
Include conf/extra/httpd-ssl.conf |
||
+ | |||
+ | 自己署名証明書を作成: |
||
+ | # cd /etc/httpd/conf |
||
+ | # openssl req -new -x509 -nodes -newkey rsa:4096 -keyout server.key -out server.crt -days 1095 |
||
+ | # chmod 400 server.key |
||
+ | # chmod 444 server.crt |
||
+ | |||
+ | {{Note|-days スイッチは任意であり RSA 鍵のサイズは 2048 (デフォルト) まで小さくできます。}} |
||
+ | |||
+ | {{ic|/etc/httpd/conf/extra/httpd-ssl.conf}} の {{ic|SSLCertificateFile}} と {{ic|SSLCertificateKeyFile}} 行で作成した鍵と証明書を指定してください。 |
||
+ | |||
+ | [[wikipedia:Certificate signing request|CSR]] を作成する必要がある場合、上記のコマンドを以下のように変えてください: |
||
+ | |||
+ | # cd /etc/httpd/conf |
||
+ | # openssl genpkey -algorithm RSA -pkeyopt rsa_keygen_bits:4096 -out server.key |
||
+ | # chmod 400 server.key |
||
+ | # openssl req -new -sha256 -key server.key -out server.csr |
||
+ | # openssl x509 -req -days 1095 -in server.csr -signkey server.key -out server.crt |
||
+ | |||
+ | {{Note|他の openssl のオプションについては、[https://www.openssl.org/docs/apps/openssl.html man ページ] や openssl の [https://www.openssl.org/docs/ ドキュメント] を読んでください。}} |
||
+ | |||
+ | {{Warning|SSL/TLS を使用するときは、実装によっては [https://weakdh.org/#affected いまだに] [[wikipedia:Transport_Layer_Security#Attacks_against_TLS.2FSSL|脆弱性が存在する]]ことを理解してください。SSL/TLS における脆弱性については http://disablessl3.com/ や https://weakdh.org/sysadmin.html を参照。}} |
||
+ | |||
+ | {{Tip|Mozilla は [https://wiki.mozilla.org/Security/Server_Side_TLS#Apache Apache] の設定ガイドラインが書かれている [https://wiki.mozilla.org/Security/Server_Side_TLS SSL/TLS の記事] と、セキュアな設定を作成するのに役立つ [https://mozilla.github.io/server-side-tls/ssl-config-generator/ 自動化ツール] を提供しています。}} |
||
{{ic|httpd.service}} を再起動して変更を適用してください。 |
{{ic|httpd.service}} を再起動して変更を適用してください。 |
||
114行目: | 126行目: | ||
==== 多数のバーチャルホストの管理 ==== |
==== 多数のバーチャルホストの管理 ==== |
||
+ | {{Note|{{pkg|certbot}} を使用して TLS 証明書を展開する場合は、仮想サーバーを個別のファイルに分割することが必須です。すべての仮想サーバーを 1 つのファイルにリストすると (デフォルトのまま)、certbot が証明書を正しく展開できなくなります。}} |
||
− | 莫大なバーチャルホストを使う場合、簡単に有効化・無効化できるようにすると便利です。バーチャルホストごとに設定ファイルを作成してそれら全てを一つのフォルダに保存するのが推奨されています、例: {{ic|/etc/httpd/conf/vhosts}}。 |
||
+ | |||
+ | 莫大なバーチャルホストを使う場合、簡単に有効化・無効化できるようにすると便利です。バーチャルホストごとに設定ファイルを作成してそれら全てを一つのフォルダに保存するのが推奨されています、例: {{ic|/etc/httpd/conf/vhosts}} |
||
まずフォルダを作成: |
まずフォルダを作成: |
||
168行目: | 182行目: | ||
=== PHP === |
=== PHP === |
||
+ | まず [[PHP#インストール|PHP をインストール]] して実行します、次に以下の 3 つのサブセクションのいずれかに従ってください。最後に、最後のサブセクションの説明に従ってインストールをテストします。 |
||
− | [[PHP|PHP]] をインストールするには、[[公式リポジトリ]]から {{Pkg|php}} と {{Pkg|php-apache}} を[[インストール]]してください。 |
||
+ | ==== libphp を使う ==== |
||
− | {{Note|1={{pkg|php-apache}} に含まれている {{ic|libphp5.so}} は {{ic|mod_mpm_event}} で動作しません ({{bug|39218}})。代わりに {{ic|mod_mpm_prefork}} を使って下さい。そうしないと以下のエラーが表示されます: |
||
+ | |||
+ | この方法はおそらく最も簡単ですが、スケーラビリティが最も低く、軽いリクエスト負荷に適しています。また、mpm モジュールを変更する必要があるため、他の拡張機能で問題が発生する可能性があります (たとえば、[[#HTTP/2]] と互換性がありません) |
||
+ | |||
+ | {{Pkg|php-apache}} を [[インストール]] してください。 |
||
+ | |||
+ | {{ic|/etc/httpd/conf/httpd.conf}} の以下の行をコメントアウトしてください: |
||
+ | #LoadModule mpm_event_module modules/mod_mpm_event.so |
||
+ | そして次の行をアンコメントしてください: |
||
+ | LoadModule mpm_prefork_module modules/mod_mpm_prefork.so |
||
+ | |||
+ | {{Note|1={{pkg|php-apache}} に含まれている {{ic|libphp7.so}} は {{ic|mod_mpm_event}} で機能せず、{{ic|mod_mpm_prefork}} でしか動作しないために上記の設定が必要になっています ({{bug|39218}})。設定しないと以下のエラーが表示されます: |
||
{{bc|1=Apache is running a threaded MPM, but your PHP Module is not compiled to be threadsafe. You need to recompile PHP. |
{{bc|1=Apache is running a threaded MPM, but your PHP Module is not compiled to be threadsafe. You need to recompile PHP. |
||
AH00013: Pre-configuration failed |
AH00013: Pre-configuration failed |
||
httpd.service: control process exited, code=exited status=1}} |
httpd.service: control process exited, code=exited status=1}} |
||
+ | 他の方法として、{{ic|mod_proxy_fcgi}} を使うこともできます (下の [[#php-fpm と mod_proxy_fcgi を使う]] を参照)。 |
||
− | |||
− | {{ic|mod_mpm_prefork}} を使うには、{{ic|/etc/httpd/conf/httpd.conf}} を開いて次の行を: |
||
− | {{bc|LoadModule mpm_event_module modules/mod_mpm_event.so}} |
||
− | 以下のように置き換えてください: |
||
− | {{bc|LoadModule mpm_prefork_module modules/mod_mpm_prefork.so}} |
||
− | |||
− | 他の方法として、{{ic|mod_proxy_fcgi}} を使うこともできます (下の [[#php-fpm と mod_proxy_fcgi で php5 を使う]] を参照)。 |
||
}} |
}} |
||
PHP を有効にするには、以下の行を {{ic|/etc/httpd/conf/httpd.conf}} に追加してください: |
PHP を有効にするには、以下の行を {{ic|/etc/httpd/conf/httpd.conf}} に追加してください: |
||
*次の行を {{ic|LoadModule}} リストの {{ic|LoadModule dir_module modules/mod_dir.so}} の後のどこかに記述: |
*次の行を {{ic|LoadModule}} リストの {{ic|LoadModule dir_module modules/mod_dir.so}} の後のどこかに記述: |
||
− | LoadModule |
+ | LoadModule php_module modules/libphp.so |
+ | AddHandler php-script .php |
||
*次の行を {{ic|Include}} リストの最後に記述: |
*次の行を {{ic|Include}} リストの最後に記述: |
||
− | Include conf/extra/ |
+ | Include conf/extra/php_module.conf |
+ | {{ic|httpd.service}} を [[再起動]] して下さい。 |
||
− | {{ic|DocumentRoot}} が {{ic|/srv/http}} ではない場合、次のように {{ic|/etc/php/php.ini}} の {{ic|open_basedir}} に追加してください: |
||
− | open_basedir=/srv/http/:/home/:/tmp/:/usr/share/pear/:/path/to/documentroot |
||
+ | ==== apache2-mpm-worker と mod_fcgid を使う ==== |
||
− | [[systemd#ユニットを使う|systemd]] を使って {{ic|httpd.service}} を再起動して下さい。 |
||
+ | {{pkg|mod_fcgid}} と {{Pkg|php-cgi}} パッケージを[[インストール]]してください。 |
||
− | PHP が正しく設定されたかどうかテストするには: Apache の {{ic|DocumentRoot}} ディレクトリ (例: {{ic|/srv/http/}} または {{ic|~/public_html}}) に以下の内容で {{ic|test.php}} という名前のファイルを作成します: |
||
− | <?php phpinfo(); ?> |
||
− | 動作するか確かめるために次のページを見て下さい: http://localhost/test.php or http://localhost/~myname/test.php |
||
+ | 必要なディレクトリと PHP ラッパーのシンボリックリンクを作成: |
||
− | 高度な設定や拡張については、[[PHP|PHP]] を読んで下さい。 |
||
+ | # mkdir /srv/http/fcgid-bin |
||
− | |||
+ | # ln -s /usr/bin/php-cgi /srv/http/fcgid-bin/php-fcgid-wrapper |
||
− | ==== php-fpm と mod_proxy_fcgi で php5 を使う ==== |
||
− | |||
− | {{Note|Unlike the widespread setup with ProxyPass, the proxy configuration with SetHandler respects other Apache directives like DirectoryIndex. This ensures a better compatibility with software designed for libphp5, mod_fastcgi and mod_fcgid. If you still want to try ProxyPass, experiment with a line like this: {{bc|ProxyPassMatch ^/(.*\.php(/.*)?)$ unix:/run/php-fpm/php-fpm.sock|fcgi://localhost/srv/http/$1}}}} |
||
− | |||
− | * {{pkg|php-fpm}} をインストール |
||
− | |||
− | * {{ic|/etc/php/php-fpm.conf}} で {{ic|listen}} を以下のように設定: |
||
− | ;listen = 127.0.0.1:9000 |
||
− | listen = /run/php-fpm/php-fpm.sock |
||
− | listen.owner = http |
||
− | listen.group = http |
||
− | |||
− | * 以下を {{ic|/etc/httpd/conf/httpd.conf}} に追記: |
||
− | <FilesMatch \.php$> |
||
− | SetHandler "proxy:unix:/run/php-fpm/php-fpm.sock|fcgi://localhost/" |
||
− | </FilesMatch> |
||
− | <IfModule dir_module> |
||
− | DirectoryIndex index.php index.html |
||
− | </IfModule> |
||
− | |||
− | * 前に php モジュールを追加していた場合は、必要なくなるので削除: |
||
− | LoadModule php5_module modules/libphp5.so |
||
+ | {{ic|/etc/conf.d/apache}} の以下の行をアンコメント: |
||
− | * {{ic|httpd}} と {{ic|php-fpm}} デーモンを[[Systemd#ユニットを使う|再起動]]: |
||
− | # systemctl restart httpd.service php-fpm.service |
||
− | |||
− | ==== apache2-mpm-worker, mod_fcgid で php5 を使う ==== |
||
− | * {{ic|/etc/conf.d/apache}} の次の行をアンコメント: |
||
HTTPD=/usr/bin/httpd.worker |
HTTPD=/usr/bin/httpd.worker |
||
− | + | 以下の内容で {{ic|/etc/httpd/conf/extra/php-fcgid.conf}} を作成: |
|
− | + | {{hc|/etc/httpd/conf/extra/php-fcgid.conf|<nowiki> |
|
− | |||
− | * [[公式リポジトリ]]から {{pkg|mod_fcgid}} と {{Pkg|php-cgi}} パッケージを[[インストール]]。 |
||
− | |||
− | * {{ic|/etc/httpd/conf/extra/php5_fcgid.conf}} を以下の内容で作成: |
||
− | {{hc|/etc/httpd/conf/extra/php5_fcgid.conf|<nowiki> |
||
# Required modules: fcgid_module |
# Required modules: fcgid_module |
||
258行目: | 245行目: | ||
Options +ExecCGI |
Options +ExecCGI |
||
</Location> |
</Location> |
||
− | </IfModule |
+ | </IfModule> |
+ | </nowiki>}} |
||
+ | |||
+ | {{ic|/etc/httpd/conf/httpd.conf}} を編集します: |
||
+ | * actions モジュールの読み込みのコメントを解除します: {{bc|LoadModule events_module modules/mod_actions.so}} |
||
+ | * (依存する) unixd モジュールのロードの ''後'' に FCGID モジュールをロードします。これを {{ic|<IfModule unixd_module>}} ブロック内に配置することもできます: {{bc|LoadModule fcgid_module modules /mod_fcgid.so}} |
||
+ | * MPM 設定のインクルードがコメント解除されていることを確認します (このファイルのデフォルトでインストールされたバージョンではコメントが解除されています): {{bc|Include conf/extra/httpd-mpm.conf}} |
||
+ | * 新しい FCGID 設定のインクルードを追加します: {{bc|Include conf/extra/php-fcgid.conf}} |
||
+ | |||
+ | {{ic|httpd.service}} を [[systemd#ユニットを使う|再起動]] してください。 |
||
+ | |||
+ | ==== php-fpm と mod_proxy_fcgi を使う ==== |
||
+ | |||
+ | {{Note|ProxyPass を使用した広く普及しているセットアップとは異なり、SetHandler を使用したプロキシ設定は DirectoryIndex などの他の Apache ディレクティブを尊重します。これにより、libphp7、mod_fastcgi、および mod_fcgid 用に設計されたソフトウェアとの互換性が向上します。それでも ProxyPass を試したい場合は、次のような行を試してください: {{bc|ProxyPassMatch ^/(.*\.php(/.*)?)$ unix:/run/php-fpm/php-fpm.sock|fcgi://localhost/srv/http/$1}}}} |
||
+ | |||
+ | {{pkg|php-fpm}} をインストールしてください。 |
||
+ | |||
+ | 以下の内容で {{ic|/etc/httpd/conf/extra/php-fpm.conf}} を作成: |
||
+ | {{hc|/etc/httpd/conf/extra/php-fpm.conf|<nowiki> |
||
+ | <FilesMatch \.php$> |
||
+ | SetHandler "proxy:unix:/run/php-fpm/php-fpm.sock|fcgi://localhost/" |
||
+ | </FilesMatch> |
||
+ | <Proxy "fcgi://localhost/" enablereuse=on max=10> |
||
+ | </Proxy> |
||
+ | <IfModule dir_module> |
||
+ | DirectoryIndex index.php index.html |
||
+ | </IfModule> |
||
+ | </nowiki>}} |
||
+ | |||
+ | {{ic|/etc/httpd/conf/httpd.conf}} の最後に作成したファイルを追加してください: |
||
+ | Include conf/extra/php-fpm.conf |
||
+ | |||
+ | {{Note|{{ic|sock}} と {{ic|fcgi}} の間のパイプを空白で囲むことはできません。{{ic|localhost}} はどんな文字列でも置き換えられますが {{ic|SetHandler}} と {{ic|Proxy}} ディレクティブに一致させる必要があります。詳しくは [https://httpd.apache.org/docs/2.4/mod/mod_proxy_fcgi.html] を参照。{{ic|SetHandler}} と {{ic|Proxy}} はバーチャルホストごとの設定で使うことができますが、{{ic|fcgi://}} の後ろの名前はバーチャルホストごとに変える必要があります。}} |
||
+ | |||
+ | PHP-FPM の設定は {{ic|/etc/php/php-fpm.d/www.conf}} で行えます。特に変えなくても問題なく動作するはずです。 |
||
+ | |||
+ | {{Note| |
||
+ | {{ic|httpd.conf}} に以下の行を追加している場合、すでに必要ないので削除してかまいません: |
||
+ | LoadModule php7_module modules/libphp7.so |
||
+ | Include conf/extra/php7_module.conf |
||
}} |
}} |
||
+ | {{ic|httpd.service}} と {{ic|php-fpm.service}} を[[systemd#ユニットを使う|再起動]]してください。 |
||
− | * 必要なディレクトリを作成し PHP ラッパーにシンボリックリンクを作成: |
||
− | # mkdir /srv/http/fcgid-bin |
||
− | # ln -s /usr/bin/php-cgi /srv/http/fcgid-bin/php-fcgid-wrapper |
||
+ | ==== PHP が動作するかテストする ==== |
||
− | * {{ic|/etc/httpd/conf/httpd.conf}} を編集: |
||
− | #LoadModule php5_module modules/libphp5.so |
||
− | LoadModule fcgid_module modules/mod_fcgid.so |
||
− | Include conf/extra/php5_fcgid.conf |
||
− | そして {{ic|httpd}} を[[Daemons|再起動]]。 |
||
+ | PHP が正しく設定されたかどうかテストするには: Apache の {{ic|DocumentRoot}} ディレクトリ (例: {{ic|/srv/http/}} または {{ic|~/public_html}}) に以下の内容で {{ic|test.php}} という名前のファイルを作成します: |
||
− | {{Note|1=As of Apache 2.4 you can now use [http://httpd.apache.org/docs/2.4/mod/mod_proxy_fcgi.html mod_proxy_fcgi] (part of the official distribution) with PHP-FPM (and the new event MPM). See this [http://wiki.apache.org/httpd/PHP-FPM configuration example].}} |
||
+ | <?php phpinfo(); ?> |
||
+ | 動作するか確かめるために次のページを見て下さい: http://localhost/test.php もしくは http://localhost/~myname/test.php |
||
− | === |
+ | === HTTP2 === |
− | [[MariaDB|MariaDB]] で説明されているように MySQL/MariaDB を設定してください。 |
||
+ | {{Note| |
||
− | {{ic|/etc/php/php.ini}} の以下の行の [http://www.php.net/manual/ja/mysqlinfo.api.choosing.php 少なくともどちらか一行] をアンコメント: |
||
+ | * Apache は暗号化されていない HTTP/2 over TCP ({{ic|h2c}}) をサポートしていますが、一般的なブラウザではサポートされていません [https://stackoverflow.com/a/46789195] したがって、後者で使用するには、最初に [[#TLS]] を有効にする必要があります。 |
||
− | extension=pdo_mysql.so |
||
+ | * サポートしているクライアントが HTTP/1.1 ではなく HTTP/2 を使用しておらず、[[#TLS]] のセットアップに Mozilla の設定ジェネレーター (以下の {{ic|Protocols}} 行がすでに含まれています) が使用されている場合は、後者の出力の後に {{ic|httpd-ssl.conf}} を含めてみてください。 |
||
− | extension=mysqli.so |
||
+ | * テスト方法には、{{ic|curl -sI <nowiki>https://your.website</nowiki>}} または [https://github.com/pd4d10/http-indicator http インジケーター] を使用する方法があります (Chrome ベースのブラウザと Firefox ベースのブラウザの両方をサポート)}} |
||
− | {{Warning|PHP 5.5 から、{{ic|mysql.so}} は [http://php.net/manual/ja/migration55.deprecated.php 非推奨] になり、ログにエラーが出力されるようになっています。}} |
||
+ | HTTP/2 over TLS サポートを有効にするには、{{ic|httpd.conf}} 内の次の行のコメントを解除します: |
||
− | ウェブスクリプトのために権限を抑えた MySQL ユーザーを追加できます。また、{{ic|/etc/mysql/my.cnf}} を編集して {{ic|skip-networking}} 行をアンコメントすることで MySQL サーバーがローカルホストからしかアクセスできないようにすることも可能です。変更を適用するには MySQL を再起動する必要があります。 |
||
+ | LoadModule http2_module modules/mod_http2.so |
||
+ | そして、次の行を追加します: |
||
− | [[systemd#ユニットを使う|systemd]] を使って {{ic|httpd.service}} を再起動します。 |
||
+ | Protocols h2 http/1.1 |
||
+ | デバッグするには、サーバー全体ではなくモジュールのみを {{ic|debug}} または {{ic|info}} に設定します: |
||
− | {{Tip|データベースを利用するために [[phpMyAdmin]], [[Adminer]], {{AUR|mysql-workbench}} などのツールをインストールしても良いでしょう。}} |
||
+ | <IfModule http2_module> |
||
+ | LogLevel http2:info |
||
+ | </IfModule> |
||
+ | |||
+ | 追加の HTTP/2 機能設定を含む詳細については、[https://httpd.apache.org/docs/2.4/mod/mod_http2.html mod_http2] ドキュメントを参照してください。 |
||
+ | |||
+ | {{Warning|{{ic|http2_module}} は、PHP のセットアップに古い設定で広く使用されている {{ic|mpm_prefork_module}} と互換性がありません。代わりに [[#php-fpm と mod_proxy_fcgi を使う|php-fpm]] の使用を検討してください。}} |
||
== トラブルシューティング == |
== トラブルシューティング == |
||
+ | |||
=== Apache の状態とログ === |
=== Apache の状態とログ === |
||
+ | |||
Apache デーモンの状態を表示: {{ic|systemctl status httpd}} |
Apache デーモンの状態を表示: {{ic|systemctl status httpd}} |
||
Apache のログがある場所は: {{ic|/var/log/httpd/}} |
Apache のログがある場所は: {{ic|/var/log/httpd/}} |
||
+ | |||
=== Error: PID file /run/httpd/httpd.pid not readable (yet?) after start === |
=== Error: PID file /run/httpd/httpd.pid not readable (yet?) after start === |
||
+ | |||
unique_id_module をコメントアウトしてください: {{ic|#LoadModule unique_id_module modules/mod_unique_id.so}} |
unique_id_module をコメントアウトしてください: {{ic|#LoadModule unique_id_module modules/mod_unique_id.so}} |
||
− | === Apache を 2.2 から 2.4 にアップグレード === |
||
− | {{ic|php-apache}} を使っている場合、[[#PHP|PHP]] の最初のノートを見て下さい。 |
||
+ | === /run/httpd が起動時に作成されない === |
||
− | Access Control は変更されました。{{ic|Order}}, {{ic|Allow}}, {{ic|Deny}}, {{ic|Satisfy}} ディレクティブは全て新しい {{ic|Require}} シンタックスに変換してください。[http://httpd.apache.org/docs/2.4/mod/mod_access_compat.html mod_access_compat] を使うことで移行期間の古いフォーマットを使用することができます。 |
||
+ | root ユーザーとしての {{ic|systemd-tmpfiles --create}} が "unsafe path transition" について苦情を言った場合は、ルートディレクトリの所有権を確認してください。 |
||
− | 詳細: [http://httpd.apache.org/docs/2.4/upgrading.html Upgrading to 2.4 from 2.2] |
||
+ | |||
+ | ls -la / |
||
+ | chown root:root / |
||
=== Apache is running a threaded MPM, but your PHP Module is not compiled to be threadsafe === |
=== Apache is running a threaded MPM, but your PHP Module is not compiled to be threadsafe === |
||
− | {{ic| |
+ | {{ic|php7_module}} をロードする際に {{ic|httpd.service}} が失敗して、journal で以下のようなエラーが表示される場合: |
Apache is running a threaded MPM, but your PHP Module is not compiled to be threadsafe. You need to recompile PHP. |
Apache is running a threaded MPM, but your PHP Module is not compiled to be threadsafe. You need to recompile PHP. |
||
315行目: | 350行目: | ||
そして {{ic|httpd.service}} を再起動してください。 |
そして {{ic|httpd.service}} を再起動してください。 |
||
+ | |||
+ | {{Warning|{{ic|http2_module}} などの他のモジュールは、{{ic|mpm_prefork}} がアクティブな場合は自動的に無効になります。}} |
||
+ | |||
+ | === AH00534: httpd: Configuration error: No MPM loaded. === |
||
+ | |||
+ | アップグレードによってこのエラーが発生することがあります。{{ic|httpd.conf}} の変化に対応してないのが原因です。修正するには、以下の行をアンコメントしてください: |
||
+ | |||
+ | {{hc|/etc/httpd/conf/httpd.conf| |
||
+ | LoadModule mpm_prefork_module modules/mod_mpm_prefork.so |
||
+ | }} |
||
+ | |||
+ | また、他にもエラーが発生する場合は[[#Apache_is_running_a_threaded_MPM.2C_but_your_PHP_Module_is_not_compiled_to_be_threadsafe.|上記のセクション]]も参照。 |
||
+ | |||
+ | === AH00072: make_sock: could not bind to address === |
||
+ | |||
+ | 原因は複数考えられます。最も一般的な原因は既に別の何かがポートを listen している場合です。netstat で確認してください: |
||
+ | |||
+ | # netstat -lnp | grep -e :80 -e :443 |
||
+ | |||
+ | 何か出力された場合、ポートを占有しているサービスを停止してみてください。 |
||
+ | |||
+ | 何らかの理由で Apache が root で起動していない可能性もあります。手動で起動してみて AH0072 エラーが発生しないか確認してください。 |
||
+ | |||
+ | # /usr/bin/httpd -k start |
||
+ | |||
+ | あとは設定に問題があるためにポートに何度も listen しようとしている可能性があります。悪い設定の例: |
||
+ | |||
+ | Listen 0.0.0.0:80 |
||
+ | Listen [::]:80 |
||
+ | |||
+ | === AH01071: Got error 'Primary script unknown' === |
||
+ | |||
+ | これは、仮想ホスト環境などで {{ic|/home}} でファイルを提供している場合、php-fpm systemd ユニットファイルの {{ic|1=ProtectHome=true}} が原因である可能性があります。この機能を無効にするには、[[systemd#ドロップインファイル|php-fpm ユニットファイルの編集]] および {{ic|php-fpm.service}} を [[再起動]] します。あるいは、ドキュメントルートを移動します。 |
||
+ | |||
+ | === php.ini の max_execution_time を変更しても反映されない === |
||
+ | |||
+ | {{ic|php.ini}} の {{ic|max_execution_time}} を 30 (秒) 以上の値に設定しても、30秒後に Apache から {{ic|503 Service Unavailable}} が返ってくることがあります。この問題を解決するには、http 設定の {{ic|<FilesMatch \.php$>}} ブロックの直前に {{ic|ProxyTimeout}} ディレクティブを追加してください: |
||
+ | |||
+ | {{hc|/etc/httpd/conf/httpd.conf| |
||
+ | ProxyTimeout 300 |
||
+ | }} |
||
+ | |||
+ | そして {{ic|httpd.service}} を再起動してください。 |
||
+ | |||
+ | === PHP-FPM: エラーが仮想ホストごとに個別にログに記録されない === |
||
+ | |||
+ | 複数の仮想ホストがある場合は、(ErrorLog Apache ディレクティブを使用して) それぞれの仮想ホストでエラーログを別のファイルに出力することが望ましい場合があります。これが機能しない場合は、エラーを syslog に記録するように PHP-FPM が設定されていることを確認してください。 |
||
+ | |||
+ | {{hc|/etc/php/php-fpm.conf| |
||
+ | output=error_log = syslog |
||
+ | }} |
||
+ | |||
+ | プール設定がそれをオーバーライドしている可能性もあります。次の行がコメントアウトされていることを確認してください: |
||
+ | |||
+ | {{hc|/etc/php/php-fpm.d/www.conf| |
||
+ | output=;php_admin_value[error_log] = /var/log/fpm-php.www.log |
||
+ | }} |
||
== 参照 == |
== 参照 == |
2024年4月24日 (水) 02:53時点における最新版
Apache HTTP Server、略して Apache は Apache Software Foundation によって開発されている、人気のウェブサーバーです。
Apache は PHP などのスクリプト言語や MySQL などのデータベースと一緒に使われることがほとんどです。この組み合わせは LAMP (Linux, Apache, MySQL, PHP) と呼ばれています。この記事では Apache を設定する方法と PHP や MySQL と統合する方法を説明しています。
目次
- 1 インストール
- 2 設定
- 3 拡張
- 4 トラブルシューティング
- 4.1 Apache の状態とログ
- 4.2 Error: PID file /run/httpd/httpd.pid not readable (yet?) after start
- 4.3 /run/httpd が起動時に作成されない
- 4.4 Apache is running a threaded MPM, but your PHP Module is not compiled to be threadsafe
- 4.5 AH00534: httpd: Configuration error: No MPM loaded.
- 4.6 AH00072: make_sock: could not bind to address
- 4.7 AH01071: Got error 'Primary script unknown'
- 4.8 php.ini の max_execution_time を変更しても反映されない
- 4.9 PHP-FPM: エラーが仮想ホストごとに個別にログに記録されない
- 5 参照
インストール
公式リポジトリから apache をインストールしてください。
設定
Apache の設定ファイルは /etc/httpd/conf
にあります。メインの設定ファイルは /etc/httpd/conf/httpd.conf
で、他の様々な設定ファイルも含まれています。シンプルなセットアップであればデフォルトの設定で問題ありません。デフォルトでは、/srv/http
ディレクトリがウェブサイトに訪れた人に見れるようになっています。
Apache を起動するには、systemd を使って httpd.service
を起動してください。
それで Apache が実行されます。ウェブブラウザで http://localhost/ を開いて確認できます。シンプルなインデックスページが表示されるはずです。
任意の設定については次のセクションを見て下さい。
高度なオプション
以下のオプションは /etc/httpd/conf/httpd.conf
で設定できます:
User http
- セキュリティ上の理由で、root ユーザーによって Apache が (直接またはスタートアップスクリプトによって) 起動されるとすぐに指定された UID/GID に切り替わるようになっています。デフォルトはユーザー http で、インストール中に自動で作成されます。
Listen 80
- Apache が使用するポートです。ルーターを使ってインターネットにアクセスする場合は、このポートを開いておく必要があります。
- Apache をローカルでの開発のためにセットアップする場合はあなたのコンピュータからしかアクセスできないようにすると良いでしょう。その場合はこの行を
Listen 127.0.0.1:80
に変更してください。
ServerAdmin you@example.com
- エラーページなどで表示される管理者のメールアドレスです。
DocumentRoot "/srv/http"
- ウェブページを置くディレクトリです。
- 必要に応じて変更してかまいませんが、
<Directory "/srv/http">
もDocumentRoot
と同じように忘れずに変更しないと、新しいドキュメントルートにアクセスしたときに 403 Error (権限不足) が表示されることになります。Require all denied
行をRequire all granted
に変更するのも忘れないで下さい、そうしないと 403 Error になります。また、DocumentRoot ディレクトリとその親ディレクトリには実行権限を与える必要があります (chmod o+x /path/to/DocumentRoot
で設定できます)。それを設定してない場合も 403 Error になります。
AllowOverride None
<Directory>
セクションにこのディレクティブを記述すると Apache は.htaccess
ファイルを完全に無視するようになります。mod_rewrite
などの設定を.htaccess
ファイルで用いる場合は、ファイルのどのディレクティブがサーバー設定を上書きできるようにするか許可できます。詳しくは Apache のドキュメント を参照。
/etc/httpd/conf/extra/httpd-default.conf
では以下の設定が使えます:
サーバーの署名を表示しないようにするには:
ServerSignature Off
Apache や PHP のバージョンなどのサーバー情報を表示しないようにするには:
ServerTokens Prod
ユーザーディレクトリ
デフォルトではユーザーディレクトリは http://localhost/~yourusername/ から見れるようになっており ~/public_html
の中身が表示されます (これは /etc/httpd/conf/extra/httpd-userdir.conf
で変更可能です)。
ウェブ上でユーザーディレクトリが見れないようにしたい場合は、/etc/httpd/conf/httpd.conf
の以下の行をコメントアウトしてください:
Include conf/extra/httpd-userdir.conf
Apache が取得できるようにホームディレクトリのパーミッションが正しく設定されているか確認する必要があります。ホームディレクトリと ~/public_html/
は他者 ("rest of the world") にも実行可能でなければなりません。以下のコマンドでパーミッションを変更できます:
$ chmod o+x ~ $ chmod o+x ~/public_html $ chmod -R o+r ~/public_html
変更を適用するために httpd.service
を再起動して下さい。Umask#マスクの値を設定も参照。
TLS/SSL
TLS/SSL を使うには、openssl をインストールする必要があります。
/etc/httpd/conf/httpd.conf
の以下の3行をアンコメントしてください:
LoadModule ssl_module modules/mod_ssl.so LoadModule socache_shmcb_module modules/mod_socache_shmcb.so Include conf/extra/httpd-ssl.conf
自己署名証明書を作成:
# cd /etc/httpd/conf # openssl req -new -x509 -nodes -newkey rsa:4096 -keyout server.key -out server.crt -days 1095 # chmod 400 server.key # chmod 444 server.crt
/etc/httpd/conf/extra/httpd-ssl.conf
の SSLCertificateFile
と SSLCertificateKeyFile
行で作成した鍵と証明書を指定してください。
CSR を作成する必要がある場合、上記のコマンドを以下のように変えてください:
# cd /etc/httpd/conf # openssl genpkey -algorithm RSA -pkeyopt rsa_keygen_bits:4096 -out server.key # chmod 400 server.key # openssl req -new -sha256 -key server.key -out server.csr # openssl x509 -req -days 1095 -in server.csr -signkey server.key -out server.crt
httpd.service
を再起動して変更を適用してください。
バーチャルホスト
複数のホストを使いたい場合は、/etc/httpd/conf/httpd.conf
の次の行をアンコメントしてください:
Include conf/extra/httpd-vhosts.conf
/etc/httpd/conf/extra/httpd-vhosts.conf
でバーチャルホストを設定します。デフォルトのファイルには初めて設定するときに役立つ詳細な説明の入ったサンプルが含まれています。
ローカルマシンでバーチャルホストをテストするには、バーチャルネームを /etc/hosts
ファイルに追加します:
127.0.0.1 domainname1.dom 127.0.0.1 domainname2.dom
httpd.service
を再起動して変更を適用してください。
多数のバーチャルホストの管理
莫大なバーチャルホストを使う場合、簡単に有効化・無効化できるようにすると便利です。バーチャルホストごとに設定ファイルを作成してそれら全てを一つのフォルダに保存するのが推奨されています、例: /etc/httpd/conf/vhosts
まずフォルダを作成:
# mkdir /etc/httpd/conf/vhosts
次にフォルダに個々の設定ファイルを配置:
# nano /etc/httpd/conf/vhosts/domainname1.dom # nano /etc/httpd/conf/vhosts/domainname2.dom ...
最後に、/etc/httpd/conf/httpd.conf
で設定を Include
:
#Enabled Vhosts: Include conf/vhosts/domainname1.dom Include conf/vhosts/domainname2.dom
行をコメント・アンコメントすることでバーチャルホストを有効化・無効化することができます。
基本的な vhost ファイルは以下のようになります:
/etc/httpd/conf/vhosts/domainname1.dom
<VirtualHost domainname1.dom:80> ServerAdmin webmaster@domainname1.dom DocumentRoot "/home/user/http/domainname1.dom" ServerName domainname1.dom ServerAlias domainname1.dom ErrorLog "/var/log/httpd/domainname1.dom-error_log" CustomLog "/var/log/httpd/domainname1.dom-access_log" common <Directory "/home/user/http/domainname1.dom"> Require all granted </Directory> </VirtualHost> <VirtualHost domainname1.dom:443> ServerAdmin webmaster@domainname1.dom DocumentRoot "/home/user/http/domainname1.dom" ServerName domainname1.dom:443 ServerAlias domainname1.dom:443 ErrorLog "/var/log/httpd/domainname1.dom-error_log" CustomLog "/var/log/httpd/domainname1.dom-access_log" common <Directory "/home/user/http/domainname1.dom"> Require all granted </Directory> SSLEngine on SSLCertificateFile "/etc/httpd/conf/server.crt" SSLCertificateKeyFile "/etc/httpd/conf/server.key" </VirtualHost>
拡張
PHP
まず PHP をインストール して実行します、次に以下の 3 つのサブセクションのいずれかに従ってください。最後に、最後のサブセクションの説明に従ってインストールをテストします。
libphp を使う
この方法はおそらく最も簡単ですが、スケーラビリティが最も低く、軽いリクエスト負荷に適しています。また、mpm モジュールを変更する必要があるため、他の拡張機能で問題が発生する可能性があります (たとえば、#HTTP/2 と互換性がありません)
php-apache を インストール してください。
/etc/httpd/conf/httpd.conf
の以下の行をコメントアウトしてください:
#LoadModule mpm_event_module modules/mod_mpm_event.so
そして次の行をアンコメントしてください:
LoadModule mpm_prefork_module modules/mod_mpm_prefork.so
PHP を有効にするには、以下の行を /etc/httpd/conf/httpd.conf
に追加してください:
- 次の行を
LoadModule
リストのLoadModule dir_module modules/mod_dir.so
の後のどこかに記述:
LoadModule php_module modules/libphp.so AddHandler php-script .php
- 次の行を
Include
リストの最後に記述:
Include conf/extra/php_module.conf
httpd.service
を 再起動 して下さい。
apache2-mpm-worker と mod_fcgid を使う
mod_fcgid と php-cgi パッケージをインストールしてください。
必要なディレクトリと PHP ラッパーのシンボリックリンクを作成:
# mkdir /srv/http/fcgid-bin # ln -s /usr/bin/php-cgi /srv/http/fcgid-bin/php-fcgid-wrapper
/etc/conf.d/apache
の以下の行をアンコメント:
HTTPD=/usr/bin/httpd.worker
以下の内容で /etc/httpd/conf/extra/php-fcgid.conf
を作成:
/etc/httpd/conf/extra/php-fcgid.conf
# Required modules: fcgid_module <IfModule fcgid_module> AddHandler php-fcgid .php AddType application/x-httpd-php .php Action php-fcgid /fcgid-bin/php-fcgid-wrapper ScriptAlias /fcgid-bin/ /srv/http/fcgid-bin/ SocketPath /var/run/httpd/fcgidsock SharememPath /var/run/httpd/fcgid_shm # If you don't allow bigger requests many applications may fail (such as WordPress login) FcgidMaxRequestLen 536870912 # Path to php.ini – defaults to /etc/phpX/cgi DefaultInitEnv PHPRC=/etc/php/ # Number of PHP childs that will be launched. Leave undefined to let PHP decide. #DefaultInitEnv PHP_FCGI_CHILDREN 3 # Maximum requests before a process is stopped and a new one is launched #DefaultInitEnv PHP_FCGI_MAX_REQUESTS 5000 <Location /fcgid-bin/> SetHandler fcgid-script Options +ExecCGI </Location> </IfModule>
/etc/httpd/conf/httpd.conf
を編集します:
- actions モジュールの読み込みのコメントを解除します:
LoadModule events_module modules/mod_actions.so
- (依存する) unixd モジュールのロードの 後 に FCGID モジュールをロードします。これを
<IfModule unixd_module>
ブロック内に配置することもできます:LoadModule fcgid_module modules /mod_fcgid.so
- MPM 設定のインクルードがコメント解除されていることを確認します (このファイルのデフォルトでインストールされたバージョンではコメントが解除されています):
Include conf/extra/httpd-mpm.conf
- 新しい FCGID 設定のインクルードを追加します:
Include conf/extra/php-fcgid.conf
httpd.service
を 再起動 してください。
php-fpm と mod_proxy_fcgi を使う
php-fpm をインストールしてください。
以下の内容で /etc/httpd/conf/extra/php-fpm.conf
を作成:
/etc/httpd/conf/extra/php-fpm.conf
<FilesMatch \.php$> SetHandler "proxy:unix:/run/php-fpm/php-fpm.sock|fcgi://localhost/" </FilesMatch> <Proxy "fcgi://localhost/" enablereuse=on max=10> </Proxy> <IfModule dir_module> DirectoryIndex index.php index.html </IfModule>
/etc/httpd/conf/httpd.conf
の最後に作成したファイルを追加してください:
Include conf/extra/php-fpm.conf
PHP-FPM の設定は /etc/php/php-fpm.d/www.conf
で行えます。特に変えなくても問題なく動作するはずです。
httpd.service
と php-fpm.service
を再起動してください。
PHP が動作するかテストする
PHP が正しく設定されたかどうかテストするには: Apache の DocumentRoot
ディレクトリ (例: /srv/http/
または ~/public_html
) に以下の内容で test.php
という名前のファイルを作成します:
<?php phpinfo(); ?>
動作するか確かめるために次のページを見て下さい: http://localhost/test.php もしくは http://localhost/~myname/test.php
HTTP2
HTTP/2 over TLS サポートを有効にするには、httpd.conf
内の次の行のコメントを解除します:
LoadModule http2_module modules/mod_http2.so
そして、次の行を追加します:
Protocols h2 http/1.1
デバッグするには、サーバー全体ではなくモジュールのみを debug
または info
に設定します:
<IfModule http2_module> LogLevel http2:info </IfModule>
追加の HTTP/2 機能設定を含む詳細については、mod_http2 ドキュメントを参照してください。
トラブルシューティング
Apache の状態とログ
Apache デーモンの状態を表示: systemctl status httpd
Apache のログがある場所は: /var/log/httpd/
Error: PID file /run/httpd/httpd.pid not readable (yet?) after start
unique_id_module をコメントアウトしてください: #LoadModule unique_id_module modules/mod_unique_id.so
/run/httpd が起動時に作成されない
root ユーザーとしての systemd-tmpfiles --create
が "unsafe path transition" について苦情を言った場合は、ルートディレクトリの所有権を確認してください。
ls -la / chown root:root /
Apache is running a threaded MPM, but your PHP Module is not compiled to be threadsafe
php7_module
をロードする際に httpd.service
が失敗して、journal で以下のようなエラーが表示される場合:
Apache is running a threaded MPM, but your PHP Module is not compiled to be threadsafe. You need to recompile PHP.
mpm_event_module
を mpm_prefork_module
で置き換える必要があります:
/etc/httpd/conf/httpd.conf
LoadModule mpm_event_module modules/mod_mpm_event.soLoadModule mpm_prefork_module modules/mod_mpm_prefork.so
そして httpd.service
を再起動してください。
AH00534: httpd: Configuration error: No MPM loaded.
アップグレードによってこのエラーが発生することがあります。httpd.conf
の変化に対応してないのが原因です。修正するには、以下の行をアンコメントしてください:
/etc/httpd/conf/httpd.conf
LoadModule mpm_prefork_module modules/mod_mpm_prefork.so
また、他にもエラーが発生する場合は上記のセクションも参照。
AH00072: make_sock: could not bind to address
原因は複数考えられます。最も一般的な原因は既に別の何かがポートを listen している場合です。netstat で確認してください:
# netstat -lnp | grep -e :80 -e :443
何か出力された場合、ポートを占有しているサービスを停止してみてください。
何らかの理由で Apache が root で起動していない可能性もあります。手動で起動してみて AH0072 エラーが発生しないか確認してください。
# /usr/bin/httpd -k start
あとは設定に問題があるためにポートに何度も listen しようとしている可能性があります。悪い設定の例:
Listen 0.0.0.0:80 Listen [::]:80
AH01071: Got error 'Primary script unknown'
これは、仮想ホスト環境などで /home
でファイルを提供している場合、php-fpm systemd ユニットファイルの ProtectHome=true
が原因である可能性があります。この機能を無効にするには、php-fpm ユニットファイルの編集 および php-fpm.service
を 再起動 します。あるいは、ドキュメントルートを移動します。
php.ini の max_execution_time を変更しても反映されない
php.ini
の max_execution_time
を 30 (秒) 以上の値に設定しても、30秒後に Apache から 503 Service Unavailable
が返ってくることがあります。この問題を解決するには、http 設定の <FilesMatch \.php$>
ブロックの直前に ProxyTimeout
ディレクティブを追加してください:
/etc/httpd/conf/httpd.conf
ProxyTimeout 300
そして httpd.service
を再起動してください。
PHP-FPM: エラーが仮想ホストごとに個別にログに記録されない
複数の仮想ホストがある場合は、(ErrorLog Apache ディレクティブを使用して) それぞれの仮想ホストでエラーログを別のファイルに出力することが望ましい場合があります。これが機能しない場合は、エラーを syslog に記録するように PHP-FPM が設定されていることを確認してください。
/etc/php/php-fpm.conf
error_log = syslog
プール設定がそれをオーバーライドしている可能性もあります。次の行がコメントアウトされていることを確認してください:
/etc/php/php-fpm.d/www.conf
;php_admin_value[error_log] = /var/log/fpm-php.www.log