AWS / PHP / Python ちょいメモ

amazon web service , PHP, Python を使ったときのメモ。日本語でググってもわからなかった事を中心に。

PHP on Apache2.4 & RedHat 6 (by SCL)

利用している RedHat 6 のサーバーに、PHPを追加サポートする事に。以前 Redhat6.x + SCL 使う時に気をつけたい3つのポイント - AWS / PHP / Python ちょいメモ で書いた SCLの仕組みを使って構築しました。

たぶん、CentOS 6 + SCL のケースも同じで行けるのではないかと。

環境とパッケージ

CakePHPApache で動作させようと構成しました。PHPは、php-fpm (FirstCGI Process Manager) で、デフォルト9000番で待ち受けするサービスを起動。Apacheからは、mod_proxy_fcgi (FastCGI support module for mod_proxy) でProxyをあげて、前述のFPMにリクエストを流す形。

パッケージ

後は、CakePHP の動作のために、PHPのPDO経由でMySQL NativeDriverを使いMySQLへの接続という構成です。
なおパッケージは、すべてSCLリポジトリからの取得となります。

設定

PHP FPM

listenするポートの設定と、サービスの起動を行います。

// /opt/rh/php55/root/etc/php-fpm.d/www.conf
...
listen = 127.0.0.1:9000
// サービス デフォルト起動条件
$ chkconfig  | grep fpm
php55-php-fpm   0:off   1:off   2:off   3:off   4:off   5:off   6:off

// 手動でサービスON
$ sudo service php55-php-fpm start
Starting php-fpm:                                          [  OK  ]

Proxy FCGI

サービス起動したFPMに流すURIを、ProxyPassMatchディレクティブを使って定義します。

// PHP-FPM on application.conf
ProxyPassMatch ^/myapp/.*\.php(/.*)?$ fcgi://localhost:9000/var/www/ enablereuse=on

最後

あとは apachectl restart するだけ。

CakePHPも 「DirectoryIndex index.html index.php」 の設定と相まって、上記の設定ほぼそのままで動作。ただし、.htaccessが効いてない動作なのでファイルの実存確認とかもない状態ですね。

後述の参考 Qiita の2サイトなどをベースに、もう少し本番用には作り込まないとと思案中です。

その他

参考

感想

Apache 2.4の変化(mod_fastcgi は無いとか) を再度確認したとともに、PHPのホスト方法の変化も再認識した作業となりました。

nginxの情報が多く、あまりApacheはやらないのかなぁ?調査して作業した結果、Apache2.4のFastCGIの取り扱い方は、良く似たものなのではというように思われました。