ただメモができるだけのブラウザアプリ「TextArea」はこちらw

WordPressをAWSで構築する5つの方法ー構築方法毎の使用するAWSサービスやWordPressプラグイン情報など

WordPressをAWS上に構築する方法について記載します。

AWS上に構築する方法は5つのパターンがあり、それぞれ特徴やメリットとデメリットがありますので、この点について記載していきます。

構築パターンの特徴を知って適切な構築方法を選択しよう!という記事です。

まずはどのような構築方法があるかについて記載していきます。

WordPressをAWS上に構築する方法は5つ

構築方法は以下の5つの方法があります。それぞれ特徴と難易度が異なってきます。

構築方法特徴難易度
EC2単体・EC2単体でシンプルに構築

シンプルな構成なので、構築が簡単

EC2単体ー静的ページ配信・WordPressのコンテンツを静的ページ化したものを配信★★★

静的ページ化するためのプラグインの設定が必要なので、少し難易度高め

EC2+CloudFront配信・WordPressのコンテンツをCloudFront経由で配信★★★

CloudFrontの設定が必要なため、少し難易度高め

EC2ー静的ページ+CloudFront配信・WordPressのコンテンツを静的ページ化したものをCloudFront経由で配信★★★★

静的ページ化するためのプラグインの設定が必要、かつ、CloudFrontの設定が必要なため、難易度高め

EC2ー静的ページ+S3+CloudFront配信・WordPressのコンテンツを静的ページ化したものをS3に格納し、CloudFront経由で配信★★★★★

静的ページ化するためのプラグインの設定が必要、かつ、静的ページをS3に転送が必要で、CloudFrontの設定も必要なため、難易度が最も高い

WordPress構築方法毎の比較情報

次に、WordPressの構築方法毎の比較を行っていきます。

EC2単体EC2単体ー静的ページ配信EC2+CloudFront配信EC2ー静的ページ+CloudFront配信EC2ー静的ページ+S3+CloudFront配信
使用するAWSサービスEC2(Lightsailでも可)EC2(Lightsailでも可)EC2(Lightsailでも可)

CloudFront

EC2(Lightsailでも可)

CloudFront

EC2(Lightsailでも可)

S3

CloudFront

 

使用するWordPressプラグイン

StaticPressClear CloudFront CahceStaticPress

Clear CloudFront Cahce

StaticPress

StaticPress S3

Clear CloudFront Cahce

 

配信方式

サイトアクセスの度にWordPress(PHP)がページを生成するWordPressコンテンツを静的ページ化しておき、サイトアクセス時は静的ページを表示する(サイトアクセス時はWordPressは動かない)CloudFrontがページをキャッシュしていて、サイトアクセス時はCloudFrontのキャッシュを見ることになる

ただし、CloudFrontにキャッシュがない場合、EC2でWordPress(PHP)がページを生成する動きとなる(EC2単体と同様)

 

CloudFrontがページをキャッシュしていて、サイトアクセス時はCloudFrontのキャッシュを見ることになる

ただし、CloudFrontにキャッシュがない場合、EC上の静的ページにアクセスすることとなる(EC2単体ー静的ページ配信と同様)

CloudFrontがページをキャッシュしていて、サイトアクセス時はCloudFrontのキャッシュを見ることになる

ただし、CloudFrontにキャッシュがない場合、S3上の静的ページにアクセスすることとなる

WordPressコンテンツの表示速度

サイトアクセスの度にWordPress(PHP)がページを生成するため、表示速度が遅くなりやすい

★★

静的ページ化しているため、サイトアクセス時はWordPress(PHP)は動かないので、表示速度の向上が見込める

★★★

CloudFrontがページをキャッシュしていて、サイトアクセス時はCloudFrontのキャッシュを見ることになるため、表示速度の高速化が見込める。ただし、CloudFrontにキャッシュがない場合、EC2でWordPress(PHP)がページを生成する動きとなる(EC2単体と同様)

★★★★

CloudFrontがページをキャッシュしていて、サイトアクセス時はCloudFrontのキャッシュを見ることになるため、表示速度の高速化が見込める。ただし、CloudFrontにキャッシュがない場合、EC上の静的ページにアクセスすることとなる(EC2単体ー静的ページ配信と同様)

★★★★★

CloudFrontがページをキャッシュしていて、サイトアクセス時はCloudFrontのキャッシュを見ることになるため、表示速度の高速化が見込める。ただし、CloudFrontにキャッシュがない場合、S3上の静的ページにアクセスすることとなる

捌けるアクセス量(大量アクセス時に安定したサイト表示が可能か)

サイトアクセスの度にWordPress(PHP)がページを生成するため、サーバに負荷がかかりやすく捌けるアクセス量は少なくなる傾向

捌けるアクセス量を増やすにはサーバスペック(EC2のインスタンスタイプ)をあげる必要がある

★★

静的ページ化しているため、サイトアクセス時はWordPress(PHP)は動かないため、サーバの負荷軽減が見込め、捌けるアクセス数も増加する

★★★

