負荷分散された WordPress ウェブサイトを作成する

Amazon Lightsail を使用

Amazon Lightsail は AWS を開始する最も簡単な方法です。 仮想サーバー、ストレージ、データベース、ネットワークに加えて、費用対効果の高い月次プランを利用できます。

このチュートリアルでは、負荷分散された WordPress ウェブサイトを Amazon Lightsail に作成する方法について解説します。ロードバランサーとは、ネットワークトラフィックを一連のサーバーに分散するサーバーのことです。ネットワークトラフィックをサーバーのプールに分散することで、WordPress ウェブサイトが処理できる同時ユーザーの数を、劇的に増やせます。また、ロードバランサーは耐障害性も高めます。Lightsail のロードバランサーは、ロードバランサーにアタッチされた正常な WordPress インスタンスにのみ、トラフィックを受信させます。

ロードバランサーにアタッチされたインスタンスの数を増やすことで、WordPress ウェブサイトを水平スケールできます。また、ロードバランサーにアタッチされたインスタンスを、より大規模な Lightsail プラン (3.50 USD/月のプランでなく 5 USD/月のプランなど) を使用しているインスタンスに置き換えることで、WordPress ウェブサイトを垂直スケールすることも可能です。この垂直スケーリングシナリオについては本チュートリアルでは取り扱いませんが、同様のステップで実現することができます。

本チュートリアルでは次のステップを実施します。

  • Lightsail で MySQL マネージドデータベースを作成する
  • WordPress インスタンスの IAM ユーザーを作成する
  • WordPress インスタンスに SSH 経由で接続し、マネージドデータベースと IAM ユーザー認証情報を設定する
  • WordPress ウェブサイトのダッシュボードにサインインし、WP Offload Media プラグインをインストールする
  • WordPress インスタンスを複製する
  • Lightsail にロードバランサーを作成して WordPress インスタンスをアタッチする

Amazon Lightsail の使用を無料で開始しましょう。

このチュートリアルの内容
時間 60 分                                           
コスト 料金が適用されます
ユースケース コンピューティング
製品 Amazon Lightsail
対象者 デベロッパー
レベル 中級コース 
最終更新日 2020 年 4 月 16 日

AWS アカウントをお持ちですか? サインイン

1.Lightsail で WordPress インスタンスを作成する

このチュートリアルを行うには、Lightsail で WordPress インスタンスを作成する必要があります。作成は、「Amazon Lightsail で WordPress インスタンスを起動して設定する」チュートリアルのステップに従って行います。

2.Lightsail で MySQL マネージドデータベースを作成する

次のステップを実施して、Lightsail に MySQL マネージドデータベースを作成します。この新しい MySQL マネージドデータベースは、負荷分散される WordPress インスタンスすべての一元的データベースとして機能します。


a. Lightsail コンソールにサインインします。 


b.Lightsail ホームページの [Databases (データベース)] タブで、[Create instance (インスタンスの作成)] を選択します。

lb1

c.データベースの AWS リージョンとアベイラビリティーゾーンを選択します。

注意: 作成するデータベースのリージョンは、WordPress インスタンスのリージョンと同じにする必要があります。

lb2

d.データベースエンジンとして MySQL の最新バージョンを選択します。PostgreSQL も利用可能ですが、WordPress との互換性がありません。

lb3

e.データベースのプランを選択します。

プランでは、予測可能な低コスト、マシン構成 (RAM、SSD、vCPU)、データ転送許容量が定められています。15 USD の Lightsail 標準データベースプランを 1 か月間無料でお試しいただけます (最大 750 時間)。

lb4

f.データベースの名前を入力します。

リソース名のガイドライン:

  • インスタンス名は、Lightsail アカウントの各 AWS リージョン内で一意である必要があります。
  • 2~255 文字を含めてください。
  • 英数字または数字で開始および終了してください。
  • 英数字、数字、ピリオド、ダッシュ、アンダーバーを含めることができます。
lb5

g.[Create database (データベースの作成)] を選択します。

データベースの作成には数分かかります。


h.データベースが作成され利用できるようになったら、Lightsail コンソールの [Databases (データベース)] タブで、データベースの名前を選択します。


i.データベース管理ページの [Connect (接続)] タブで、次のステップを実施します。

  1. データベースの DNS 名をメモしておきます。これは後ほど使用します。
  2. データベースのユーザー名をメモしておきます。これは後ほど使用します。
  3. [Show password (パスワードの表示)] を選択し、[Change password (パスワードの変更)] を選択します。特殊文字を含まない堅牢な新しいパスワードを入力します。パスワードに特殊文字が含まれている場合は、後ほど登場する一部のコマンドが想定どおりに機能しなくなるため、パスワードを変更して特殊文字を取り除きます。
  4. データベースのパスワードをメモしておきます。これは後ほど使用します。
