【AWS】WordPressのインストールとRDS、S3の連携

以前研修でやったことを、実際に家でもやってみたので
今度は画像付きで残そうと思います。

## 利用環境
#### AWS
|サービス名|詳細|
|---|---|
|EC2|Amazon Linux|
|RDS|MariaDB|
|S3|-|

#### EC2インストールソフトウェア
|環境|詳細|
|---|---|
|Webサーバ|Apache|
|DBクライアント|MariaDB|
|PHP|ver 5.3.29|
|CMS|Wordpress|


## インストール作業
EC2にWordPressに必要なソフトをインストールします。
### EC2更新
```bash
$ sudo yum -y update
```
### Apache
```bash
$ sudo yum -y install httpd
$ sudo /sbin/chkconfig httpd on #自動起動ON
$ sudo /etc/init.d/httpd start  #サービスの起動
```
### PHP
```bash
$ sudo yum -y install php php-mysql php-mbstring
```
### MariaDB
```bash
$ sudo yum -y install mysql #接続はMySQLクライアントで可能
```

### WordPress
```bash
$ wget http://ja.wordpress.org/latest-ja.tar.gz ~/ #ダウンロード
$ tar zxvf ~/latest-ja.tar.gz #homeディレクトリに解凍
$ sudo cp -r ~/wordpress /var/www/html/sample #解凍したWordpressを/var/www/htmlにコピー
$ sudo chown apache:apache -R /var/www/html/sample #Wordpressフォルダの権限変更
```