CloudFrontを使っているため、基本的にはCloudFrontのキャッシュが使われ、EC2には負荷がかかりづらいので、捌けるアクセス数も増加する

ただし、CloudFrontにキャッシュがない場合、EC2でWordPress(PHP)がページを生成するため、EC2へ負荷がかかるケースもある

★★★★

CloudFrontを使っているため、基本的にはCloudFrontのキャッシュが使われ、EC2には負荷がかかりづらいので、捌けるアクセス数も増加する

ただし、CloudFrontにキャッシュがない場合、EC2上の静的ページを返すため、EC2へ負荷がかかるケースもある

★★★★★

CloudFrontとS3の構成となるため、基本的にどんなアクセス数にも耐えられる構成となっている

セキュリティ★★★

WordPressサーバが公開されているため、一定のセキュリティリスクあり

★★★

WordPressサーバが公開されているため、一定のセキュリティリスクあり

★★★

WordPressサーバが公開されているため、一定のセキュリティリスクあり

★★★

WordPressサーバが公開されているため、一定のセキュリティリスクあり

★★★★★

CloudFrontとS3の構成となるため、WordPressサーバは一般公開する必要がなく、高いセキュリティを保つことができる

動的機能(コメント・検索機能など)の対応対応可対応不可

静的ページのため、動的機能は使用不可

対応化対応不可

静的ページのため、動的機能は使用不可

対応不可

静的ページのため、動的機能は使用不可

どのような場合に選択すべきかとにかく簡単にWordPressを公開したい時できるだけ簡単に構築したいけど、速度向上や捌けるアクセス量を増やしたい時速度向上しつつ、動的機能を利用したい時速度向上や捌けるアクセス量を増やしたい時速度向上や捌けるアクセス量に加え、セキュリティ面も考慮したい時

WordPress構築方法毎の詳細情報

それぞれのWordPress構築方法について詳細を見ていきます。

EC2単体

  • 使用するAWSサービス
    • EC2
  • 使用するWordPressプラグイン
    • なし

構築方法

EC2での構築方法は以下の記事をご参照ください

AWSマネージメントコンソール画面からの構築方法

AWSのEC2に簡単にWordPressをインストールする方法(AMIでWordPressを使用)
簡単にAWSのEC2にWordPressをインストールする方法です。5分で動作確認までできます。 ハマるポイントとしては、WordPressログイン時のパスワードの確認くらいです。 AMIはWordPress Certified by Bitnami and Automatticを使用します

Terraformを使った構築方法(Terraformを使い慣れている方向け)

TerraformでEC2上にWordPressを簡単に構築するーコピペでTerraformでWordPress構築
TerrafromでEC2上にWordPressを構築します。コピペで簡単にTerraformでEC2上にWordPressを構築できるように記載しています。TerraformソースコードとTerrafromの実行方法、最後に作成したリソースの削除方法を記載しています。

EC2の代わりにLightsailで構築する場合

Amazon LightsailでWordPressを構築してみて、EC2との違いについて考えてみた
LightsailでWordPressを構築してみました。 結論としてはEC2と比べて構築作業の難易度はそれほど変わらない印象です。 どちらも簡単。 普段EC2に慣れている人はEC2の方が楽かもしれません。 逆にEC2を触ったことがなければ、Lightsailの方が直感的に作業できて楽かもしれません。

特徴

最もオーソドックスかつ、簡単な構築方法となります。

この構築方法のメリットとデメリットは以下のような点になります。

  • メリット
    • とにかく簡単に構築できる
  • デメリット
    • 捌けるアクセル量が少ない(アクセスが多いとサーバダウンなどが懸念される)
    • WordPress(PHP)がコンテンツを生成するため、サイトアクセス時の表示速度が他の方法と比べると遅い

構築が簡単なため、とりあえずこの構築方法を選択し、速度改善や捌けるアクセス数を増やしたくなったら、別の構築方法へ移行するという進め方も良いかと思います。

EC2単体ー静的ページ配信

  • 使用するAWSサービス
    • EC2
  • 使用するWordPressプラグイン

構築方法

EC2単体と同様の方法でEC2上にWordPressを構築します。

Lightsailを使用しても問題ありません。

WordPress構築後はStaticPressをインストールして、WordPressコンテンツの静的ページ化を行います。StaticPressの設定方法の詳細は「StaticPressのインストール方法」をご参照ください。

特徴

WordPressコンテンツを静的ページ化する方法となります。

この構築方法のメリットとデメリットは以下のような点になります。

  • メリット
    • サイトの高速化と捌けるアクセス数を増やすことができる
  • デメリット
    • StaticPress導入にあたり、PHPのソース修正が発生し、EC2単体の構築方法より難易度が若干高め
    • 動的機能(検索やコメントなど)が使用できない

できるだけ簡単にサイトの高速化と負荷対策(多くのアクセスを捌けるようにする)する際に、有効な手法となります。

EC2+CloudFront配信

構築方法

EC2単体と同様の方法でEC2上にWordPressを構築します。

Lightsailを使用しても問題ありません。

WordPress構築後はCloudFront経由でEC2にアクセスするように設定します。

具体的な構築方法は以下のサイトを参考にさせてもらいましょ

