
● MySQL と WordPress は同じサーバー上でコンピューティングリソースをめぐって競合し、サイトのパフォーマンスを低下させる可能性がある。● サイトの人気が高まるにつれて、WordPress サーバーを追加して WordPress を水平方向にスケーリングすることができない。
● データベースのバックアップやセキュリティのアップグレードを含む、すべてのデータベースのメンテナンスタスクを担当している。
目次
データベースのセキュリティ設定手順
● ネットワークセキュリティ: 承認された IP アドレスからではないトラフィックを拒否することで、データベースインスタンスへのアクセスを制限します。
● パスワードによる認証と許可: アクセスのためにユーザー名とパスワードを要求することで、データベースへのアクセスを制限します。
次に示す手順で、これらの設定を行います。
ステップ 1:EC2 インスタンスに RDS データベースへのアクセスを許可する
始めに、RDS データベースを変更して、EC2 インスタンスからのネットワークアクセスを可能にします。
ここまでのモジュールで、WordPress を使う EC2 インスタンスへの SSH および HTTP トラフィックを許可する、セキュリティグループの作成は完了しています。ここでも、それと同様の原則を適用していきます。今回許可しようとしているのは、EC2 インスタンスから RDS データベースへ向かう、一定のトラフィックです。
この設定には、AWS コンソールで [RDS データベース] を開きます。このラボの前出のモジュールで作成済みの、MySQL データベースをクリックします。
ディスプレイ上の [コネクティビティ & セキュリティ] タブまでスクロールし、[ VPC セキュリティグループ] に表示されているセキュリティグループをクリックします。
ご自身のデータベース用に設定されたセキュリティグループが、コンソール上に表示されます。[インバウンド] タブを開き、[編集] ボタンをクリックして、セキュリティグループの修正を行います。
デフォルトのセキュリティグループのルールでは、そのグループ内にある他のすべてのインスタンスからの、インバウンドトラフィックを許可しています。しかし、WordPress がある EC2 インスタンスはこのセキュリティグループに属していないため、RDS データベースへのアクセス権がありません。
[タイプ] プロパティを [MYSQL/Aurora] に変更します。これにより、[プロトコル] と [ポート範囲] が適切な値に更新されます。その後、現行のルールで設定されているセキュリティグループ値を削除し、代わりに「wordpress」と入力します。設定済みで利用可能なセキュリティグループが、コンソールに表示されます。
ここでの EC2 インスタンス用に定義したセキュリティグループ「wordpress」をクリックします。
クリックすると、セキュリティグループ ID にこの値が埋め込まれます。これで、定義したセキュリティグループにあるすべての EC2 インスタンスに、MySQL へのアクセス権が付与されます。
設定が完了したら、青い [保存] ボタンをクリックし、変更内容を保存します。
ステップ 2:EC2 インスタンスへの SSH
この時点で、EC2 インスタンスには RDS データベースへのアクセス権が付与されています。ここからは、EC2 インスタンスに SSH によるトラフィックを送ると供に、いくつかの設定コマンドを実行します。
AWS コンソールで [EC2 インスタンス] ページを開きます。WordPress のインストール用に作成した EC2 インスタンスが表示されているはずです。それをクリックします。すると、[インスタンスの説明] に、IPv4 Public IPとラベル付けされたパブリック IP アドレスが表示されます。
インスタンスに SSH を送る際に必要となるので、この IP アドレスを記録しておきます。
ここまでの段階で、インスタンスのキーペア用に .pem ファイルはダウンロード済みなので、そのファイルを見つけます。これは多くの場合、デスクトップの [ダウンロード] フォルダーにあります。
Mac もしくは Linux ユーザーの場合:
ターミナルウィンドウを開きます。Mac をお使いの場合、デフォルトでインストール済みのターミナルプログラムを使うか、独自のターミナルを使うこともできます。
ターミナル上で次のコマンドを実行し、インスタンスに SSH を送ります。「<path/to/pem/file>」の部分はご自身のファイル名で置き換えます (例: ~/Downloads/wordpress.pem) 。また、「<publicIpAddress>」の部分は、ご自身の EC2 インスタンスのパブリック IP アドレスで置き換えます。
chmod 600 <path/to/pem/file> ssh -i <path/to/pem/file> ec2-user@<publicIpAddress>
接続が成功した場合は、ターミナルに次のような表示が出力されます。
Windows ユーザーの場合:
EC2 インスタンス に接続するには、Windows 用の SSH クライアントである PuTTY が必要になります。この使用方法については、「PuTTY を使用した Windows から Linux インスタンスへの接続」での解説をご参照ください。ダウンロードした .pem file と、EC2 インスタンスのパブリック IP アドレスは、この後に必要となります。
このステップでは、SSH 経由で EC2 インスタンスに接続しました。次のステップでは、EC2 インスタンスから RDS データベースに接続し、WordPress アプリケーション用にデータベースユーザーを作成します。
ステップ 3:データベースユーザーの作成
ターミナル上には、EC2 インスタンスに向けたアクティブな SSH セッションが確認できるはずです。ここからは、MySQL データベースへの接続を行います。
まず、データベースとのやり取りのため、ターミナルから次のコマンドを実行して、MySQL クライアントをインストールします。
sudo yum install -y mysql
次に、AWS コンソール上で RDS データベース用のホスト名を見つけます。ホスト名は、RDS データベースの詳細情報の [コネクティビティ & セキュリティ] セクションにある、[エンドポイント] に表示されています。
ターミナルから次のコマンドを入力し、MySQL ホストの環境変数を設定します。「<your-endpoint>」の部分は、RDS インスタンスのホスト名で置き換える必要があります。
export MYSQL_HOST=<your-endpoint>
その後、ターミナルから次のコマンドを実行し、MySQL データベースに接続します。「<user>」および「<password>」の部分は、RDS データベース作成時に定義したユーザー名とパスワードで、それぞれ置き換えます。
mysql --user=<user> --password=<password> wordpress
接続に成功するとターミナルには、次に示す画像のように、MySQL データベースへの接続が表示されます。
最後に、WordPress アプリケーションのためのデータベースユーザーを作成し、このユーザーにデータベース「wordpress」へのアクセス許可を付与します。
ターミナルで次のコマンドを実行します。
CREATE USER 'wordpress' IDENTIFIED BY 'wordpress-pass'; GRANT ALL PRIVILEGES ON wordpress.* TO wordpress; FLUSH PRIVILEGES; Exit
データベースの保護のためには、「wordpress-pass」より安全なパスワードを使うようにします。
ここで定義したユーザー名とパスワードは、次のモジュールで WordPress インストール時の設定用に必要となるので、書き留めておきます。
このモジュールでは、RDS データベース用にネットワークとパスワードでのセキュリティを設定する方法を解説しました。現在、EC2 インスタンスには RDS データベースへのネットワークアクセス権が付与されています。加えて、Wordpress アプリケーションで使用するためのデータベースユーザーも作成しました。
次のモジュールでは、EC2 インスタンスを WordPress アプリケーションが実行できるように設定していきます。
参考資料
1.WordPressのサイトの速度を計測する
WEBPAGETESTや、Page Speed Insightsの速度計測ツールを使い、パフォーマンスを確かめ、原因を探る。
WEBPAGETEST:https://www.webpagetest.org/
Page Speed Insights:https://developers.google.com/speed/pagespeed/insights/