hawp2i

3.WordPress インスタンスの Amazon S3 バケットを作成する

次のステップを実施して Amazon S3 バケットを作成します。これは、WordPress ウェブサイトのメディアの保存に使用されます。


a.Amazon S3 コンソールにサインインします。


b.左側のナビゲーションメニューで [Block public access (ブロックパブリックアクセス)] を選択します。


c.アクセスコントロールリスト (ACL) 経由のパブリックアクセスをブロックするオプションが、両方ともオフになっていることを確認します。オンになっていたら、[Edit (編集)] をクリックし、オプションの選択を解除して、[Save changes (変更の保存)] をクリックします。 これらのオプションは、作成した Amazon S3 バケットに WordPress がアクセスするために必要なものです。

注意: これらの設定は、すべての S3 バケットに適用されます。したがって、これらの設定が他の既存の S3 バケットに適用されても問題ないことを確認してください。

update1
update2

d.左側のナビゲーションメニューで [Buckets (バケット)] をクリックし、[Create bucket (バケットの作成)] をクリックします。

update3

e.バケットに名前を付けます。S3 バケット名はすべて、グローバルに一意です。したがって、本チュートリアルで使用されている名前は使えません。

付けた名前はメモしておきます。後ほど、WordPress を設定する際に入力します。


f.S3 バケットの AWS リージョンを選択します。このチュートリアルで使用するリソースはすべて、同じ AWS リージョンに作成します。したがって、WordPress インスタンスと同じリージョンに S3 バケットを作成します。

update4

g.[Block all public access (パブリックアクセスをすべてブロック)] の選択を解除し、[Block public access to buckets and objects granted through new public bucket or access point policies (新しいパブリックバケットまたはアクセスポイントポリシーで承認されたバケットおよびオブジェクトへのパブリックアクセスをブロック)] と [Block public and cross-account access to buckets and objects through any public bucket or access point policies (どのパブリックバケットおよびアクセスポイントポリシーを介したバケットおよびオブジェクトへのパブリックおよびクロスアカウントアクセスもブロック)] を選択します。アクセスコントロールリスト (ACL) 経由のパブリックアクセスをブロックするオプションが、両方とも選択を解除されていることを確認します。


h.選択した設定を承認します。

update6

i.[Create bucket (バケットの作成)] を選択します。


3.WordPress インスタンスの IAM ポリシーおよびユーザーを作成する

以下のステップを実施して、作成した Amazon S3 バケットのポリシーを作成し、S3 バケットにアクセス可能なポリシーを持つ IAM ユーザーを作成します。後ほど、IAM ユーザーの認証情報を持つ WordPress インスタンスを設定します。

a.IAM コンソールにサインインします。


b.左側のナビゲーションメニューで [Policies (ポリシー)] を選択し、[Create policy (ポリシーの作成)] を選択します。

c.[Create Policy (ポリシーの作成)] ページで、[JSON] タブを選択し、次のポリシーをテキストボックスに貼り付けます。 バケットの名前を、先ほど作成した Amazon S3 バケットの名前に置き換えます。

次の画像のようになるはずです。

{
    "Version": "2012-10-17",
    "Statement": [
        {
            "Sid": "VisualEditor0",
            "Effect": "Allow",
            "Action": [
                "s3:PutObject",
                "s3:GetObjectAcl",
                "s3:GetObject",
                "s3:PutBucketAcl",
                "s3:ListBucket",
                "s3:DeleteObject",
                "s3:GetBucketAcl",
                "s3:GetBucketLocation",
                "s3:PutObjectAcl"
            ],
            "Resource": [
                "arn:aws:s3:::<your bucket name>",
                "arn:aws:s3:::<your bucket name>/*"
            ]
        }
    ]
}
update7

d.[Review policy (ポリシーの確認)] を選択します。

e.ポリシーに名前 (wp-s3-policy など) を付け、[Create policy (ポリシーの作成)] をクリックします。

これで、新しい IAM ユーザーに適用可能なポリシーが完成しました。次のステップでは、新しい IAM ユーザーを作成します。

update8

f. 左側のナビゲーションメニューで [Users (ユーザー)] をクリックします。次に、[Add user (ユーザーの追加)] をクリックします。

lb7

g.ユーザー名を入力します。

例: wp-s3-user


