= apache
PHP FastCGI Process Manager の略.PHP の処理を,Apache などの中で行うのではなく,別のプロセスにおいて処理をしている模様.
NextCloud の Server Tuning ページ にて,PHP-FPM が紹介されていたので,設定してみた.
% cd /usr/ports/lang/php74 % make config
┌─────────────────────────────── php74-7.4.19 ─────────────────────────────────┐ │ ┌──────────────────────────────────────────────────────────────────────────┐ │ │ │ [x] CLI Build CLI version │ │ │ │ [x] CGI Build CGI version │ │ │ │ [x] FPM Build FPM version │ │ │ │ [x] EMBED Build embedded library │ │ │ │ [ ] PHPDBG Interactive PHP debugger │ │ │ │ [ ] DEBUG Build with debugging support │ │ │ │ [x] DTRACE Build with DTrace probes │ │ │ │ [x] IPV6 IPv6 protocol support │ │ │ │ [x] MYSQLND Build with MySQL Native Driver │ │ │ │ [x] LINKTHR Link thread lib (for threaded extensions) │ │ │ │ [x] ZTS Force Zend Thread Safety (ZTS) build │ │ │ └──────────────────────────────────────────────────────────────────────────┘ │ ├──────────────────────────────────────────────────────────────────────────────┤ │ < OK > <Cancel> │ └──────────────────────────────────────────────────────────────────────────────┘
php_fpm_enable="YES"
# 以下の proxy 関係の module のコメントを外す(有効化する) LoadModule proxy_module libexec/apache24/mod_proxy.so LoadModule proxy_fcgi_module libexec/apache24/mod_proxy_fcgi.so # PHP module の無効化 #LoadModule php7_module libexec/apache24/libphp7.so # 9000 番で起動している FPM プロセスに proxy する. <FilesMatch "\.php$"> SetHandler "proxy:fcgi://127.0.0.1:9000/" </FilesMatch>
% /usr/local/etc/rc.d/apache24 restart
HTTP2 は,SSL/TLS を必須としつつも,トランスポートレイヤから上を全部独自実装しつつ,各ファイルの通信を一つのセッションの中で行うようにしたもの(という理解)なので,小さなファイルのやりとりが多い場合などに,パフォーマンス工場の度合が激しい.NextCloud の Server Tuning ページでもやるべきと記述されていたので,設定してみた.
NextCloud の写真フォルダのロードは,体感で 5 〜 10 倍レベルで速くなった.これは,絶対に設定しとくべき.
/usr/ports/www/mod_http2 というものと,apache24 に付属の http2 モジュールの両方がある模様.正直どちらが正しいのかは良く分からない...
LoadModule http2_module libexec/apache24/mod_h2.so
Protocols h2 http/1.1
Apache のマイナーバージョンを上げたら,このエラーが. デバッグまでがっつりやるのも面倒で,適当に ports を再インストール(=再コンパイル)していたら,mod_http2 を再コンパイルしたところで復活.
以前似たようなエラーが出た際は,php 関連だった気がする. Apache のマイナーバージョンアップをする場合でも,mod_* 系や PHP 系も再コンパイルしておくべきな気がした.まる.
ServerName の代わりに ServerAlias を使う.
<VirtualHost a.b.c.d> ServerAlias hoge.jp *.hoge.jp baka.jp ... </VirtualHost>
Runtime error Error message : UA_INI_FILE for "" not found.
WITH_BUNDLED_PCRE=true