Successfully reported this slideshow.
Your SlideShare is downloading. ×

Nginx+WordPress+AWS - NginxでWordPressを構築してみよう!

Ad
Ad
Ad
Ad
Ad
Ad
Ad
Ad
Ad
Ad
Ad

Check these out next

1 of 144 Ad

Nginx+WordPress+AWS - NginxでWordPressを構築してみよう!

Download to read offline

2016年3月12日に開催された「WordBench Nagoya」2016年3月度勉強会にて発表した資料になります。

(JAWS DAYS 2016行けなくて申し訳ありません)

2016年3月12日に開催された「WordBench Nagoya」2016年3月度勉強会にて発表した資料になります。

(JAWS DAYS 2016行けなくて申し訳ありません)

Advertisement
Advertisement

More Related Content

Slideshows for you (20)

Viewers also liked (12)

Advertisement

Similar to Nginx+WordPress+AWS - NginxでWordPressを構築してみよう! (20)

Recently uploaded (20)

Advertisement

Nginx+WordPress+AWS - NginxでWordPressを構築してみよう!

  1. 1. Nginx + WordPress + AWS NginxでWordPressを 構築してみよう!
  2. 2. 自己紹介 • 横井 公紀 • https://www.facebook.com/kiminori.yokoi • SIerに勤務しています。 • 主にAWSクラウドの活用提案・環境構築 を行っています。
  3. 3. 本日の内容 は、ここからの内容で回収していますが、 この流れは無視してください。
  4. 4. 損させない 長い前置き
  5. 5. 個人的主観で語る WEBサイト構築の歴史
  6. 6. 2000年~2003年頃 • 無料ホームページサービスが主流 • かつて使ったサービス (tripod)
  7. 7. 2000年~2003年頃 • かつて使ったサービス (ジオシティーズ)
  8. 8. 2000年~2003年頃 • かつて使ったサービス (使える.net)
  9. 9. 2000年~2003年頃 • イラストサイト、テキストサイトブーム。 • HTMLを頑張って覚えた。 • CGIが動いて無料で使えるレンタルサーバ をひたすら探した。
  10. 10. 2000年~2003年頃 • レンタルカウンター、レンタル掲示板、 ゲームCGIを借りて人集めした。 • 2chみたいな掲示板を作って人を集めようとした。 • ホームページランキングサイトに登録して 上位を目指した。 • レンタルサーバの裏の仕組みは 意識しなくても良かった。
  11. 11. 2004年~2009年頃 • ブログサービスが主流 • かつて使ったサービス (livedoor)
  12. 12. 2004年~2009年頃 • ブログブーム。 • ブログのコメント機能がほぼ掲示板を兼ねるため、 レンタルCGIがいらなくなった。 • 日付ごとに記事を書くという文化が定着した。 • 既存テンプレートを変更して独自のデザインを 作った。 • ブログの裏の仕組みは意識しなくても良かった。
  13. 13. 2010年~2013年頃 • ソーシャルページが台頭。 • 集客をいかに収益化するかということも 考えるようになる。 • アフィリエイトが当たり前に。
  14. 14. 2013年~2015年頃 • 2000年頃にホームページ作りに 凝っていた学生が、社会に出て収入を 手にする時期。 • 今まで出来なかった「有料サーバ」 「独自ドメイン」などに手を出すための ハードルが下がりまくる。
  15. 15. どこまで 作りこむか?
  16. 16. どこまで触りたいと思うか • 静的HTML/CSSだけ – 既存の一般ブログサービスで十分できます。 • 動きのあるコンテンツ – JavaScript, PHPなど覚える必要があります。 – CMSを使って拡張するなどの手段があります。 • ミドルウェア以下まで – コスト調整、パフォーマンスも思いのままに!
  17. 17. 時は2016年
  18. 18. クラウド時代のサーバ構築 2 0 1 6 年
  19. 19. 自作サーバも クラウドで!
  20. 20. たくさんの選択肢と組み合わせ × など など
  21. 21. いままでは どうしていたのか
  22. 22. 自作サーバ上Web構築の変遷 • 2003年頃: 物理PC/サーバにApacheを入れてDDNS • 2011年頃: Apache on AWS EC2 の AutoScaling
  23. 23. 自作サーバ上Web構築の変遷
  24. 24. 現在の主流はクラウド活用 AWS東京リージョン エンドユーザ AZ-A AZ-C ・・・ ・・・WEB WEB WEB WEB EC2 RDS (Master) S3 (コンテンツ用 ストレージ) EC2 画像等の 静的コンテンツ RDS (Slave) CloudWatch (監視サービス)
  25. 25. サーバ構築の敷居を下げたAWS • サーバ調達は、簡単操作で数分で完了 • CPU/メモリが足りなくても、 プルダウンで選んで一瞬で増やせる • ネットワークは、CIDRを入力して ボタンを押すだけの楽々設定
  26. 26. 素人でもサーバ構築が可能に
  27. 27. それだけではない
  28. 28. 素人でも高可用性のある サーバ構築が可能に
  29. 29. 訪れたのは 価格崩壊の波
  30. 30. 下がりまくるランニングコスト
  31. 31. 求められるスキルの色が変わった • ただクラウドで作るだけではもうだめ – サーバ代は安くなる一方。普通に作った時の ランニングコストは、もはやベースライン。 • クラウドで工夫して作るスキルが必要 – どう作れば、よりコストメリットを得ること ができるのか。 – どう作れば、より可用性やセキュリティを高 めることができるのか。
  32. 32. 時は巻き戻り
  33. 33. 従来型のクラウドサーバ構築 2 0 1 2 年 LEGACY
  34. 34. 従来型のクラウドサーバ構築 AWS東京リージョン エンドユーザ AZ-A AZ-C ・・・ ・・・WEB WEB WEB WEB EC2 RDS (Master) S3 (コンテンツ用 ストレージ) EC2 画像等の 静的コンテンツ RDS (Slave) CloudWatch (監視サービス)
  35. 35. AWSがサーバ構築の常識を変えた • 仮想ロードバランサー (ELB) – ボタン一つで作成。 さらにボタン一つでサーバを接続。 • 自動スケールイン/アウト (AutoScaling) – 負荷が小さい時はサーバ1台 – 負荷が大きい時はサーバX台 (X >= 2)
  36. 36. それはもはや4年も前のこと
  37. 37. 激変したWebサーバ構築 • パフォーマンスチューニングを AWS任せにすることができた – Apacheの設定を知らなくても、AutoScaling に任せておけばサーバが勝手に増減して、 リクエストを捌いてくれるのだから。 • バーチャルホストを考えるくらいなら サーバをもう1台調達する方が楽になった – だって、そんなにお金かからないし。
  38. 38. ミドルウェアを軽視するように Apacheの設定が分からなくても AWSの機能でサーバが勝手に増え、 リクエストを捌いてくれる。
  39. 39. そして2016年の今
  40. 40. 我々はクラウドに 詳しくなりすぎた
  41. 41. もっと安く 運用できないか ※でも高可用性は欲しい
  42. 42. クラウドに慣れ 気づいたこと
  43. 43. リソースを使わなければ安価 • サーバの起動時間 – 短ければ短いほど安価 • サーバの台数 – 少なければ少ないほど安価 • データ通信量 – 少なければ少ないほど安価
  44. 44. 自作サーバ(物理)時代のコスト 費用 期間
  45. 45. 従来型クラウド時代のコスト 費用 期間
  46. 46. これからの時代のコスト 費用 期間
  47. 47. 自作サーバ(物理)時代の可用性 可用性 費用
  48. 48. 従来型クラウド時代の可用性 可用性 費用
  49. 49. これからの時代の可用性 可用性 費用
  50. 50. つまりは
  51. 51. 低コストで高可用性を目指せ • AutoScalingは発動しないほうが良い – サーバ1台で捌けるリクエスト数が多ければ多い ほど運用コストは下がります。 • サーバは低スペックであればあるほど良い – 安く運用できます。 • サーバと通信しないほうが良い – データ転送料もばかになりません。
  52. 52. そんなに都合良く いくものなのか?
  53. 53. 新時代のクラウドサーバ構築 AWS東京リージョン エンドユーザ AZ-A AZ-C WEB WEB RDS (Master) S3 (コンテンツ用 ストレージ) 画像等の 静的コンテンツ CloudWatch (監視サービス)
  54. 54. 簡素になっている!
  55. 55. 新時代に不要なもの • ロードバランサ (ELB) – 動かすだけで費用が発生。ロードバランサ からの通信(out)に費用が発生。 • 高スペックサーバ – 「CPU1コア、メモリ4GB」未満で 頑張ってみましょう。意外と行けます。
  56. 56. 新時代に必要なもの • Amazon S3等、Webサイト機能を持った クラウドストレージ – 1GBあたり数円というレベルで使用できます。 – Content-Encoding : gzip を付けられます。 • Amazon Route53 – 月額170円くらい。ドメインも別に契約可。
  57. 57. 新時代に必要なもの • EC2 スポットインスタンス – 激安の殿堂。落とさないコツを押さえて使う。 • AWS CLI プログラミング技術 – 「落ちたら上げる」は自動化しよう。
  58. 58. そして
  59. 59. の採用
  60. 60. Q: なんと読むのでしょうか?
  61. 61. A: エンジン(engine) エックス(x)
  62. 62. Nginxとは? • Webサーバになります。 • リバースプロキシサーバになります。 • ロードバランサになります。 • メールプロキシサーバになります。
  63. 63. Nginxとは? • Webサーバになります。 • リバースプロキシサーバになります。 • ロードバランサになります。 • メールプロキシサーバになります。
  64. 64. いつNginxは誕生したのか? • 誕生は2002年で、公開は2004年。 日本でブログが全盛期になる前に 既に存在していたのです。 • 最新版(1.9.11)は 2016年2月に公開されました。
  65. 65. Nginxを管理する「Nginx, inc.」 • フリーでオープンソースなNginxですが、 「Nginx, inc.」と呼ばれる法人によって 管理され、公開されています。 • Nginxの開発、コンサル、有償サポート を提供しています。
  66. 66. 公式ドキュメントが脆弱 • 検索すると、個人が「使ってみた」資料 はたくさん存在している。 • 日本語のドキュメントは少ない! 技術的な調査や裏取りをするには 公式Wikiを頑張って訳すしかない。。。
  67. 67. Nginxが解決する「C10K問題」 • 「CLIENT 10000台 問題」 • ハードの性能は問題なくても、 クライアントの数が多くなりすぎると サーバがパンクしてしまう。 – サーバ側でプロセスが足らなくなる。
  68. 68. • 1スレッドで「イベントループ方式」 Nginxのリクエスト処理方式 クエリキューキュー取得 キューを処理 キュー待ち レスポンスキュー とにかく投げて処理
  69. 69. とにかくすごい
  70. 70. m3.medium たった1台で
  71. 71. このくらいは序の口。 !→
  72. 72. いける。まだまだいける。 !?→
  73. 73. むかしむかしは • その昔は、多くのリクエストを スケーラブルに処理するために、 AWSのAuto Scalingで頑張っていました。 • その結果、先の画像と同じくらいの リクエストを捌くことは、 実は可能でした。 • 今のままでも良かった。良かったのです。
  74. 74. だがしかし!
  75. 75. 「Auto Scalingはお金がかかる」 という発想 • Auto Scalingのおかげで、最初から 最悪の事態を見越してサーバを調達する 必要がなくなり、サーバ調達コストが 落ちました。 • しかし、そもそも論として 「低スペックなサーバ1台で、スケールせず 大量のリクエストを捌く」 ことができれば、もっとコストが落ちると 思いませんか?
  76. 76. ならば実現できる
  77. 77. 今日は入門編なので 触ってみよう
  78. 78. ON
  79. 79. シンプルな構成 AWS東京リージョン エンドユーザ AZ-A AZ-C WEB WEB RDS (Master) S3 (コンテンツ用 ストレージ) 画像等の 静的コンテンツ CloudWatch (監視サービス)
  80. 80. 前提条件 • AWSアカウントは作ってあるという体で 説明します。 • OSはCentOS 7を使用します。 EC2はm3.mediumを使用します。 • VPC (Subnet)、セキュリティ(SG、NACL)、 RDS、S3の説明は必要最小限とします。
  81. 81. EC2から 作ってみよう
  82. 82. EC2を作ってみよう
  83. 83. EC2を作ってみよう
  84. 84. AWSにおける「CentOS」 • 「EC2 Marketplace」から選択して、 導入します。 • いかにも追加料金がかかりそうですが、 標準のAWSリソースへの課金以外の 追加料金は発生しません。
  85. 85. インターネット公開するには • 検証用であれば「パブリックIP」 (自動割り当てされるグローバルIP) • 本番用であれば「Elastic IP」 (固定グローバルIP)
  86. 86. EC2を操作するには • 秘密鍵(pem)を使ってSSHで接続します。
  87. 87. インストール してみよう
  88. 88. Nginxをインストールしてみよう • 早速rootになってyumコマンドを 打ちます。ところが・・・
  89. 89. 標準リポジトリにNginxがない! • CentOS7では、まだ標準のリポジトリに Nginxが公開されていないようです。 • そこで公式「Nginx.org」のリポジトリ をCentOSから認識できるようにします。
  90. 90. yumリポジトリを追加する • rootユーザで以下コマンドを 実行してください。 • コマンド – # yum install http://nginx.org/packages/centos/7/noarch /RPMS/nginx-release-centos-7- 0.el7.ngx.noarch.rpm
  91. 91. yumリポジトリを追加する
  92. 92. もう一度Nginxをインストール
  93. 93. 最低限の設定をする
  94. 94. サンプルのホストを追加する
  95. 95. 必要なものを 入れていこう
  96. 96. phpをインストール
  97. 97. php-fpmをインストール • NginxでPHPを動かすために必要
  98. 98. php-fpmを設定 • www.confに最低限の設定をします。
  99. 99. php-fpmを設定
  100. 100. php-fpmを設定
  101. 101. php-fpmを起動
  102. 102. php-mysqlをインストール • 「Wordpressあるある」を回避するため • 存在しないことを確認しインストール
  103. 103. 「php.ini」を編集 • 先ほどのphp-mysqlをインストール後実施 ←コメントを外して有効化
  104. 104. 起動
  105. 105. Nginxを起動
  106. 106. 試しに コンテンツを 置いてみよう
  107. 107. テスト用コンテンツ
  108. 108. 果たして 表示されるのか?
  109. 109. 表示された!
  110. 110. いよいよ WordPressの インストールです
  111. 111. WordPressを入手
  112. 112. WordPressを解凍・展開 以下略
  113. 113. WordPressを解凍・展開 以下略
  114. 114. 果たして 表示されるのか?
  115. 115. 表示された!
  116. 116. さくさく軽快表示
  117. 117. さらに速さを 追求しよう
  118. 118. チューニングの勘所 (入門編) • gzipでレスポンスを返すようにすると、 データ通信量が減ります。 • よくアクセスされる静的ファイルには、 必ずブラウザキャッシュが 効くようにします。 – エラーページはキャッシュしましょう。
  119. 119. チューニングの勘所 (入門編) • 無駄なアクセスログを吐かないように します。 – 404はいらないと考えても良いでしょう。 • fastcgi cacheを有効化します。 – php-fpmに処理を投げる前にキャッシュが あれば返してくれます。
  120. 120. 一通りやったけど あまり早くならないよ
  121. 121. Nginxにしたけど早くならない? • 全てのコンテンツが自サーバあるいは、 ブラウザキャッシュが効いている 他サーバから返されていますか? • Google Chromeでもレスポンス速度を 確認することが可能です。 一度見てみましょう。
  122. 122. 多くはキャッシュから返ります
  123. 123. ワースト3を見てみましょう
  124. 124. まさかのボトルネック
  125. 125. Adsenseは表示が遅い • Google Adsenseの「非同期コード」を 使うと、他のHTMLコードの読み込みを 待たずに読み込むことができるため、 多少早まりますが、Nginxを極めると、 このオプションを使用しても 広告の表示のほうが遅い場合があります。 • ページの読み込みが遅い時の対策に 有効だったのですが、ページのほうが 早くなってしまいました。。。
  126. 126. 自サーバだけで 完結するのが 一番速いということか
  127. 127. 外部参照は少なくしよう • Google Adsenseのように外部サーバを 参照するコードはなるべく書かないよう にします。 • ほとんど気にならない程度とはいえ、 Nginxの効果を打ち消してしまいます。
  128. 128. どのくらい 安くなったのか
  129. 129. EC2 (昨年12/20に移行)
  130. 130. 全体
  131. 131. 確実にコストが落ちている
  132. 132. Before
  133. 133. After
  134. 134. Before vs After • EC2利用料 $55.34 → $28.89 – Auto Scalingしなくても負荷に耐えるため、 サーバ1台分の費用まで落ちた。 – ロードバランサー(ELB)が不要になり 費用が落ちた。 • データ通信料 $18.42 → $22.97 – レスポンスが早くなり、ページ回遊数と 滞在時間が増えたためと推測。
  135. 135. は 訪問者離れを 食い止める
  136. 136. ページが早く表示されることの 意味 出展:ページ表示2秒でイライラし始め、3分の1は「もういいや」となる, 安田英久, ITMediaビジネスオンライン, http://bizmakoto.jp/makoto/articles/1005/19/news005.html
  137. 137. で大量の同時接続を捌く
  138. 138. で高速にレスポンスを返す
  139. 139. まとめ • Nginxを導入することによる期待効果は – 数百・数千という大量の同時接続を 処理することが可能 – これらの接続に対して高速にレスポンスを 返すことが可能 – ランニングコストの削減、アクセス数の増加、 コンバージョンの増加を実現
  140. 140. 裏側の仕組みを知るって 大事だな。。。
  141. 141. 今日から早速 試してみよう
  142. 142. ON
  143. 143. END ご静聴ありがとうございました。

×