AWSに構築したWordPressをCloudFrontを使ってキャッシュして高速化【CDN】
WordPressを高速化!AWSのCloudFrontを配置し、静的コンテンツをキャッシュして配信する環境構築の手順を紹介しています。 CloudFrontによりキャッシュされているか確認する方法、CloudFrontのキャッシュ削除方法、CloudFrontからしかアクセスを受け付けない、つまりEC2に直接アクセス...

WordPressプラグインClear CloudFront Cacheを入れておくと、CloudFrontのキャッシュを簡単に削除できるので便利です。設定方法の詳細は「Clear CloudFront Cache」をご参照ください。

特徴

WordPressコンテンツをCloudFrontでキャッシュする方法となります。

この構築方法のメリットとデメリットは以下のような点になります。

  • メリット
    • サイトの高速化と捌けるアクセス数を増やすことができる
    • 高速化を図りつつ動的機能(検索やコメントなど)を利用できる
  • デメリット
    • CloudFrontの設定で、キャッシュするページとキャッシュしないページを分けて設定する必要があり、難易度が高め

サイトの高速化と負荷対策(多くのアクセスを捌けるようにする)を図りつつ、動的機能をしようしたい場合に有効な手法となります。

EC2ー静的ページ+CloudFront配信

構築方法

EC2(Lightsailでも可)上にWordPress構築後に、StaticPressで静的ページ化し、静的ページをCloudFrontで配信します。

構築方法の詳細は以下の記事をご参照ください。

StaticPressを使ってEC2上のWordPressコンテンツをCloudFront経由で簡単に配信する方法
WordPressのコンテンツを静的ページ化し、CloudFrontで配信できるようにします。静的ページ化するところはWordPressのプラグインStaticPressを使用します。CloudFrontのキャッシュクリアはClear CloudFront Cacheプラグインを使用します

特徴

WordPressコンテンツを静的ページ化し、静的ページをCloudFrontでキャッシュする方法となります。

この構築方法のメリットとデメリットは以下のような点になります。

  • メリット
    • サイトの高速化と捌けるアクセス数を増やすことができる
  • デメリット
    • CloudFrontの設定が必要であり、CloudFrontを使ったことがない場合、難易度が高め
    • StaticPress導入にあたり、PHPのソース修正が発生し、EC2単体の構築方法より難易度が若干高め
    • 動的機能(検索やコメント)が使用できない

サイトの高速化と負荷対策(多くのアクセスを捌けるようにする)を図りたい場合に有効な手法となります。

EC2ー静的ページ+S3+CloudFront配信

構築方法

EC2上にWordPress構築後に、StaticPressで静的ページ化し、静的ページをS3に転送し、CloudFrontで配信します。

構築方法の詳細は以下の記事をご参照ください。

【日本語URL対応版】WordPressのコンテンツを StaticPress S3プラグインを使用して配信する方法
WordPressコンテンツをStaticPressS3を使用してS3+CloudFrontで配信する方法を記載。 コピペで環境構築できます。S3+CloudFrontで配信することで「 低コストで安定したサイト運用ができる」「高速なサイトを構築できる」「セキュリティ的に安全」というメリットがあります。

特徴

WordPressコンテンツを静的ページ化し、静的ページをS3に転送し、S3の静的ページをCloudFrontでキャッシュする方法となります。

この構築方法のメリットとデメリットは以下のような点になります。

  • メリット
  • デメリット
    • CloudFrontの設定が必要であり、CloudFrontを使ったことがない場合、難易度が高め
    • StaticPress導入にあたり、PHPのソース修正が発生し、EC2単体の構築方法より難易度が若干高め
    • 動的機能(検索やコメント)が使用できない

構築の難易度は最も高いが、サイトの高速化と負荷対策(多くのアクセスを捌けるようにする)を図れ、セキュリティにも優れている手法となります。

StaticPressのインストール方法

インストール

  1. WordPress 管理パネルから、「プラグイン」 -> 「新規追加」をクリックします。
  2. ブラウザの入力ボックスに「StaticPress」と入力します。
  3. 「StaticPress」プラグインを選択し、「インストール」をクリックします。
  4. プラグインを有効にします。

ソース修正

StaticPressのソース修正をします。

修正ソース:wp-content/plugins/staticpress/includes/class-static_press_admin.php

bitnamiを使用している場合のパス:/home/bitnami/stack/wordpress/wp-content/plugins/staticpress/includes/class-static_press_admin.php

// 以下のコードを追加する
「if( !($('li:last-child', ul).offset() === void 0) )」を追加する


修正後ソース 312行目辺り
if( !($('li:last-child', ul).offset() === void 0) )//追加

$('html,body').animate({scrollTop: $('li:last-child', ul).offset().top},'slow');

Word Pressのパーマリンク設定の変更

WordPressの設定->パーマリンク画面を開き、カスタム構造を選択し、「/%postname%.html」を入力する

 

まとめ

AWS上にWordPressを構築する方法は5つのパターンがあり、それぞれ特徴やメリットとデメリットを見てきました。用途にあった方法で構築していきましょー