今回は、AWSで作るWordpressのEC2 2台構成を構築した場合の接続方法に関するTipsをご紹介します。
EC2の接続方法はSG(セキュリティグループ)が主ですが、WordpressのDB接続の場合はそれだけでは接続できません。
少なくとも3つの設定が必要になります。順に解説していきます。
AWSで作るWordpress2台構成(WEB+DB)
AWS構成
今回作成するAWS構成は下記です。
WordPressをAWS上で構成します。EC2はWEB用とDB用の2台に分けます。
2台のEC2は同じリージョン・アベイラビリティゾーンに設置しましょう。アベイラビリティゾーンが違う場合、Wordpressの仕様上、遅延時間がかなり発生します。
具体的な遅延時間については下記で紹介しています。
AWS EC2でwordpressを分けるメリット
分ける理由として、EC2の負荷軽減のためです。
EC2内にWordpressとDBをセットで建てても問題ありませんが、インスタンスタイプを考慮するとコストとしては2台構成のほうが安く済みます。
例えば、t3.large1台で賄えるサイトを運用している場合、
t3.small(WEB)+t3.medium(DB)の2台構成で組んでも運営が出来る場合が多いです。
料金としては、
t3.large = 0.1088 USD/h
t3.small + t3.medium = 0.0272 USD + 0.0544 USD = 0.0816 USD/h
上記のように1時間当たり約0.02USDコストを抑えることができます。
EC2 (WEB+DB)接続方法
AWS作業-手順概要
以下手順で設定を行います。こちらは概要のみを示します。詳細手順はその次に書きますね。
①EC2のSGを設定
web側、DB側双方のSGを設定します。
②DBの穴あけ grant all on *.* to
DB側にてmariaDBの穴あけ作業をします。
③WEB側のDB向き先設定
wp-config.phpにて向き先の設定をします。
AWS作業-詳細手順
①EC2のSG設定
DB用EC2側にSGを設定します。
インバウンドルール
ポート3306で0.0.0.0/0を追加
※セキュリティを厳密にする場合、WEB用EC2のプライベートIPアドレス or WEB用EC2に設定しているSGを設定しましょう。
アウトバウンドはデフォルトのままです。
②EC2 DBの穴あけ
事前情報として、WEB用EC2のプライベートドメインを調べておきます。
AWSコンソールにてip-x.x.x.x.ap-northeast-1.compute.internal で記載されている文字列です。
DB用EC2へSSHログインし、mariaDBに入ります。
EC2#mysql -h [RDSエンドポイント] -P 3306 -u devadmin -p
その後、下記で権限を事前確認します。
MariaDB [(none)]> SELECT user, host FROM mysql.user;
穴あけをします。
MariaDB [(none)]> grant all on *.* to[user]@'[ip-x.x.x.x.ap-northeast-1.compute.internal]' IDENTIFIED BY '[PASSWORD]' WITH GRANT OPTION;
反映をします。即時で反映されます。
MariaDB [(none)]> FLUSH PRIVILEGES;
再度、下記で権限の事後確認をします。登録したユーザー・アドレスが登録されているか確認できます。
MariaDB [(none)]> SELECT user, host FROM mysql.user;
③WEB側DB向き先設定
事前情報として、DB用EC2のプライベートドメインを確認しておきます。
wp-config.phpから下記部分をDB用EC2のプライベートドメインに修正します。
大体の場合はlocalhostなどになっているはずです。
// ** MySQL 設定 - この情報はホスティング先から入手してください。 ** //
/** WordPress のためのデータベース名 */
define('DB_NAME', 'db_table');
/** MySQL データベースのユーザー名 */
define('DB_USER', 'xxxxx');
/** MySQL データベースのパスワード */
define('DB_PASSWORD', 'xxxxxxx');
/** MySQL のホスト名 */
define('DB_HOST', 'ip-x-x-x-x.ap-northeast-1.compute.internal');★ココ
/** データベースのテーブルを作成する際のデータベースの文字セット */
define('DB_CHARSET', 'utf8mb4');
/** データベースの照合順序 (ほとんどの場合変更する必要はありません) */
define('DB_COLLATE', '');
接続確認
WEB用EC2からDB用EC2のmysqlログインができれば確認OKです。
他にも、インストールしていればphpmyadmin等でも接続確認ができます。
AWSの効果的な学習方法は?

最後に、AWSの効果的な学習方法をご紹介します。
自学自習はUdemy講座
オンラインプラットフォームであるUdemyは安価で手軽にAWSの学習が可能です。
しかし、上記で紹介したような実際のAWSエンジニアが実施している構築スキルまでは教えてくれません。初心者~中級者向けの講座が多くなっています。
私も受講した、初心者向けAWS講座を下記記事でまとめています。ご参考ください。
1人で学習が難しい場合はオンラインレッスン
1人で学習が難しい場合はオンラインレッスンがおすすめです。
最近では、AWS講座を提供するオンラインレッスンも増えてきました。
料金は高くなりますが、現役エンジニアからAWSについて学ぶことができます。
本ブログ執筆者のメンタリングも受付中
本ブログを執筆している[KAITech]もメンタリングを受け付けています。
オンラインレッスンは高くて手が出せないという方は私までお気軽にご相談ください。
下記から承っております。