WebApps + Azure CDNを使い年間1,000円程度で独自ドメイン・SSL対応済み高負荷対策なWordPressサイトを 作ってみた話。

Pocket

cdn-ssl-ttl
WebサイトでSSLを利用した上に高負荷対応も考慮した構築にするとWeb的に結構なお値段になりますが、Azure CDNを利用するとびっくりするくらい安くSSL対応の高負荷対応サイト(しかもWordPress利用)が構築できるんでは?みたいのを見かけまして、本当かどうか試してみました~。
CDNなので頻繁に更新が発生するサイトとしては不向きですが、WordPressサイトにすればプラグインでお問い合わせフォームを作ることができますし、ユーザーに問合せをしてもらいたいキャンペーン用のLPページ的な使い方だったらイケるのではないかと。
ちなみに今回の価格にはドメイン・メールサービス・Azure CDN・WebApps(WordPress)のお値段全て入っておりますw

事前準備

今回の方法を試すため、最低限以下のものを準備する必要があります。

  • ドメイン
  • メールアドレス

このあたりはお手軽にサクッと進めたいので、私は毎度のごとくムームードメイン でドメイン&メールサービスを利用するようにしました。
今回のドメイン&メールサービスの費用は1年間で【754円】。ジッサイ安い。
メールアドレスは最低限「admin@ドメイン名」「postmaster@ドメイン名」を用意しておきます。(理由は後述)

今回やったこと

cdn-ssl01
図解するとこのような感じ。
Azure CDN は使った分だけ課金が行われます。なので超高負荷サイトでもない限り、費用面はかなりお安くなります。
今回の手順は以下。

  • 新規WebAppsを作成しWordPressをインストール
  • Azure CDNの設定
  • Azure CDNにカスタムドメイン設定
  • Azure CDNにSSL設定

さて、WebApps上にWordPressサイトを構築しますが、今回のWebAppsはFreeプランを使用します。
通常であればWebAppsのFreeプランは「カスタムドメインの設定ができない」「SSLサポート無し」です。
サイトのURLも「[アプリ名].azurewebsites.net」となります。(カスタムドメイン設定とSSLの設定はBasic以上のサービス)
ですが、今回はこのBasic以上のサービスからサポートされる内容(カスタムドメインとSSLの設定)をAzure CDNで設定してしまおう、という話。
Azure CDNを利用すると、カスタムドメイン設定とSSL設定を無料で利用することができます。

FreeプランのWebAppsを新規作成

WordPress+SQliteを使用する

WebApps内に必要なもの全て(WordPressや画像やデータベース)を置きたいのと、費用を抑えたいので「WordPress+SQlite」を使用しました。
SQliteはファイルタイプのデータベースなので、WordPress構築時に必須になるデータベースを別途用意する必要がありません。
というわけで、WebApps+WordPressサイト構築でかかった費用は【0円】

cdn-ssl02
kuduを使うなりして、WebApps(Freeプラン)に「WordPress+SQlite」をインストールしておきます。
WordPressはrootではなく、「/wordpress/」内に配置しました。
今回はお問い合わせフォームを利用したいので、プラグイン「Contact Form7」「Send Grid SMTP」を利用しています。

Azure CDNの設定

cdn-ssl03
赤枠内に「CDN」と入力して検索するか、左メニューから「CDNのプロファイル」を探して作成します。

cdn-ssl04
赤枠内を適宜入力していきます。価格レベルはS1「Standard Verizon」を選択。
CDNが作成されるのを少し待ちます。

cdn-ssl05
作成されたら、エンドポイントをクリック。

cdn-ssl06
「エンドポイントの追加」が表示されるので赤枠内を入力していきます。
今回はCDNで配信する対象がWebAppsの中のWordPressサイトなので、このような内容になっています。

cdn-ssl07
しばらく待つと、エンドポイントの表示がこのように変わります。
この表示になったら、カスタムドメインの設定を行います。

Azure CDNのエンドポイントにカスタムドメインを設定

DNSプロバイダー管理画面での作業

私はムームードメインを利用しているので、そちらでの設定を行う方法です。
cdn-ssl010
ドメイン操作→ムームーDNS→該当のドメインで表示。
赤枠のように入力します。これで変更すると、Azure側でカスタムホスト名が設定できます。

