Apache2.4+PHP-FPMのhttpd.confの個人的メモ

  • 35
    いいね
  • 0
    コメント
この記事は最終更新日から1年以上が経過しています。

丁寧な解説を書くのが面倒なので個人的メモ。

Apache2.4と言えばevent-mpmが目玉。しかしPHPを素直にmod_phpとして使おうとするとprefork-mpmになってしまい、event-mpmが使えず何だかもったいない。

Apache自体はeventで、PHPはPHP-FPMによるFastCGIで、と組み合わせる場合、mod_proxy_fcgiを使うと楽らしい。2.4から標準装備になっており、設定を有効にするだけで使える。

このページが詳しい。

PHP-FPM - Httpd Wiki http://wiki.apache.org/httpd/PHP-FPM

インストール手順は省略。
httpd.confでは、この2行のコメントアウトを外しておく。

LoadModule proxy_module modules/mod_proxy.so
LoadModule proxy_fcgi_module modules/mod_proxy_fcgi.so

PHP-FPMはポート9000で起動しているものとすると、個別のサイト設定は↓こんな感じ。

<Macro VhostPHP $domain $droot>
<VirtualHost $domain:80>
  ServerName $domain
  DocumentRoot $droot
  ProxyPassMatch \.(?:ico|png|gif|jpeg|jpg|css|js|html|php|json|xml)$ !
  ProxyPassMatch ^(.*)$ fcgi://127.0.0.1:9000$droot/index.php$1

  <Directory $droot>
    Require all granted
  </Directory>
</VirtualHost>
</Macro>

Macroはmod_macroをインストールしないと動かない部分なので、VirtualHostの中身をコピペして$XXXXを書き換える感じでも動く。

ProxyPassMatchで簡単な置き換えができるので、SymfonyやZend Frameworkのようなよくあるフロントコントローラーに直接リクエストを投げることができる。(上記の例ならmod_rewrite不要)

nginxを使う場合とそっくり?