🏠

【AWS】WordPressウェブサイトを静的化してS3でホスティングする

に公開

はじめに

今回は、Amazon EC2インスタンス(以下、EC2インスタンス)でホスティングされているWordPressウェブサイトを、Amazon S3(以下、S3)でホスティングされる静的ウェブサイトに変換する方法をご紹介します。

WordPressとは

WordPressとは、無料で利用できるオープンソースのCMS(コンテンツ管理システム)です。

WordPressで構築されたウェブサイトは、基本的にはアクセスしたときの状況に応じて異なる内容が表示される動的ウェブサイトです。
動的ウェブサイトをホストするには、アプリケーション本体と、データを格納するデータベースをホストするためのサーバーが必要です。

従って、アプリケーションだけでなく、そのアプリケーションが実行されているホストOSの保守が発生します。
また、WordPressは利用者が多いが故に攻撃対象になりやすく、セキュリティリスクが高い側面があるため、十分なセキュリティ対策を講じる必要があります。
加えて、ウェブサイトへのアクセスが増加して、より多くのリソースが必要になった場合、アプリケーションの拡張が必要になり、コストとメンテナンスが増大します。

WordPressウェブサイトをS3でホスティングするメリット

次に、下図のようにWordPressウェブサイトをS3でホスティングする場合のメリットを2つご紹介します。

1. ホスティング用サーバーのコストを削減できる

S3はスケーラビリティに優れており、ストレージ容量を柔軟に拡張できます。また、月額コストが非常に低いこともポイントです。
WordPressサイトを静的ウェブサイトに変換することで、アクセス増加時もS3側で柔軟にスケールし、ウェブサーバーが1台の場合よりも多くのユーザーにサービスを提供できます。
また、WordPressウェブサーバーの電源がオフになっている場合でも、ユーザーはS3からウェブサイトにアクセスできるため、サーバー稼働費用も抑えられます。

2. メンテナンスの手間を削減できる

Amazon S3はフルマネージドサービスであるため、前述のアプリケーションが実行されているホストOSの保守負担が軽減されます。
S3がホスティングする静的なウェブサイトでは、個々のウェブページ、及び必要に応じてクライアントサイドスクリプトは静的コンテンツとしてS3に格納しますが、サーバーサイドスクリプトは必要ありません。インターネットに晒されるプログラム部分が少なくなる分、セキュリティリスクも低減します。

以上の2点が、WordPressウェブサイトをAmazon S3でホスティングするメリットと言えます。

実際にWordPressウェブサイトをEC2からS3に移行してみる

0. 前提条件

既にEC2インスタンスでWordPressウェブサイトがホスティングされている状態からスタートします。

【WordPressがホスティングされているEC2インスタンス】

【WordPress管理画面】

【実際のウェブサイトページ】

1. ホスティング用のS3バケットを作成

次に、静的ウェブサイトをホスティングするためのS3バケットを作成します。

1-1. S3バケット作成画面へ移動

AWSマネジメントコンソールのS3管理画面で[バケットを作成]を押下する。

1-2. S3バケットの名前を設定

[一般的な設定] > [バケット名]に任意の名前を入力する。

1-3. S3バケットのオブジェクト所有者を設定

[オブジェクト所有者] > [ACL有効]を選択し、オブジェクト所有者に[オブジェクトライター]を選択する。

1-4. S3バケットのブロックパブリックアクセス設定を変更

[このバケットのブロックパブリックアクセス設定] > [パブリックアクセスをすべて ブロック]のチェックを外し、[現在の設定により、このバケットとバケット内のオブジェクトが公開される可能性があることを承認します。]にチェックを入れる。

1-5. S3バケットの作成

[バケットを作成]を押下する。

これで、静的ウェブサイトをホスティングするためのS3バケットの作成が完了。

1-6. S3バケットのプロパティ変更画面へ移動

S3管理画面のバケット一覧から、作成したS3バケット名を押下する。