## セキュリティグループの作成
インバウンドはEC2に設定したセキュリティグループのIDを設定。
ポートはMySQLと同じで利用可能です。
![image](https://qiita-image-store.s3.amazonaws.com/0/33165/967e2713-d120-bbd6-88c7-0e761f145568.png)

## RDSの設定
最初なので設定は必要最低限でインスタンスを作成します。
1. MariaDBを選択
![image](https://qiita-image-store.s3.amazonaws.com/0/33165/fafd0bc4-9ef1-2a7d-2229-7f05aba24eb5.png)

1. 開発用／テストの枠を選択
![image](https://qiita-image-store.s3.amazonaws.com/0/33165/e81330ca-8c50-76fb-a37e-e3cea319e46e.png)

1. DB詳細の指定は以下のとおり。
 * インスタンスクラス: t2.micro
 * マルチ AZ 配置: No
 * ストレージタイプ: 汎⽤用(SSD) ※既定のまま
 * ストレージ割り当て: 5GB ※既定のまま　　
 * DBインスタンスの識別⼦子: mariadb（任意）
 * マスターユーザー名: admin（任意）
 * マスターパスワード: 任意のパスワード
![image](https://qiita-image-store.s3.amazonaws.com/0/33165/eba4af64-9ce3-69ac-701d-403632635d95.png)

1. 詳細設定は以下のとおり
 * アベイラリティゾーンはECと同様
 * セキュリティグループは先ほど作成したものを選択
 * データベース名：任意
 * バックアップ設定、メンテナンス設定は任意
画面上ではバックアップは午前2時、メンテナンスは土曜日午前4時に指定
![image](https://qiita-image-store.s3.amazonaws.com/0/33165/460a75f5-db0d-f2ae-50f3-294a0a55eec6.png)
![image](https://qiita-image-store.s3.amazonaws.com/0/33165/c300eaf3-bc7d-acef-0c51-38746a0ac2fd.png)

1. DBインスタンスの作成ボタンでインスタンス作成
![image](https://qiita-image-store.s3.amazonaws.com/0/33165/01dffe78-82f5-247e-55ef-91b3d237cfa8.png)

## WordPressの設定
1. http://\<EC2インスタンス名\>/\</var/www/htmlディレクトリのwordpressフォルダ名\>にアクセス
今回、ディレクトリ名をwordpressからsampleに変更したので以下のとおり。
![image](https://qiita-image-store.s3.amazonaws.com/0/33165/3c253e7d-6264-8eb0-c97f-728b04384765.png)

1. 必要項目を入力します。
 * データベース名：MariaDBのデータベース名
 * ユーザ名：MariaDBのユーザ名
 * パスワード：MariaDBのパスワード
 * データベースホスト名：MariaDBインスタンスのエンドポイント
 * テーブル接頭辞：任意（複数Wordpressを作る場合は被らない様にする）

1. 以下の画面が出たらRDSとの接続は成功
![image](https://qiita-image-store.s3.amazonaws.com/0/33165/d529038f-0d28-9f3e-5b95-5d0522f57b14.png)

1. wordpressの初期設定
 * サイトタイトル名：（任意）
 * メールアドレスは適当でも可能
 * 検索エンジンの表示からチェックをつければ、検索エンジンに該当されない。 
![image](https://qiita-image-store.s3.amazonaws.com/0/33165/fbc1530d-195b-3e32-e28d-6743c02b7475.png)

1. http://\<EC2インスタンス名\>/\</var/www/htmlディレクトリのwordpressフォルダ名\>/wp-login.phpにアクセス
ログイン画面からログインを行う
![image](https://qiita-image-store.s3.amazonaws.com/0/33165/fd1c417f-3397-f3ba-29d5-abba4d47d18f.png)

1. ダッシュボード画面が表示されたらWordpressのインストール、RDSとの連携は完了
![image](https://qiita-image-store.s3.amazonaws.com/0/33165/0c3d8693-a092-6089-4c31-eca742d04a69.png)


## EC2からDBの確認方法
MySQL同様の接続方法で確認可能です。
```bash
$  mysql -h <ポート番号抜きのRDSエンドポイント> -P 3306 -u <ユーザ名> -p<パスワード>
```
-pとパスワードは間にスペースを入れないで接続
以下の表示で接続完了。

```bash
Welcome to the MySQL monitor.  Commands end with ; or \g.
Your MySQL connection id is 114
Server version: 5.5.5-10.0.17-MariaDB-log MariaDB Server

Copyright (c) 2000, 2015, Oracle and/or its affiliates. All rights reserved.

Oracle is a registered trademark of Oracle Corporation and/or its
affiliates. Other names may be trademarks of their respective
owners.

Type 'help;' or '\h' for help. Type '\c' to clear the current input statement.

mysql>
```
データベース一覧を確認し、使用するデータベースを選択

```bash
mysql> show databases; #データベース一覧表示
+--------------------+
| Database           |
+--------------------+
| information_schema |
| innodb             |
| mariadb01          |
| mysql              |
| performance_schema |
+--------------------+
5 rows in set (0.00 sec)

mysql> use mariadb01 #利用データベース選択
Reading table information for completion of table and column names
You can turn off this feature to get a quicker startup with -A

Database changed
mysql>
```
選択したデータベースから、テーブル一覧を出力

```bash
mysql> show tables;
+-----------------------+
| Tables_in_mariadb01   |
+-----------------------+
| sp_commentmeta        |
| sp_comments           |
| sp_links              |
| sp_options            |
| sp_postmeta           |
| sp_posts              |
| sp_term_relationships |
| sp_term_taxonomy      |
| sp_termmeta           |
| sp_terms              |
| sp_usermeta           |
| sp_users              |
+-----------------------+
12 rows in set (0.00 sec)

mysql>
```
以上でテーブル一覧が確認できるので、あとはSQLで中身を確認することが出来る。

## S3とWordPressの連携
1. WordPressのダッシュボードからプラグインを選択、新規追加を行う。
![image](https://qiita-image-store.s3.amazonaws.com/0/33165/d5e2f634-5666-305b-f9d0-daec3eab3857.png)

1. プラグインの検索画面に”Amazon S3 for WordPress with CloudFront”と入力し、表示された"Amazon S3 for WordPress with CloudFront"をインストール
![image](https://qiita-image-store.s3.amazonaws.com/0/33165/fb8c1e72-fc02-2423-c258-970a345c5bbc.png)
![image](https://qiita-image-store.s3.amazonaws.com/0/33165/1b00cd34-c126-79a4-fdcd-cbcb932fcdfb.png)

1. インストール済みプラグインから"Amazon S3 for WordPress with CloudFront"を有効化する。有効化すると設定項目にAmazonS3が表示される。
![image](https://qiita-image-store.s3.amazonaws.com/0/33165/90e75920-ec65-d18b-d15f-d92a66519180.png)
![image](https://qiita-image-store.s3.amazonaws.com/0/33165/ea885827-0a67-cb7e-33a6-d73b0306b4de.png)

1. あらかじめS3操作用権限のIAMを作成しておき、設定画面にて、アクセスキーとシークレットアクセスキーを入力します
![image](https://qiita-image-store.s3.amazonaws.com/0/33165/6c7c6f88-f627-1bfe-0711-a10cc47671b9.png)

1. 以下の項目を設定し、Saveボタンで保存する
 * AWS Access Key ID:アクセスキー（前画面で入力したキーが表示される）
 * Secret Key:シークレットアクセスキー（前画面で入力したキーが伏せられてる）
 * Use this bucket:S3のバケットを選択
 * File Uploads:チェックを入れるとファイルのアップロード先をS3にできる
 * File Permissions:アップロードされたファイルが公開設定になる
![image](https://qiita-image-store.s3.amazonaws.com/0/33165/7196d9c1-5957-21a0-01a5-cadfbad372f5.png)

1. メディアからファイルをアップロードし、URLがS3のバケットURLに変更されていれば正常に連携されています。
![image](https://qiita-image-store.s3.amazonaws.com/0/33165/6c7e506a-6a1f-0925-3444-04c51a4b2519.png)


## まとめ
ここまでの設定で、EC2+Wordpress+RDS(MariaDB)+S3の連携は完了です。
EC2はWordpressのみが乗っているAPサーバとし、データベースやファイル保存先を別にすることで、EC2は簡単に複製・削除が可能になります。