Azureポータルの作業

cdn-ssl08
「CDNのプロファイル」でエンドポイントをクリック。
上記の表示になったら「カスタムドメイン」をクリック。

cdn-ssl09
赤枠内に「カスタムホスト名」を入力します。
この部分、DNSプロバイダーでカスタムホスト名から CDNエンドポイントのホスト名への DNSマッピングを作成していない状態だとエラーになるので注意!

cdn-ssl011
上記の設定完了後、再度カスタムドメインをクリックすると、このブレードが開きます。
カスタムドメインHTTPSをオンにします。

cdn-ssl012
カスタムドメインのカスタムドメインHTTPSは「Disabled」の表示です。
このあとDigiCertからドメインの所有権を検証のためのメールが送られてきます。
公式ページ内からの抜粋は以下。

カスタム ドメインの HTTPS を有効にした後、HTTPS の証明書プロバイダーである DigiCert は、WHOIS 登録者情報に基づいて電子メール (既定) または電話でドメインの登録者に連絡し、ドメインの所有権を検証します。さらに DigiCert は、次のアドレスに確認メールを送信します。 WHOIS 登録者情報がプライベートである場合は、これらのアドレスのいずれかから直接承認できることを確認してください。

  • admin@
  • administrator@
  • webmaster@
  • hostmaster@
  • postmaster@

大体、設定完了してから30分くらいでDigiCertからメールがきます。
私は何度かAzureCDNを作り直したりしたのですが、「admin@」「postmaster@」に確認メールがきたのを確認しました。
詳細は以下のページをどうぞ。

Azure CDN カスタム ドメインの HTTPS の有効化
https://docs.microsoft.com/ja-jp/azure/cdn/cdn-custom-ssl

cdn-ssl013
このような内容のメールがくるのでURLをクリックしてページを表示。

cdn-ssl014
内容を確認して、一番下に署名、。これで手続きは完了です!
このあとSSLが利用できるようになるまでひたすら待つんですが、私は8時間程度で有効になっていました。
有効になると、カスタムHTTPSの「Disabled」が「Enabled」に変わります。

cdn-ssl015
きちんと「保護された通信(HTTPS)」と表示されています!

追記:AzureのDDos攻撃の対策について

今回のやり方を公開したあとに「もしDDos攻撃あったら費用が大変なことになるのでは?(俗に言うパケ死)」という話を結構みましたので、AzureのDDos攻撃の対策について加筆しておきます。
CDN含め、Azureは基盤でDDos攻撃を弾く機能が既にあるとのこと。
ちなみに、中の人ですらセキュリティテストやってますって連絡なしに攻撃したら落とされるそうでw
詳細は公式ドキュメントをどうぞ。

Microsoft クラウド サービスとネットワーク セキュリティ
https://docs.microsoft.com/ja-jp/azure/best-practices-network-security

また、AzureのDDos攻撃対策についてはこちらの記事も大変参考になると思います!

@mihochannelさん、@kazumihirose さん、AzureのDDos攻撃対策についての情報ありがとうございました!!m(_ _)m

最後に

※該当のページは配信を停止しました。
CDNは高いというイメージがあったのですが、WebAppsやBlobストレージとうまく組み合わせれば通常のレンタルサーバー並の価格でSSL対応した高負荷にも耐えられるサイトが構築できるので、非常に便利ではないかと!
今回はWebAppsを利用しましたがBlobストレージに静的サイトを置いて、CDNをBlobストレージに向けるとかでもイイ感じではないかと。
ただ、SSLの有効化に時間かかったりするので即日対応しないといけない!とかはオススメできませんが…。
使いどころは考えますが、手順もコツさえ掴めばすぐに構築できるのが利点かなと思いました!

参考にさせていただきました

Azure CDN がカスタムドメインでの HTTPS に対応したので試してみた
http://blog.shibayan.jp/entry/20170209/1486651705

Azure CDN の概要
https://docs.microsoft.com/ja-jp/azure/cdn/cdn-create-new-endpoint

コメントを残す

メールアドレスが公開されることはありません。

このサイトはスパムを低減するために Akismet を使っています。コメントデータの処理方法の詳細はこちらをご覧ください