[プロパティ]タブを押下する。

1-7. 静的ウェブサイトホスティングの有効化

[静的ウェブサイトホスティング] > [編集]を押下する。

[静的ウェブサイトホスティング] > [有効にする]を選択する。
[ホスティングタイプ] > [静的ウェブサイトをホストする]を選択する。
[インデックスドキュメント]に「index.html」を、[エラードキュメント]に「error.html」を入力する。

1-8. 変更の保存

[変更の保存]を押下する。

1-9. バケットウェブサイトエンドポイントの確認

[静的ウェブサイトホスティング] > [バケットウェブサイトエンドポイント]の値を記録しておく。

1-10. S3バケットのパーミッション変更画面へ移動

現状だとバケットポリシーが設定されておらず、どこからもアクセスができないウェブサイトになってしまうので、バケットポリシーを設定する。

[アクセス許可]タブを押下する。

1-11. バケットポリシーの付与

[バケットポリシー] > [編集]を押下する。

以下のバケットポリシーを入力する。

{
    "Version": "2012-10-17",
    "Statement": [
        {
            "Sid": "PublicReadGetObject",
            "Effect": "Allow",
            "Principal": "*",
            "Action": "s3:GetObject",
            "Resource": "arn:aws:s3:::[バケット名]/*"
        }
    ]
}

[変更の保存]を押下する。

これにより、バケットはインターネット上でバケットウェブサイトエンドポイントを介してアクセスできるようになります。

2. WordPressウェブサイトを静的ウェブサイトとしてエクスポート

次に、現在EC2でホスティングされている動的ウェブサイトを、WordPressのプラグインであるSimply Staticsを利用して静的ウェブサイトとしてエクスポートします。

2-1. WordPressウェブサイトを静的化するプラグインを導入

WordPress管理画面のサイドメニューから、[プラグイン] > [プラグインを追加]を押下する。

[プラグインの検索]で「Simply Statics」と入力し、「Simply Static – The WordPress Static Site Generator」の[今すぐインストール]を押下する。

インストールが完了したら、[有効化]を押下する。

2-2. WordPressウェブサイトを静的ウェブサイトとしてエクスポート

WordPress管理画面のサイドメニューに[Simply Statics]が追加されていることを確認し、押下する。

[Generate]を押下する。

[Activity Log]に「完了!」と表示されたら、[ダウンロードするにはこちらをクリック]を押下してzipファイルをダウンロードする。

ダウンロードされたzipファイルを展開し、中身が格納されていることを確認する。

3. 静的ウェブサイトをS3バケットにアップロード

次に、2. WordPressウェブサイトを静的ウェブサイトとしてエクスポートでエクスポートした静的ページを、S3バケットにアップロードします。
アップロードする静的ページは、サイト全体のコンテンツを含んでおり、WordPressサーバー(EC2)なしでユーザーはコンテンツを閲覧できるようになります。

3-1. 静的ウェブサイトをS3バケットにアップロード

1. ホスティング用のS3バケットを作成で作成したS3バケットを選択し、[アップロード]を押下する。

2. WordPressウェブサイトを静的ウェブサイトとしてエクスポートでエクスポートしたファイルをドラック&ドロップする。

[アップロード]を押下する。

3-2. アクセス確認

S3のバケットウェブサイトエンドポイントにアクセスし、元々WordPressで構築した動的ウェブサイトが、静的ウェブサイトとしてS3からアクセスできることを確認する。

さいごに

今回は、EC2インスタンスでホスティングされているWordPressウェブサイトを、S3でホスティングされる静的ウェブサイトに変換する方法をご紹介しました。
本記事が誰かのお役に立てば幸いです。


Accenture Japan - ICE (有志) により固定
 Cloudのキャリア・採用情報 | アクセンチュア
 女性が活躍する職場|採用情報 | アクセンチュア

Accenture Japan (有志)

Discussion