ここのサーバーはさくらのVPS上でUbuntu 14.04を動かしています。
いくつか問題があったので調整してみました。
nginx+fastcgi+php構成に変更
これまでWordPressのパーマネントの関係で、このブログでは
nginxからリバースプロキシでApacheにリクエストを投げるという無駄なことをしていました。
そこで今回ようやくnginx+fastcgi+php 構成に変更しました。
1. fastcgiのインストール
Ubuntuでは以下のコマンドでインストールします
sudo apt-get install php5-fpm |
2. nginxの設定
nginxの設定は以下を参考にさせてもらいました。
nginx+php+fastcgiでwordpressを動かしてみた – polidog lab++
変えているところはfastcgi_passの設定で、UNIXソケットでやりとりするようにしています。
WordPress上でSuperCacheプラグインを使用しているので
http://wiki.dreamhost.com/Nginx#WordPress
を参考にキャッシュが有効になるようにしました。
server { listen 80; server_name diary.carme-ln.net; -- 中略 --- location / { index index.php index.html index.htm; root [path]; if (-f $request_filename) { break; } set $supercache_file ''; set $supercache_uri $request_uri; if ($request_method = POST) { set $supercache_uri ''; } # Using pretty permalinks, so bypass the cache for any query string if ($query_string) { set $supercache_uri ''; } if ($http_cookie ~* "comment_author_|wordpress|wp-postpass_" ) { set $supercache_uri ''; } # if we haven't bypassed the cache, specify our supercache file if ($supercache_uri ~ ^(.+)$) { set $supercache_file /wp-content/cache/supercache/$http_host$1/index.html; } # only rewrite to the supercache file if it actually exists if (-f $document_root$supercache_file) { rewrite ^(.*)$ $supercache_file break; } # all other requests go to Wordpress if (!-e $request_filename) { rewrite ^.*$ /index.php last; } } location ~\.php$ { root [path]; fastcgi_pass unix:/var/run/php5-fpm.sock; fastcgi_index index.php; fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name; include fastcgi_params; } } |
無事に表示できているようなのでApacheを起動しないようにします
sudo update-rc.d -f apache2 remove |
Apacheを止めたのでサーバーのメモリ使用量を減らすことが出来ました。めでたし。
サーバーの起動が遅い問題
サーバーを再起動した時に起動がやたら長い問題が出ていました。
さくらのVPSのコンソールから起動の様子を観察していると
“Waiting up to 60 more seconds for network configuration…”
と表示されており調べてみると、
どうやらネットワーク設定に問題があってフェイルセーフでウエイトが掛かっていたようです。
/etc/network/interfacesを見て見るとネットワーク設定を読み込む時にethtoolが呼ばれています。
# The loopback network interface auto lo iface lo inet loopback # The primary network interface auto eth0 iface eth0 inet static address xxx.xxx.xxx.xxx netmask xxx.xxx.xxx.xxx gateway xxx.xxx.xxx.xxx dns-nameservers xxx.xxx.xxx.xxx,xxx.xxx.xxx.xxx post-up /usr/sbin/ethtool -K eth0 tso off |
ethtoolのパスを調べてみると/usr/sbinではなく/sbinにありました。
サーバーをアップグレードした際にethtoolのパスが変わって、スクリプトが走らないため起動に時間が掛かっていたようです。
/sbin/ethtool に変更してあげると起動が遅い問題は解消しました
画像の表示などが遅い
起動時にethtoolで設定されるTSOの無効化が有効になっていないせいでした。
post-up /sbin/ethtool -K eth0 tso off |
さくらのVPSではこれを入れないと通信が遅くなるみたいです。
このVPSサーバーは初期のVPSマシンなので、最新のサーバーではどうなっているかは分からないです。