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プラグイン | ー | StaticPress | Clear CloudFront Cahce | StaticPress 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マネージメントコンソール画面からの構築方法
Terraformを使った構築方法(Terraformを使い慣れている方向け)
EC2の代わりにLightsailで構築する場合
特徴
最もオーソドックスかつ、簡単な構築方法となります。
この構築方法のメリットとデメリットは以下のような点になります。
- メリット
- とにかく簡単に構築できる
- デメリット
- 捌けるアクセル量が少ない(アクセスが多いとサーバダウンなどが懸念される)
- WordPress(PHP)がコンテンツを生成するため、サイトアクセス時の表示速度が他の方法と比べると遅い
構築が簡単なため、とりあえずこの構築方法を選択し、速度改善や捌けるアクセス数を増やしたくなったら、別の構築方法へ移行するという進め方も良いかと思います。
EC2単体ー静的ページ配信
- 使用するAWSサービス
- EC2
- 使用するWordPressプラグイン
構築方法
EC2単体と同様の方法でEC2上にWordPressを構築します。
Lightsailを使用しても問題ありません。
WordPress構築後はStaticPressをインストールして、WordPressコンテンツの静的ページ化を行います。StaticPressの設定方法の詳細は「StaticPressのインストール方法」をご参照ください。
特徴
WordPressコンテンツを静的ページ化する方法となります。
この構築方法のメリットとデメリットは以下のような点になります。
- メリット
- サイトの高速化と捌けるアクセス数を増やすことができる
- デメリット
- StaticPress導入にあたり、PHPのソース修正が発生し、EC2単体の構築方法より難易度が若干高め
- 動的機能(検索やコメントなど)が使用できない
できるだけ簡単にサイトの高速化と負荷対策(多くのアクセスを捌けるようにする)する際に、有効な手法となります。
EC2+CloudFront配信
- 使用するAWSサービス
- EC2
- CloudFront
- 使用するWordPressプラグイン
構築方法
EC2単体と同様の方法でEC2上にWordPressを構築します。
Lightsailを使用しても問題ありません。
WordPress構築後はCloudFront経由でEC2にアクセスするように設定します。
具体的な構築方法は以下のサイトを参考にさせてもらいましょ
WordPressプラグインClear CloudFront Cacheを入れておくと、CloudFrontのキャッシュを簡単に削除できるので便利です。設定方法の詳細は「Clear CloudFront Cache」をご参照ください。
特徴
WordPressコンテンツをCloudFrontでキャッシュする方法となります。
この構築方法のメリットとデメリットは以下のような点になります。
- メリット
- サイトの高速化と捌けるアクセス数を増やすことができる
- 高速化を図りつつ動的機能(検索やコメントなど)を利用できる
- デメリット
- CloudFrontの設定で、キャッシュするページとキャッシュしないページを分けて設定する必要があり、難易度が高め
サイトの高速化と負荷対策(多くのアクセスを捌けるようにする)を図りつつ、動的機能をしようしたい場合に有効な手法となります。
EC2ー静的ページ+CloudFront配信
- 使用するAWSサービス
- EC2
- CloudFront
- 使用するWordPressプラグイン
構築方法
EC2(Lightsailでも可)上にWordPress構築後に、StaticPressで静的ページ化し、静的ページをCloudFrontで配信します。
構築方法の詳細は以下の記事をご参照ください。
特徴
WordPressコンテンツを静的ページ化し、静的ページをCloudFrontでキャッシュする方法となります。
この構築方法のメリットとデメリットは以下のような点になります。
- メリット
- サイトの高速化と捌けるアクセス数を増やすことができる
- デメリット
- CloudFrontの設定が必要であり、CloudFrontを使ったことがない場合、難易度が高め
- StaticPress導入にあたり、PHPのソース修正が発生し、EC2単体の構築方法より難易度が若干高め
- 動的機能(検索やコメント)が使用できない
サイトの高速化と負荷対策(多くのアクセスを捌けるようにする)を図りたい場合に有効な手法となります。
EC2ー静的ページ+S3+CloudFront配信
- 使用するAWSサービス
- EC2
- S3
- CloudFront
- 使用するWordPressプラグイン
- StaticPress
- StaticPress S3
- Clear CloudFront Cahce
構築方法
EC2上にWordPress構築後に、StaticPressで静的ページ化し、静的ページをS3に転送し、CloudFrontで配信します。
構築方法の詳細は以下の記事をご参照ください。
特徴
WordPressコンテンツを静的ページ化し、静的ページをS3に転送し、S3の静的ページをCloudFrontでキャッシュする方法となります。
この構築方法のメリットとデメリットは以下のような点になります。
- メリット
- サイトの高速化と捌けるアクセス数を増やすことができる
- コンテンツ配信はS3+CloudFrontとなるため、急激なアクセス増にも耐えられる
- WordPress(EC2)を配信サーバとして使わないため、WordPressにIP制限をかけることが可能で、セキュリティ的に優れている
- デメリット
- CloudFrontの設定が必要であり、CloudFrontを使ったことがない場合、難易度が高め
- StaticPress導入にあたり、PHPのソース修正が発生し、EC2単体の構築方法より難易度が若干高め
- 動的機能(検索やコメント)が使用できない
構築の難易度は最も高いが、サイトの高速化と負荷対策(多くのアクセスを捌けるようにする)を図れ、セキュリティにも優れている手法となります。
StaticPressのインストール方法
インストール
- WordPress 管理パネルから、「プラグイン」 -> 「新規追加」をクリックします。
- ブラウザの入力ボックスに「StaticPress」と入力します。
- 「StaticPress」プラグインを選択し、「インストール」をクリックします。
- プラグインを有効にします。
ソース修正
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つのパターンがあり、それぞれ特徴やメリットとデメリットを見てきました。用途にあった方法で構築していきましょー