Qiita Teams that are logged in
You are not logged in to any team

Log in to Qiita Team
Community
OrganizationEventAdvent CalendarQiitadon (β)
Service
Qiita JobsQiita ZineQiita Blog
39
Help us understand the problem. What are the problem?

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

Why not register and get more from Qiita?
  1. We will deliver articles that match you
    By following users and tags, you can catch up information on technical fields that you are interested in as a whole
  2. you can read useful information later efficiently
    By "stocking" the articles you like, you can search right away
39
Help us understand the problem. What are the problem?