h.[Programmatic access (プログラムによるアクセス)] を選択します。

i.[Next: Permissions (次のステップ: アクセス許可)] を選択します。

lb8

j.[Attach existing policies directly (既存のポリシーを直接アタッチ)] を選択します。


k.先のステップで作成した IAM ポリシーの名前 (wp-s3-policy など) を検索します。

 


l. 検索結果の中から、作成したポリシーを選択します。

m.[Next: Tags (次のステップ: タグ)] を選択します。

 

update10

n.IAM ユーザーにタグを追加する必要はありません。[Next: Review (次のステップ: 確認)] をクリックします。


o. ユーザーの詳細を確認したら、[Create user (ユーザーの作成)] を選択します。

lb10

p. ユーザーのアクセスキー ID をコピーし、先ほど作成した認証情報のテキストファイルに貼り付けます。

lb11

q.シークレットアクセスキー列で [Show (表示)] を選択します。


r.シークレットアクセスキーをコピーし、認証情報のテキストファイルに貼り付けます。


s.認証情報のテキストファイルを安全な場所に保存します。この認証情報は、後ほど必要になります。


t.[Close (閉じる)] を選択します。

IAM コンソールはもう使用しないので、閉じます。

4.WordPress インスタンスに SSH 経由で接続し、マネージドデータベースと IAM ユーザー認証情報を設定する

以下のステップを実施し、MySQL データベースから WordPress インスタンスのデータをエクスポートして、それを Lightsail 内の新しい MySQL マネージドデータベースにインポートします。また、MySQL マネージドデータベースに接続するように WordPress インスタンスを設定し、WordPress インスタンスの IAM ユーザー認証情報を設定します。


a.Lightsail コンソールにサインインします。


b.Lightsail ホームページの [Instances (インスタンス)] タブで、WordPress インスタンスのブラウザベースの SSH クライアントアイコンを選択します。

lb12

c.ブラウザベースの SSH クライアントウィンドウが開いたら、次のコマンドを入力し、WordPress インスタンス上にあるアプリケーション用の、Bitnami のデフォルトパスワードを取得します。

cat $HOME/bitnami_application_password

        d.表示されたパスワードをコピーして、認証情報を保存したテキストファイルに貼り付けます。

lb13

e.次のコマンドを 1 つずつ入力し、認証情報のテキストファイルに貼り付けた情報を使って環境変数を設定します。

LSDB_USERNAME=<DatabaseUserName>
LSDB_ENDPOINT=<DatabaseEndpoint>
LSDB_PASSWORD='<DatabasePassword>'
ACCESS_KEY=<AccessKeyID>
SECRET_KEY=<SecretAccessKey>

注意: LSDB_PASSWORD パラメータの前後には、一重引用符を付けます。

例:

LSDB_USERNAME=dbmasteruser
LSDB_ENDPOINT=ls-24e932a56656a5b471398ea052a04bc32ea0703d.czowadgeezqi.us-west-2.rds.amazonaws.com
LSDB_PASSWORD='3stTVwnfJh9CnKR6'
ACCESS_KEY=AKIAIOSFODNN7EXAMPLE
SECRET_KEY=wJalrXUtnFEMI/K7MDENG/bPxRfiCYEXAMPLEKEY

f.次のコマンドを入力して、WordPress インスタンス上にある MySQL データベースのダンプを作成します。このコマンドにより、現在のディレクトリに dump.sql ファイルが作成されます。

mysqldump -u root --databases bitnami_wordpress --single-transaction --order-by-primary -p > dump.sql

g.パスワードを要求されたら、Bitnami のデフォルトパスワードを入力します。先ほど取得した、WordPress インスタンスにあるアプリケーション用の、Bitnami のデフォルトパスワードです。


h.次のコマンドを入力して、dump.sql ファイルを Lightsail の MySQL マネージドデータベースにインポートします。

cat dump.sql | mysql --user $LSDB_USERNAME --host $LSDB_ENDPOINT -p

i.パスワードを要求されたら、MySQL マネージドデータベースのパスワードを入力します。先ほど Lightsail コンソールから取得した、MySQL マネージドデータベース用のパスワードです。


j.ここからのステップでは、wp-config.php ファイルの修正を行います。始める前に、以下のコマンドを入力して、万が一に備えて wp-config.php ファイルのバックアップを作成しておきます。

cp /home/bitnami/apps/wordpress/htdocs/wp-config.php /home/bitnami/apps/wordpress/htdocs/wp-config.php.bak

k.次のコマンドを入力して、wp-config.php ファイルからインスタンス上の MySQL データベース用のパスワードを取得し、WPDB_PASSWORD 環境変数として設定します。

