さくらVPS 1GにNginxとPHP-FPMをいれてWordPressブログを作ったメモ

さくらレンタルサーバ(スタンダード)から、さくらVPS 1GにWordPressブログを引越した。
目的は節約。元々レンタルとVPS両方借りてたんです。

構成は、nginx-1.0.15, php-5.4.10, php-fpm, mysql-5.5.28。

結果的にレスポンスが早くなった。

移行するときのインストールや設定が面倒だったので手順をメモしときます。

バックアップ・リストア

BackWPupプラグインを使った。
WordPressのファイルとデータベースデータを丸ごとひとつにまとめてくれて、リストアもツールを使って簡単にできるのでおすすめ。

参考:今こそ安心できるWordPressバックアップを!復旧作業まで実際にやってみたWordPress丸ごとバックアップ法

VPSの環境構築

OSは、CentOS6.2。

# yum install nginx  
# yum install --enablerepo=remi php-cli php-mbstring php-mysql php-pecl-apc php-fpm  
# yum install mysql-server  

参考:さくらVPS: nginx/PHP/WordPressインストールガイド

php-fpmの設定

ユーザ, グループと、子プロセスの上限数等を変更する。

# vi /etc/php-fpm.d/www.conf  
listen = /var/run/php-fpm/php-fpm.sock  
user = nginx  
group = nginx  
pm.max_children = 15  
pm.start_servers = 5  
pm.min_spare_servers = 2  
pm.max_spare_servers = 5  

最初、pm.max_children等の数がでかすぎて負荷テストしたらサーバのload averageが70を突破し、元々動いていた色んなスクリプトが音信不通になるという悲劇に見舞われたので、一応確認しとくことをおすすめします。

参考:nginxベースの高速なWordPress環境をお名前.comのVPSで構築

nginxの設定

リバースプロキシ、php-fpmとの連携を設定する。

色んなサイトの設定の良いとこどりでやってみた。
Unixドメインソケットだったり、WPTouch用のTipsだったり。。。

参考:
nginxベースの高速なWordPress環境をお名前.comのVPSで構築
さくらVPSとnginxリバースプロクシで最速WordPressブログを作る方法(ベンチマーク付き)
WPTouch と Nginx リバースプロキシ
nginx のバーチャルホストでキャッシュを取ることができない場合は header を確認してみる
さくらVPS: Nginx + Apache 構成の設定方法(コメント欄)

ベンチマーク

別のサーバからブログのトップページにabをかけた結果。

$ ab -n 1000 -c 100 http://www.ninxit.com/blog/  

さくらレンタルサーバ スタンダード:

Server Software:        Apache/1.3.42  
Server Hostname:        www.ninxit.com  
Server Port:            80  
  
Document Path:          /blog/  
Document Length:        387 bytes  
  
Concurrency Level:      100  
Time taken for tests:   8.049 seconds  
Complete requests:      1000  
Failed requests:        22  
   (Connect: 0, Receive: 0, Length: 22, Exceptions: 0)  
Write errors:           0  
Non-2xx responses:      984  
Total transferred:      1390552 bytes  
HTML transferred:       1180662 bytes  
Requests per second:    124.24 [#/sec] (mean)  
Time per request:       804.916 [ms] (mean)  
Time per request:       8.049 [ms] (mean, across all concurrent requests)  
Transfer rate:          168.71 [Kbytes/sec] received  
  
Connection Times (ms)  
              min  mean[+/-sd] median   max  
Connect:        7   31  26.2     19     109  
Processing:    64  400 932.3    265    7997  
Waiting:       29  369 815.1    252    7399  
Total:         90  432 935.4    295    8044  
</pre>  
  
さくらVPS 1G(いまの環境):  
<pre lang='text'>  
Server Software:        nginx/1.0.15  
Server Hostname:        www.ninxit.com  
Server Port:            80  
  
Document Path:          /blog/  
Document Length:        45527 bytes  
  
Concurrency Level:      100  
Time taken for tests:   4.074 seconds  
Complete requests:      1000  
Failed requests:        0  
Write errors:           0  
Total transferred:      46804520 bytes  
HTML transferred:       46537240 bytes  
Requests per second:    245.44 [#/sec] (mean)  
Time per request:       407.427 [ms] (mean)  
Time per request:       4.074 [ms] (mean, across all concurrent requests)  
Transfer rate:          11218.59 [Kbytes/sec] received  
  
Connection Times (ms)  
              min  mean[+/-sd] median   max  
Connect:       37  111  25.0    108     184  
Processing:   134  277  63.8    275     573  
Waiting:       25  104  39.1     99     260  
Total:        185  388  63.7    386     683