5、【AWSでWordPressを公開する方法】 RDSでデータベースを構築する

こんにちは。まさかずです。

AWSでWordPressサイトを構築する方法についてシリーズで書いています。

第5回目の今回は「5、RDSでデータベースを構築する」編になります。

第1回目から第4回目はこちらにまとめています。

こちらもぜひ見てみてください。

それでは本編に進みます。

RDSでデータベースを構築する【AWSでWordPressを公開しよう】

AWSでWordPressを公開する方法の第5回目は「RDSでデータベースを構築する」になります。

WordPressを含むいろいろなサイトにはユーザ情報などのデータが保存されています。

それらのデータを保存する先を「データベース」と呼びます。

AWSにおけるデータベースに特化したサービスをRDS(Relational Database Service)と呼びます。

今回はRDSの環境構築手順について解説をします。

具体的な流れは下記のとおりです。

  • アベイラビリティーゾーンにプライベートサブネットを作成
  • セキュリティグループの構築
  • RDSでデータベース領域を作成
  • MariaDBの接続を設定する

次に作業の前にデータベースについて簡単に解説します。

データベースとは

データベースはその名の通りデータを整理して集めた情報になります。

一般的によく使われるのがエクセルのような表形式のもので「リレーショナルデータベース」と呼びます。

SQLと呼ばれるデータベースの操作言語によって、データの追加・削除や抽出などを行うことができます。

データベースにはいろいろな種類があり、オープンソースのMySQL(MariaDB)、Oracle Database、PostgreSQLなどが有名です。

簡単な説明は以上です。

データベースの概要について、こちらの記事がわかりやすいので目を通してみてください。

次から実際に手を動かします。

アベイラビリティーゾーンにプライベートサブネットを作成

まずはデータベースを作るためのネットワークを設定します。

RDSでデータベースを作成する前に、別のアベイラビリティーゾーンでプライベートサブネットを作成します。

RDSには自動的にデータをバックアップしてくれる機能があります。

その機能を使用するために、別のアベイラビリティーゾーンを使う必要があります。

ネットワークについては「VPCでネットワークを作成する」編を参照してください。

前回1aのアベイラビリティーゾーンを使用したので、今回は1cを使用します。

RDSのネットワークをプライベートにすることで、インターネットからの直接的なアクセスを防ぎます。

それでは早速、プライベートサブネットを作成します。

プライベートサブネットを作成する

最初に「VPC」から「サブネット」を選択して「サブネットの作成」をクリックします。

サブネットの作成」では下記のように設定をします。

サブネットの作成

名前タグ:任意の名前(今回は「wordpress-subnet-private-1c」としました)
アベイラビリティーゾーン:ap-northeast-1c
IPv4 CDIR ブロック:任意のCDIRブロック(今回は「192.168.30.0/24」としました)

これで「作成」を押して完了です。

セキュリティグループの構築

次に作成したEC2のインスタンスからRDSにアクセスが出来るように、セキュリティグループを作成します。

RDS側から見るとEC2インスタンス以外のアクセスを受け入れないようにしています。

まず、VPCの「セキュリティグループ」から「セキュリティグループを作成」をクリックします。

次に下記の内容で入力をします。

セキュリティグループを作成

セキュリティグループ名:任意の名前(今回は「wordpress-db-sg」としました)
説明:任意の内容
VPC:最初に制作したVPC(今回の場合「wordpress-vpc」)

[インバウンドルール]
タイプ:MySQL/Aurora
ソース:作成したEC2インスタンスのセキュリティグループ(今回の場合「wordpress-ec2-sg」)

この内容で「セキュリティグループを作成」を押して完了です。

サブネットグループの作成

異なるアベイラビリティーゾーンを使ってサブネットを作成したので、グループを作成して冗長化出来るようします。

サービス」から「RDS」を検索 or 選択します。

サブネットグループ」の「DBサブネットグループを作成」をクリックします。

DBサブネットグループを作成」では下記の内容で入力します。

DBサブネットグループを作成
[サブネットグループの詳細]
名前:任意の名前(今回は「wordpress-subnet-group」としました)
説明:任意の内容
VPC:最初に制作したVPC(今回の場合「wordpress-vpc」)

[サブネットを追加]
アベイラビリティーゾーン:ap-northeast-1a、ap-northeast-1c を選択
サブネット:wordpress-subnet-private-1a、wordpress-subnet-private-1c を選択

