apache+FastCGI(mod_fastcgi)+PHP-FPMでWebサーバを構築するときの注意点
CentOSでapache+FastCGI(mod_fastcgi)+PHP-FPMでWebサーバを構築する時、下記のページを参考にするとうまくいきます。
または、下記のページ
WordPressをCentOS+Apache+mod_fastcgi+PHP-FPMを使って動かしてみた – As a Futurist…
両方のページを参考にすると大きく違うのは下記の記述、前者が下の様になっているのに対して
FastCGIExternalServer /var/www/fcgi-bin/php-fpm -host 127.0.0.1:9000
後者は下記のようになっています。
FastCGIExternalServer /etc/httpd/fcgi-bin/php-cgi -host 127.0.0.1:9000 -pass-header Authorization
まあ、オプションは置いといて、php-fpmをサーバとしているか、php-cgiをサーバとしているかの違いなのですが、
前者はphp-fpmという実態の無いパスをサーバとしていて、実態はなくても良いと書いてあります。
後者は、php-cgiを作ったパスにコピーしてサーバとしています。
私自身よくわかっていないのですが、やってみたところ前者は動かなくて最初の画像と下記のログのように無いよと怒られます。動きませんでした。
[Tue Oct 28 16:58:07 2014] [error] [client xxx.xxx.xxx.xxx] script not found or unable to stat: /var/www/fcgi-bin/php-fpm
後者を試してみたところ動きました。
が、しかし、実態がなくても動くと言っているものが動かないこと、実は他にも設定がいるのではないかといろいろ疑ってみたり、
後者は、動くけど、前者がいらないと言っているものを、phpの実体をコピーしてきて使っているのがなんとなく気持ち悪い。
いったい何が正しいのだろうか?と悩んで色々試してみる。わけです。
で、前者が動かないのが気持ち悪いわけです。もやもやするわけです。なんとか解決できないものかと、php-fpmのサイトを探してもっと大元のちゃんとしたインストールマニュアルが無いか探して見るわけですが、なかなか見つからないわけです。
動いてる方でいいかなーと諦めかけていた時に見つけたのが下記のページです。英語のページなんですけど、明示的に/etc/httpd/conf.d/fastcgi.confの18行目をコメントアウトしろと書いてあります。
# line 18: comment out
#FastCgiWrapper On
CentOS 6 – Apache httpd – FastCGI + PHP-FPM : Server World
追記:今(20:09)気がついたんですけど下記日本語のページがありました。
CentOS 6 – Apache httpd – FastCGI + PHP-FPM : Server World
実際に、/etc/httpd/conf.d/fastcgi.confを編集して「FastCgiWrapper On」の行をコメントアウトしたら、前者の方法でも動くようになりました。
実際、前者はfastcgi.confをないものとして一から書くやり方だったので、「FastCgiWrapper On」の事が全く想定外なわけです。
となると、やっぱり前者のやり方の方が良さそうなので前者を採用することにします。
で、その前は下記の方法で動かしていたんですけど、プロセスが常駐しないので悩んでたんですが、そういうものかなーと納得していたんですね。とりあえずメモリーの節約はできまてますし、でももしかしたらこれも、「FastCgiWrapper On」が関係してるのかもしれませんね。余裕があったら試してみます。
How to Setup Apache2 (HTTPD) with FastCGI and PHP on CentOS/RHEL 6/5
あと、どちらも/etc/conf.d/php.confは消すか移動と書いてあるけどバーチャルホストを使っている場合とか、
DirectoryIndex index.php
がないと、サイトが表示されなくなるかも。上の行を覗いてコメントアウトするか、各バーチャルホストの定義にDirectoryIndexを追加する必要があります。
タグ : apache, FastCGI, mod_fastcgi, php-fpm