WPDB_PASSWORD=`cat /home/bitnami/apps/wordpress/htdocs/wp-config.php | grep DB_PASSWORD | cut -d \' -f 4`

l.次のコマンドを入力して、Lightsail データベースエンドポイントの環境変数にポートを追加します。

LSDB_ENDPOINT=$LSDB_ENDPOINT:3306

m.次のコマンドを入力して、WordPress コマンドラインを使って MySQL マネージドデータベースのユーザー名、パスワード、エンドポイントを wp-config.php ファイルに追加します。

wp config set DB_USER $LSDB_USERNAME && wp config set DB_PASSWORD $LSDB_PASSWORD && wp config set DB_HOST $LSDB_ENDPOINT

n.次のコマンドを入力して、先ほど作成した IAM ユーザーの認証情報を含む credfile.txt を作成します。

cat <<EOT >> credfile.txt
define( 'AS3CF_SETTINGS', serialize( array (
    'provider' => 'aws', 
    'access-key-id' => '$ACCESS_KEY', 
    'secret-access-key' => '$SECRET_KEY',
) ) );
EOT

o.次のコマンドを入力して credfile.txt のコンテンツを wp-config.php ファイルに挿入します。

sed -i "/define( 'WP_DEBUG', false );/r credfile.txt" /home/bitnami/apps/wordpress/htdocs/wp-config.php

p. credfile.txt は不要になったので、次のコマンドを入力して削除します。この時点で、先ほどすべての認証情報を貼り付けた認証情報ファイルも、削除して構いません。

sudo rm –r credfile.txt

q.先の一連のコマンドにより、wp-config.php ファイルのアクセス許可がリセットされます。次のコマンドを入力して、wp-config.php ファイルのアクセス許可と、作成済みのバックアップを修正します。

sudo chown bitnami:daemon /home/bitnami/apps/wordpress/htdocs/wp-config.php && sudo chown bitnami:daemon /home/bitnami/apps/wordpress/htdocs/wp-config.php.bak

r.次のコマンドを入力して、インスタンス上のサービスを再起動します。

sudo /opt/bitnami/ctlscript.sh restart

ブラウザベースの SSH クライアントウィンドウは閉じて構いません。WordPress インスタンスが、Lightsail の新しい MySQL マネージドデータベースに接続するように設定されました。WordPress ウェブサイトに新しい投稿を公開すると、その投稿のデータは、インスタンス上にある MySQL マネージドデータベースではなく、Lightsail の MySQL マネージドデータベースに書き込まれます。

5.WordPress ウェブサイトのダッシュボードにサインインし、WP Offload Media プラグインをインストールする

次のステップを実施して、WP Offload Media プラグインを WordPress ウェブサイトにインストールします。WP Offload Media プラグインは、先ほどのセクションで設定した IAM 認証情報を使って、お使いの AWS アカウントに Amazon S3 バケットを作成します。また、ウェブサイトにアップロードされたメディアファイルが新しい S3 バケットに保存されるよう、WordPress を新しい S3 バケットに接続します。この新しい S3 バケットは、負荷分散される WordPress インスタンスすべての、メディアファイルの一元的保存場所として機能します。


a.インスタンスを参照します。例えば、http://192.0.2.0 となります。

次の画像に示すように、Lightsail コンソールからインスタンスのパブリック IP アドレスを取得できます。

lb14

b. ページの右下で Bitnami の [Manage (管理)] アイコンをクリックします。

lb15

c.[Login (ログイン)] をクリックします。

lb16

d.[Username (ユーザー名)] テキストボックスに user と入力し、[Password (パスワード)] テキストボックスに Bitnami のデフォルトパスワードを入力します。[Log in (ログイン)] をクリックします。

lb17

e.ナビゲーションメニューの [Plugins (プラグイン)] にカーソルを合わせて、[Add new (新規追加)] を選択します。

lb18

f.検索テキストボックスに WP Offload Media と入力し、Enter を押します。

lb19

g.検索結果画面で、WP Offload Media Lite プラグインの隣にある [Install Now (今すぐインストール)] を選択します。

lb29

h.プラグインがインストールされたら [Activate (アクティベート)] をクリックします。

lb21

i.プラグインがアクティベートされたら、ナビゲーションメニューで[Settings (設定)] にカーソルを合わせて [Offload Media Lite] を選択します。

lb22

j.Offload Media Lite の設定ページで、[Bucket (バケット)] テキストボックスに、先ほど作成した S3 バケットの名前を入力します。