作成」を押して完了です。

RDSでデータベースを領域を作成する

次にRDSでデータベースを作成します。

RDS上の「データベース」から「データベースの作成」をクリックします。

 「データベースの作成」で下記の内容を入力します。

DBサブネットグループを作成

データベースの作成方法を選択:標準作成
エンジンのタイプ:MariaDB
テンプレート:無料利用枠

[設定]
DBインスタンス識別子:任意の名前(今回は「wordpress-db」としました)
マスターユーザ名:root
パスワード自動生成:チェック

[DBインスタンスサイズ]、[ストレージ]はそのまま

[接続]
VPC:最初に作成したVPC(今回の場合は「wordpress-vpc」)
「追加の接続設定」を開く
サブネットグループ:今回作成したサブネットグループ(今回の場合「wordpress-subnet-group」)
既存のVPCセキュリティグループ:今回作成したセキュリティグループ(今回の場合「wordpress-db-sg」)
アベイラビリティーゾーン:ap-northeast-1a

この内容で「データベースを作成」をクリックします。

今回のデータベースははオープンソースの「MariaDB」を使用します。MariaDBはもともとMySQLから分岐したものです。シェアも高くWordPressでもMariaDB(MySQL)を使用されるケースが多いです。

データベースの作成までは数分程度の時間がかかります。

データベースが作成後、データベースのパスワードが出てきますのでコピーをして控えておいてください。

MariaDBの接続を設定する

最後にEC2からRDSへの接続を確認します。

ここではコマンドプロンプトやターミナルを使用します。

ログイン方法については「3、EC2でインスタンスを作成 + Apacheをインストールする」の記事でも書いています。

ログインの際はEC2のIPアドレスが必要ですので、「EC2」の「インスタンス」から「IPv4パブリックIP」を控えておいてください。

sshでのログイン

まずEC2インスタンスにsshでログインします。

// .sshディレクトリに移動
$ cd .ssh

// 秘密鍵を指定してsshでログイン
$ ssh -i ./wordpress-ssh-key.pem ec2-user@パブリック IP

今回の場合、IPアドレスが「54.250.179.50」となっていますので、ログインは

$ ssh -i ./wordpress-ssh-key.pem ec2-user@54.250.179.50

この様になります。

MariaDBのインストール

次にMariaDBをインストールします。

インストール時は管理者権限になります。

//  管理者権限になる
$ sudo su -

// MariaDBのインストール
# yum install mariadb mariadb-server

Is this ok [y/d/N]: y // インストールするか聞かれるので「y(yes)」とする
...
Complete! // コレが出れば完了

// MariaDBの起動
# systemctl start mariadb

// MariaDB起動の確認
# systemctl status mariadb
...
Active: active (running) // コレが表示されていれば起動されている

これでMariaDBの起動が完了です。

RDSへの接続

RDSへの接続をする場合、以下のコマンドを使用します。

# mysql -h RDSのエンドポイント -u root -p

RDSのエンドポイントとは、RDSへアクセスするためのURLのようなものです。

「RDS」から「データベース」で「wordpress-db」をクリックすると詳細が確認できます。

下の左側に「エンドポイントとポート」の部分に「エンドポイント」が書かれています。

今回の場合「wordpress-db.cfvn8iwphua7.ap-northeast-1.rds.amazonaws.com」となりました。

ですのでMariaDBへの接続のためのコマンドは、下記のとおりです。

// RDSへの接続
# mysql -h wordpress-db.cfvn8iwphua7.ap-northeast-1.rds.amazonaws.com -u root -p

Enter password: // パスワードを入力

MariaDB [(none)]> // この表記が出れば接続完了!

パスワードはRDSでデータベースを作成したときに自動生成されたパスワードです。

これで問題なければRDSへの接続が完了となります。

まとめ

今回は「5、RDSでデータベースを構築する」をお届けしました。

内容をまとめると下記のとおりです。

  • アベイラビリティーゾーンにプライベートサブネットを作成
  • セキュリティグループの構築
  • RDSでデータベース領域を作成
  • MariaDBの接続を設定する

データベースまでできたのでいよいよWebサーバっぽくなってきました。

次回は「6、SSLを設定しよう」になります。

ACM、ロードバランサなどを使用してサイトをSSL化していきます。

それでは!