エロサイトの作り方

2013年11月から勉強しながらエロサイトを作っています。

PHP-FPMの設定を見直す

今までほぼデフォルトで運用してきましたが、WordPressで「予約投稿の失敗」と出るようになったのでついでに見直そうという趣旨です。

完成系の設定

/etc/php5/fpm/php-fpm.conf
[global]
pid            = /var/run/php5-fpm.pid
error_log      = /var/log/php5-fpm/error.log

include=/etc/php5/fpm/pool.d/*.conf
/etc/php5/fpm/pool.d/www.conf
[www]
user  = www-data
group = www-data

listen       = /var/run/php5-fpm.sock
listen.owner = www-data
listen.group = www-data
listen.mode  = 0660

pm              = static
pm.max_children = 10
pm.max_requests = 100

slowlog                 = /var/log/php5-fpm/www-slow.log
request_slowlog_timeout = 5s

php_flag[display_errors]             = off
;php_admin_value[memory_limit]       = 32M
php_admin_value[error_log]           = /var/log/php5-fpm/www-error.log
php_admin_flag[log_errors]           = on
php_admin_value[upload_max_filesize] = 5M
php_admin_value[post_max_size]       = 5M
php_admin_flag[expose_php]           = off

あんまり変えるべき設定が無いですね。

接続数の設定

pm              = static
pm.max_children = 10
pm.max_requests = 100

pm = staticにして、アクセス数の高低によらず接続数を10本固定にするようにしました。 dynamicにするとプロセスの生成/破棄でコストがかかるし、ピーク時などのリソース枯渇時に捌ける量が不安定になるので、こういう所は固定がいいのかなと思っています。

max_requests = 100で、リクエスト100回毎にプロセスを再生成するようにしています。メモリリーク用の保険みたいな設定かな。

遅い処理をログ出力する

slowlog                 = /var/log/php5-fpm/www-slow.log
request_slowlog_timeout = 5s

これは見直し前から変更ないのですが、5秒以上かかる処理はwww-slow.logに出力しています。あんまり見ることはないのですが。

画面にエラーを出さない

php_flag[display_errors]             = off

処理中に500エラーが出た場合にスタックトレース画面を出さないようにする設定ですね。

しかし、WordPressではレンダリング中にエラーが出るとスタックトレースを出したりするので、そこの抑制は別設定ですね。

プロセスで使えるメモリ上限

;php_admin_value[memory_limit]       = 32M

いずれ使うかもしれないけど、今は無効化。

500エラーが出た際にログ出力する

php_admin_value[error_log]           = /var/log/php5-fpm/www-error.log
php_admin_flag[log_errors]           = on

設定はしているけど、まだログが出たことがない。

送信時の上限

php_admin_value[upload_max_filesize] = 5M
php_admin_value[post_max_size]       = 5M

嫌がらせででかいPOSTを投げたりされないようにですね。

レスポンスヘッダからX-Powered-By: PHP/x.x.xを消す

php_admin_flag[expose_php]           = off

まあ、誇らしげにバージョンを明記する必要もないので。