目次

= apache

PHP-FPM [2021-05-27]

PHP FastCGI Process Manager の略.PHP の処理を,Apache などの中で行うのではなく,別のプロセスにおいて処理をしている模様.

NextCloud の Server Tuning ページ にて,PHP-FPM が紹介されていたので,設定してみた.

  1. PHP の ports において,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>                           │
     └──────────────────────────────────────────────────────────────────────────────┘
  2. /etc/rc.conf にて,php-fpm の自動起動を設定しておく.
    php_fpm_enable="YES"
  3. /usr/local/etc/apache24/httpd.conf の中の mod_php を無効化・PHP の処理を FPM に渡す・渡すためにの proxy module の有効化,をそれぞれ行う.
    # 以下の 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>
  4. Apache 及び FPM の再起動
    % /usr/local/etc/rc.d/apache24 restart 

参考情報


http2 [2021-05-27]

HTTP2 は,SSL/TLS を必須としつつも,トランスポートレイヤから上を全部独自実装しつつ,各ファイルの通信を一つのセッションの中で行うようにしたもの(という理解)なので,小さなファイルのやりとりが多い場合などに,パフォーマンス工場の度合が激しい.NextCloud の Server Tuning ページでもやるべきと記述されていたので,設定してみた.

NextCloud の写真フォルダのロードは,体感で 5 〜 10 倍レベルで速くなった.これは,絶対に設定しとくべき.

/usr/ports/www/mod_http2 というものと,apache24 に付属の http2 モジュールの両方がある模様.正直どちらが正しいのかは良く分からない...

AH00052 child pid 81693 exit signal Segmentation fault (11) [2021-10-16]

Apache のマイナーバージョンを上げたら,このエラーが. デバッグまでがっつりやるのも面倒で,適当に ports を再インストール(=再コンパイル)していたら,mod_http2 を再コンパイルしたところで復活.

以前似たようなエラーが出た際は,php 関連だった気がする. Apache のマイナーバージョンアップをする場合でも,mod_* 系や PHP 系も再コンパイルしておくべきな気がした.まる.


virtualhost 環境で一つの documentroot に対して複数の servername をつけたい.

ServerName の代わりに ServerAlias を使う.

<VirtualHost a.b.c.d>
  ServerAlias hoge.jp *.hoge.jp baka.jp
  ... 
</VirtualHost>

php をアップグレードしたら、pukiwiki でエラーが出る

Runtime error
Error message : UA_INI_FILE for "" not found. 
WITH_BUNDLED_PCRE=true