Upgrade to Pro — share decks privately, control downloads, hide ads and more …

20170204 WrodBench倉敷 第一回勉強会 StaticPress+S3で安全で落ちないサイトを作ろう

Takeshi FURUSATO
February 04, 2017
51

20170204 WrodBench倉敷 第一回勉強会 StaticPress+S3で安全で落ちないサイトを作ろう

WrodBench倉敷 第一回勉強会のスライドです。

Takeshi FURUSATO

February 04, 2017
Tweet

Transcript

  1. 自己紹介 • 名前:古里 武士(ふるさと たけし) • 倉敷出身 倉敷在住 • 株式会社イー・ネットワークス

    所属 • 総務・人事、プログラマ、インフラエンジニア • WordBench倉敷 モデレーター • JAWS-UG岡山 副支部長 • 好きなWordPressプラグイン:StaticPress • 好きな食べ物:カレー
  2. アジェンダ StaticPress+S3で安全で落ちないサイトを作ろう • WordPressのお悩み。 • StaticPressってなに? • AmazonS3ってなに? • ご利用パターン

    • 注意事項・制限事項 • 作ってみましょう。 • まとめ ※このスライドは後ほど公開いたします。
  3. StaticPressってなに? StaticPress は、WordPress サイトを 静的HTMLに変換するためのプラグインです!! http://ja.staticpress.net/ MADE IN JAPAN!! ※注意

    静的HTML: プログラムが動作しない普通のHTML 動的HTML: プログラムが動作して生成されるHTML
  4. AmazonS3ってなに? • Amazon Web Servicesが提供するサービスの1つ • 2006年から開始 • 複数のデータセンターで管理(3ヶ所以上で自動複製) •

    99.99 % の可用性 ※ほぼダウンすることはなし • 99.999999999 % の堅牢性 ※ほぼデータ消失なし • お安い($0.0330 /GB ※月額) • ファイル置き場やウェブ公開領域として利用可能 詳しくはhttp://www.awsmicrosite.jp/s3-hosting/ 第4回 JawsUG okayama 月額3.3円〜でレンタルサーバーを始める方法 http://www.slideshare.net/tfurusato/33-33701158
  5. 通常のWordPressとの比較 • 通常のWordPressのサイト の場合 • StaticPress + AmazonS3 の場合 リクエストに応じてプログラムが動作、

    HTMLを都度動的に生成し、サイト表示 予めStaticPressで静 的HTML化して、S3 に登録しておく。 リクエストに応じて、 AmazonS3からHTML を答え、サイト表示 AmazonS3 サーバー サイト閲覧者 サイト閲覧者 サーバー
  6. ご利用パターン • データが増えたり、サーバのスペックが悪い。 • 短期的、突発的にアクセスが急増 • ガイ◯の夜明け、トレたまなど、TVで紹介される。 • Twitterやfacebookとかで炎上。 •

    どのくらいアクセス来るか予想不可能。 結果、サイトが表示されない。機会損失!! 1. サイト表示が遅い、急にアクセス増えた StaticPress+AmazonS3で公開するなら 秒間80万リクエスト処理できるので安心です!!
  7. 補足:性能について 実際に、性能を確認してみました。 対象: 某求人情報サイト(WordPress) 投稿数:3,000件程度 検証: 対象に同時に100人がアクセスしたとき、1秒間に何件処理できるかを比較 A社VPS A社VPS A社VPS

    B社VPS B社VPS KUSANAGI 今回の構成 ディスク Magnetic Magnetic Magnetic SSD SSD ーー メモリ 1GB 4GB 4GB 4GB 4GB ーー サーバー Apache Apache Nginx Nginx Nginx ーー 結果 (リクエスト/s) None 0.45 1.25 8.21 41.26 286.67 ※この比較は根本的に仕組みが異なるので、あまり意味がありませんが・・・・。
  8. 注意事項・制限事項 • データベース・PHPは動いていません。 → 動的コンテンツ(スケジュール公開とか)できません。 • コメントは使えません。 → Facebookコメントなどで代用 •

    サイト内検索も使えません。 → Googleカスタムサーチで代用 • コンタクトフォームも使えません。 → Googleフォームやセキュアフォームで代用 • UAでの切り替えプラグインも使えません → レスポンシブで対応
  9. 作ってみましょう • 材料 • ドメイン(お名前とかで取得) • AmazonWebServicesのアカウント ※以下に流れが説明されています。 https://aws.amazon.com/jp/register-flow/ •

    作り方 1. 独自ドメインでアクセスできるようにする ※AWS R53の設定 2. StaticPressが出力する公開領域を作成 ※AWS S3とCloudFrontを作成 3. 公開領域と独自ドメインを紐付け ※AWS R53とCloudFrontを連携 4. StaticPressが出力するための権限を作成 ※AWS IAMを作成 5. WordPressサーバー作成 ※AWS Lightsailでサーバー作成 6. StaticPress、StaticPress S3インストール・設定
  10. 作ってみましょう 2. StaticPressが出力する公開領域を作成 ※AWS S3,CloudFrontを作成 DNS (Route53) S3 CDN (CloudFront)

    サーバー (WordPress) サイト閲覧者 AWSでは、ソリューションの構築「静的ウェブサイトホス ティング」というメニューがあり、これらを容易に作成す るツールがあります。
  11. 作ってみましょう 3.公開領域と独自ドメインを紐付け ※AWS R53とS3を連携 DNS (Route53) S3 CDN (CloudFront) サーバー

    (WordPress) サイト閲覧者 設定した独自ドメインで、用意した静的ウエブサイトにア クセスできるように、紐付けを行います。
  12. 作ってみましょう 4.StaticPressが出力するための権限を作成 ※AWS IAMを作成 DNS (Route53) S3 CDN (CloudFront) サーバー

    (WordPress) サイト閲覧者 この後で作るWordPressサーバーがS3にファイルを書き込みするため の権限を作成します。
  13. 作ってみましょう 5.WordPressサーバー作成 ※AWS Lightsailでサーバー作成する DNS (Route53) S3 CDN (CloudFront) サーバー

    (WordPress) サイト閲覧者 AWS Lightsailを利用して、サーバーを作成します。 https://amazonlightsail.com/
  14. 作ってみましょう 6. WordPressの設定 DNS (Route53) S3 CDN (CloudFront) サーバー (WordPress)

    サイト閲覧者 作成したサーバーにアクセスして、 StaticPress、StaticPressS3をインストール、公開してみる。
  15. 6.WordPressの設定 黒い画面で以下を入力 cd /opt/bitnami/apps/wordpress/htdocs/wp-content/plugins/staticpress/includes/ sudo cp class-static_press.php class-static_press.php.org sudo vim

    class-static_press.php 「画像つきの投稿が動かない」現象に対する対処 730行目あたり --- if (is_wp_error($permalink)) continue; --- の後に以下を追加 if (preg_match('/.*¥.html¥/.*/', $permalink, $m)) { continue; }
  16. Lightsailの画面からSSHを起動。以下を入力。 sudo apt-get install git cd /home/bitnami/apps/wordpress/htdocs/wp-content/plugins/ git clone https://github.com/megumiteam/staticpress-s3.git

    sudo chown -R bitnami:daemon staticpress-s3 ※gitとStaticPressS3をインストールします。 6.WordPressの設定 StaticPressS3をインストール IP IP
  17. Key Key バケット名 AWS Access Key:作成したIAMのAccessKey AWS Secret Key:作成したIAMのSecretKey AWS

    Region:「US_EAST_1」を選択 S3 Bucket:「aws-website-****」を選択 「Save Changes」を選択 6.WordPressの設定 StaticPressS3の設定をする。
  18. 補足:費用について 概算ですが、以下のような費用感となります。 ※1ヶ月分の料金とします。 ※1ページ1MB、100リクエスト、月間10,000PVと仮定。 項目 金額 Amazon CloudFront (リクエストに対する料金) $1.26

    Amazon CloudFront (転送量に対する料金) $1.40 Amazon S3 (データ保存に対する料金) $0.04 Amazon Route53(DNS管理対する料金) $0.50 Amazon Lightsail(WordPressサーバー料金) $5.00 合計: $8.20 $1=120円で計算すると。。。。 約1,000円/月
  19. Q&A

  20. 作ってみましょう • 材料 • 先程の環境 ※本件のためにCloudFrontを利用しました。 • 作り方 1. 独自ドメインのメール受信環境を作る

    ※Amazon SESの設定 2. SSL/TLS証明書を取得する。 ※AWS CertificateManager設定 3. SSL/TLS証明書を設置する。 ※AWS CloudFrontに設置 4. StaticPressの設定変更、動作確認 • 補足 今回、ドメイン認証による証明書を取得し、設置します。 証明書を取得するためには、ドメイン所有者である証明が必要です。 この証明(認証)はメール受信にて行います。
  21. 作ってみましょう 1.独自ドメインのメール受信環境を作る ※Amazon SESの設定 DNS (Route53) S3 CDN (CloudFront) サーバー

    (WordPress) サイト閲覧者 SSL SSL証明書発行 (CertificateManager) メール受信 (Amazon SES)
  22. 作ってみましょう 2.SSL/TLS証明書を取得する ※AWS CertificateManager設定 DNS (Route53) S3 CDN (CloudFront) サーバー

    (WordPress) サイト閲覧者 SSL SSL証明書発行 (CertificateManager) メール受信 (Amazon SES)
  23. 作ってみましょう 3.SSL/TLS証明書を設置する ※AWS CloudFrontに設置 DNS (Route53) S3 CDN (CloudFront) サーバー

    (WordPress) サイト閲覧者 SSL SSL証明書発行 (CertificateManager) メール受信 (Amazon SES)