続いて、[Save Bucket Setting (バケット設定の保存)] をクリックします。

update11

Offload Media Lite のページに、設定が保存されたことを確認するメッセージが表示されます。

これで、WordPress ウェブサイトは、メディアファイルを Amazon S3 バケットにアップロードするように設定されました。WordPress メディアファイル用の新しい一元的 S3 バケットと、Lightsail 内の新しい一元的 MySQL マネージドデータベースとを組み合わせました。これで WordPress インスタンスを複製できます。また、インスタンスの各複製バージョンは、S3 バケットと MySQL マネージドデータベースを参照することができます。次のステップに進み、Lightsail で WordPress インスタンスを複製します。

Picture1

6.WordPress インスタンスを複製する

次のステップを実施して WordPress インスタンスのスナップショットを作成し、そのスナップショットを使ってインスタンスの複製を作成します。


a.Lightsail コンソールにサインインします。


b.Lightsail ホームページの [Instances (インスタンス)] タブで、WordPress インスタンスの名前を選択します。

lb26

c.インスタンス管理ページで、[Snapshots (スナップショット)] タブを選択します。 

d.[Create snapshot (スナップショットの作成)] をクリックし、[Create (作成)] をクリックします。

lb28

e.スナップショットが作成されたら、省略記号のアイコン (⋮) をクリックし、[Create new instance (新規インスタンスの作成)] を選択します。

lb29real

f.[Create an instance from a snapshot (スナップショットからインスタンスを作成)] ページでは、デフォルトの設定は変更しません。ページの一番下までスクロールして、[Create Instance (インスタンスの作成)] をクリックします。

これで、オリジナルの WordPress インスタンスの複製が作成されます。複製は、MySQL マネージドデータベースと、先ほど作成した Amazon S3 バケットに接続するように既に設定されています。

このセクションのステップを繰り返して、負荷分散に必要な数のインスタンスを作成します。次のセクションに進み、Lightsail にロードバランサーを作成してインスタンスをアタッチします。

lb30
lb31

7.Lightsail にロードバランサーを作成して WordPress インスタンスをアタッチする

次のステップを実施して、Lightsail にロードバランサーを作成し、WordPress インスタンスをアタッチします。


a.Lightsail コンソールにサインインします。


b.Lightsail ホームページで、[Networking (ネットワーク)] タブを選択します。


c.[Create Load Balancer (ロードバランサーの作成)] を選択します。

lb32

d.[Create a load balancer (ロードバランサーの作成)] ページで、ロードバランサーに名前を付け、[Create load balancer (ロードバランサーの作成)] を選択します。


e.作成したロードバランサーの名前を選択します。

lb33

f.[Target instances (ターゲットインスタンス)] タブの [Target instances (ターゲットインスタンス)] セクションで、ドロップダウンメニューから WordPress インスタンスのいずれかを選択します。[Attach (アタッチ)] をクリックしてインスタンスをアタッチします。

lb34

g.[Attach another (別のものをアタッチする)] を選択して別のインスタンスをロードバランサーにアタッチします。

WordPress インスタンスの複製すべてをロードバランサーにアタッチします。

lb35

h.ロードバランサー管理ページのトップから、ロードバランサーの DNS 名をコピーします。

lb36

i.新しいブラウザウィンドウを開き、アドレステキストボックスに DNS 名を貼り付けて Enter を押します。

リクエストがロードバランサーを介してルーティングされ、WordPress ウェブサイトが読み込まれます。読み込まれるウェブサイトは、ロードバランサーにアタッチされた WordPress インスタンスのいずれかです。この時点で、ロードバランサーは、WordPress インスタンスの複製のいずれかにルーティングするように設定されています。このプロセスを完了するには、ロードバランサーの DNS 名をアドレス (A) レコードとして登録済みドメインの DNS に追加します。

おめでとうございます

これで、負荷分散された WordPress ウェブサイトが Lightsail に作成されました。

Amazon Lightsail は、デベロッパーやウェブプロフェッショナル、そして迅速かつ安価な方法で AWS の利用を開始したいとお考えのすべての方に最適です。インスタンス、データベース、SSD ベースのストレージの起動、データの転送、リソースのモニタリングなどを、管理された方法で実行できます。

このチュートリアルは役に立ちましたか?

ありがとうございます
このチュートリアルで良かった点をお聞かせください。
閉じる
ご期待に添えず申し訳ありません
古い説明、わかりにくい説明、間違った説明はございませんでしたか? このチュートリアルの改善のために、ぜひフィードバックをお寄せください。
閉じる