search
LoginSignup
39

More than 5 years have passed since last update.

posted at

Organization

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

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

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を使う場合とそっくり?

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
What you can do with signing up
39