応答速度28.8倍。WordPressをApacheからNginxに移行して感じたブログ運営
公開日:
:
最終更新日:2016/03/30
programing

昔からやろうやろうと思って出来ていなかった、このブログ(Wordpress)のWebサーバをApacheから、Nginxに移行しました。おまけにNginxのリバースプロキシキャッシュを導入したら、応答速度が約30倍になって、わっしょいなので、やったことを書いてみます。
移行方法や設定方法は、情報も多くてそんなに難しくないので、サーバー環境自由にさわれる人は、是非チャンレンジしていただいてですね、Yahoo!砲にも負けない環境を構築いただくのが良いと思うんですよ。はい。
Yahoo!砲なんて、いつ来るんですかねぇ。 ( ´_ゝ`)フーン
まぁ、備えあれば憂いなし、ということで。
スポンサーリンク
現在のブログホスト環境
ハマコーはさくらVPSの2Gプランを使ってます(参考:料金・仕様一覧|VPS(仮想専用サーバ)はさくらインターネット)。
同スペックのレンタルサーバーに比べると割高だけれど、このやりたい放題の環境、大好きです。
よくあるXSERVERとかのレンタルサーバーと違うところは、サーバーのroot権限もらえて、全て自分の思い通りに構築できるところ。その分、面倒は多いんですが。
この環境を選んだ顛末なんかは、こちらに書いてます。
FC2ブログをさくらVPSのWordPressに移行しました。そんでWordPressはアツい。
ApacheからNginxへの移行方法
というわけで、 移行方法を書いてみようと思ったのですが、この界隈は同じことを試されている方が非常に多くおられてですね!!ハッキリ言って、自分がイチからここに、移行方法を書く必要を全く感じませんでした。( ー`дー´)キリッ
というわけで、参考にさせていただいたサイトを紹介いたします。
移行方法メイン
【nginx】【超高速】 WordPress のウェブサーバーを nginx にして、プロキシキャッシュを使ってパフォーマンスをとても向上させるまでの試行錯誤です!【Apache からの卒業】 | oki2a24
むっちゃ丁寧で詳しいです。ポート番号を分けて、基本動作を事前に確認したり、実際に作業するときのリスクを回避するための手順を非常に細かく記載されています。丁寧に追っていけば、ほぼ問題なく作業できると思います。
丁寧にやった自分も、2時間ほどでとりあえずの設定は完了しました。
UserAgentでモバイルサイトを切り替えている場合の対応
nginx のキャッシュをモバイル(スマホやタブレットなど)に対応する方法 | レンタルサーバー・自宅サーバー設定・構築のヒント
超強力なNginxのリバースプロキシキャッシュだけれど、UserAgentでPC用サイトとモバイルサイトを切り分けている場合、その切り分けをキャッシュキーにいれておかないと、PCとモバイルで同一のキャッシュが生成されてしまい、両方で同じ画面が出てしまいます。
そんな時は、こちらのサイトを参考に、キャッシュキーの追加をしましょう。
Nginx Cache Controllerの設定方法
WordPressプラグインNginx Cache ControllerでPC用キャッシュとスマホ用キャッシュの両方を削除する設定メモ
記事投稿時にNginxのリバースプロキシキャッシュをクリアしてくれるプラグインのNginx Cache Controller。基本的な使い方はこちらを参照。
非常に便利なんですが、キャッシュキーをUserAgentで切り分けている場合、そのままだと使えません。その場合は、こちらの記事でfunctions.phpにフックを追加して、対応しましょう。
移行前後のパフォーマンス
htmlやCSSや全く触っていないため、パフォーマンス計測はApache Benchを使います。
Apache Benchの使い方はこちらが詳しい。
参考:Apache Benchでサクッと性能テスト – Qiita
移行前のApacheBenchログ
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 |
This is ApacheBench, Version 2.3 <$Revision: 1554214 $> Copyright 1996 Adam Twiss, Zeus Technology Ltd, http://www.zeustech.net/ Licensed to The Apache Software Foundation, http://www.apache.org/ Benchmarking hamako9999.net (be patient).....done Server Software: Apache Server Hostname: hamako9999.net Server Port: 80 Document Path: /docomo-minimum/ Document Length: 109980 bytes Concurrency Level: 100 Time taken for tests: 16.584 seconds Complete requests: 100 Failed requests: 77 (Connect: 0, Receive: 0, Length: 77, Exceptions: 0) Total transferred: 11023670 bytes HTML transferred: 10998070 bytes Requests per second: 6.03 [#/sec] (mean) Time per request: 16584.449 [ms] (mean) Time per request: 165.844 [ms] (mean, across all concurrent requests) Transfer rate: 649.12 [Kbytes/sec] received Connection Times (ms) min mean[+/-sd] median max Connect: 63 119 185.0 86 1165 Processing: 5857 12397 3803.3 14276 16405 Waiting: 2238 7552 4118.1 9217 12977 Total: 5925 12516 3843.8 14372 16581 |
移行後のApacheBenchログ
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 |
This is ApacheBench, Version 2.3 <$Revision: 1554214 $> Copyright 1996 Adam Twiss, Zeus Technology Ltd, http://www.zeustech.net/ Licensed to The Apache Software Foundation, http://www.apache.org/ Benchmarking hamako9999.net (be patient) Server Software: nginx/1.6.2 Server Hostname: hamako9999.net Server Port: 80 Document Path: /docomo-minimum/ Document Length: 28595 bytes Concurrency Level: 100 Time taken for tests: 5.822 seconds Complete requests: 1000 Failed requests: 0 Total transferred: 28944000 bytes HTML transferred: 28595000 bytes Requests per second: 171.77 [#/sec] (mean) Time per request: 582.181 [ms] (mean) Time per request: 5.822 [ms] (mean, across all concurrent requests) Transfer rate: 4855.13 [Kbytes/sec] received Connection Times (ms) min mean[+/-sd] median max Connect: 29 95 124.1 77 1257 Processing: 81 435 570.6 206 4273 Waiting: 33 141 166.4 84 936 Total: 155 531 594.3 286 4400 |
移行前後の比較
いろいろ出ているけれど、一番重要なのは、Requests per second(一秒あたりのリクエスト処理数)
移行前:6.03 → 移行後:171.77
というわけで、28.8倍の応答速度増加を達成したのでした。めでたし、めでたし。
1秒あたり200弱リクエスト処理できるのであれば、よっぽどのアクセス過多じゃない限り、サーバー側がエラーを吐くということは無いので、ひとまず安心といったところです。
ただ、ブログのレスポンスは、サーバーの応答速度よりはクライアント側のレンダリングに依存する部分が大きいので、1リクエストあたりの体感的なレスポンスがそこまで爆速になったという印象はありません。このブログ見ている人もそうでしょう。もし突き詰めるなら、クライアント処理側のチューニングも必要になります。
自分は、まぁSEO的に最低限のレスポンスは確保したかと思っているので、これ以上、手を付ける予定は今のところ無いです。
イチから構築してみることのメリット
ここまで読んで、レンタルサーバーでWordpressホストしている人は「面倒くさいことしてるなぁ」と思ったかと思います。俺も思うぜ!!
ただ、レンタルサーバーでWordpressホストする、それはそれでリスクあるんですよねぇ。
昔からお世話になっているグアバさんがXSERVERを使っていたんですが、先日、こんな悲劇が起こりました。
ブログ「ラブグアバ」は閉鎖し、はてなブログで「グアバノート」を開設します! – グアバノート
一番悔しいのはご本人だと思うんだけれど、レンタルサーバーのこの体たらく、酷い。ありえない。なんでやねん。AHOKA。
WordPressぐらのシンプルなCMSだったら、そうそう復旧不可能になったり、いつまでたってもレスポンスが戻ってこないなんてことは無いと思うんですよね。
それを、サーバの基本部分をレンタルサーバーに依存しているために、ログの解析にせよ原因追求にするにせよなんにせよ、一次情報にたどり着けない。自分で全て解析できない。このもどかしさに非常に恐怖を覚えました。
面倒くさいけれど頑張れば、どうとでもなるVPS環境
自由度が高い、VPSとかの仮想プライベートサーバも、仮想環境自体は、ホスティング業者に生殺与奪を握られているわけです。だから全てが自由というわけでは無い。
ただ、限られた権限しか持てないレンタルサーバーに比べて、サーバーのroot権限があるVPS環境は、比べるまでもないぐらい自由度が違う。別にWordpressじゃなくてもCMSならなんでもいいし、サブドメイン増やして別CMS動かしたり、Webサービス立ち上げたり思うがまま。
その分、面倒な事は確かに多い。知っておかないといけないこともあるし、下手な設定したら、普通にサーバー乗っ取られたりします。
ただ、必要な投資と割りきって勉強して、振りかかるトラブルにも対応して自分の経験値をあげていけば、ブログ執筆の経験値と合わせて、サーバ運営の経験値も蓄積して、安定したブログ運営環境を手に入れることができるというわけです。
はてなブログという選択肢は有り
グアバさんは、結局どうしようもなくなり、「ブログ書くこと以外のことに時間をつかいたくない」という理由で、はてなブログにいかれてます。これはこれでナイス選択だと思います。
WordPressに比べれば、それこそ自由度は減ってしまうけれど、インフラ環境を気にしないでいいのは、大きな非常に大きなメリットだろうなぁと思います。
レンタルサーバのWordPressが一番危険では?
例えバックアップをしっかりとっていたとしても、トラブルで、自分が築き上げてきた屋台骨を失ってしまう可能性が高い、レンタルサーバーでのWordPress運営。
まぁグアバさんのは特殊事情かもしれないけれど、ちょっとでも今の状況に恐怖を感じて、腰を上げてやってみようという人には、VPSの仮想環境や、専用サーバー、AWSなんかのクラウドサーバーサービスを検討しても良いと思います。
それでは、今日はこのへんで。ハマコー(@hamako9999)でした。
参考書籍
紹介したブログ記事を丁寧に読んでいけば、ApacheからNginxへの移行は、あまり困らずにできると思います。
ただ、Nginxの特徴とか、設定ファイルの構成はあらかじめ知っておいたほうが理解も深まるし応用も効きます。
自分は移行した後にこの本を読んだけれど、Nginxの特徴から、Apacheとの比較、移行時に注意しておくべきポイントが非常にわかりやすくまとまっているので、事前に読んでおくのをオススメいたします。
安定のオライリー。深く知るには最適の本。自分もちょくちょく読み込み中です。Apacheでmod_rewriteをヘビーに使っている場合の移行方法とかは、こちらが詳しいです。
PC-記事下-サブ(Amazon)
programingの記事一覧
ブログ主について
関連記事
-
-
Linux初心者から抜け出すための最適本「シェルプログラミング実用テクニック」
しばらく、LinuxやらMacのターミナル触ってると、こんなことを感じる人も多いのでは。 「c
-
-
技術評論社の無料小冊子「電脳会議」がITエンジニアにおススメ
この、電脳時代!!音楽でも本でもなんでもかんでも電子化されている昨今だけど、技術評論社が発行してい
-
-
WordPressの任意の記事にだけ目次をつける方法(Table of Contents使用)
ブロガーの皆さん、記事に目次つけてますか? 「つけたい日もあれば、つけたくない日もある」
-
-
10分で設定完了。WordPressに監視サービスNewRelicを無料で導入してみた
アカウント登録からはじめて設定完了まで10分程度。恐ろしいほど手軽に導入できるくせに、情報量が半
-
-
日本初のDrupalイベントでスピーカー登壇してきました in Drupal Camp Japan Kyoto
春うららかな4月の京都。日本初のDrupalCampというイベントで、光栄にもスピーカー登壇して
-
-
サイトイメージががらりと変わるWebフォントを導入してみた。簡単で効果はでかい。使用前後のイメージを添えて。
元旦の朝、ガキ使の録画を見るという重大なミッションが残されているハマコー(@hamako9999
-
-
フラットデザインな配色やレイアウトを参考にする時におすすめのページ。CategoryやColorShemeでの分類が便利
最近ようやく、WordPressで自分が採用しているテーマStingerのデフォルト状態から、デ
-
-
オンラインプログラミング学習の雄、Codecademyのスマフォアプリが出た。その狙いは?
以前から激賞しまくっているCodecademy。 Codecademyがプログラミング学習に最
-
-
WordPressのStingerを自由自在にカスタマイズするための8つの修行
Stinger Advent Calendar 2013、19日目担当のハマコー(@hamako9
-
-
ValutPress使いは要注意!WordPressバックアップの落とし穴
WordPressで日々ブログを更新されている皆さん、ブログデータのバックアップはとっていますか
Comment
[…] http://anopara.matrix.jp/2014/10/01/10-min-nginx-wordpress/ http://kawatama.net/web/548 http://www.server-memo.net/server-setting/nginx/nginx-413.html http://hamako9999.net/apache2nginx/ […]