awsとwordpressでホームページ作り(準備編)

学生が無料利用枠内で、適当に作っていきます。

AWS登録〜ワードプレスをブラウザでドメイン表示できるまでです。

最終更新：パーマリンクの記載を追加

| 次 |
|:-:|
| [開発編](http://qiita.com/kinzi0828/items/041f2acf104a035e25ce)|
#はじめに
[AWS](https://aws.amazon.com/jp/)に登録します。クレカ登録して、無料枠なのでBesicプランを選択してください。

公式にインスタンスから編集画面に行くまで書いてあります。
https://aws.amazon.com/jp/getting-started/tutorials/launch-a-wordpress-website/
この通りに進めていけば、自動的にワードプレスがたちあがりますが、データベースとサーバが一緒になってしまいます。

今回は勉強のためなのでサーバ(EC2)とデータベース(RDS)を分けて作ってみようと思います。
-----やること-----
・EC2のインスタンス作成 
・RDSのインスタンス作成 
・EC2にSSHして環境を整える　 
　　・サーバをたてる
　　・wordpressを入れる
・ドメイン
　　・ELB(ロードバランサー)の作成(またはELasticIPを作成)
　　・お名前.com
　　・Route53でドメインとELB(またはElasticIP)と対応させる
・ワードプレスをデフォルト表示にして終わり


#EC2の作成
![スクリーンショット 2017-01-18 16.31.15.png](https://qiita-image-store.s3.amazonaws.com/0/144904/86c7caae-95bd-f7bd-6238-cb33ac8de00c.png)
1.amazon AMIを選択
2.無料枠のt2.microを選択。
3.そのまま
4.そのまま
5.分かりやすい名前を入力
6.セキュリティグループを作成
セキュリティグループはHTTPやSSHなどの通信を許可するかの設定です。EC2コンソールで自分で作ることができますが、作っていなかったら新しく作りましょう。　HTTPとSSHを許可します。

#RDS(データベース)の作成
![スクリーンショット 2017-01-18 15.15.31.png](https://qiita-image-store.s3.amazonaws.com/0/144904/320727d0-13a1-84c4-fe38-1b134280cc0e.png)
RDSに移動して、インスタンスを作成します。
1.無料枠のMySQLを選択。
2.開発/テスト用にして次へ。
3.無料利用枠だけ表示をして選択、下のアクセス用のIDパスワードを設定して次へ。
4.セキュリティグループを選択を次へ。
まだRDSのセキュリティグループを作ってなかったら新しく作成、作っていたら選択すればいいと思います。


#sshして環境構築
鍵を使ってsshします。

```
$ mv Downloads/鍵の名前.pem .ssh/
$ cd .ssh/
$ chmod 600 鍵の名前.pem
$ ssh -i 鍵の名前.pem ec2-user@パブリックIP(またはDNS)
```


sshのconfigを作れば`ssh 名前`で接続するようにできます。
また、セキュリティ面を考えればデフォルトのec2-userから新しいユーザを作りec2-userを無効にした方がいいと思いますが、今回はしません。
##Apacheとかのインストール
ssh接続した後
アップデート

```
$ sudo yum update
```
httpdのインストール

```
$ sudo yum install httpd
```
サーバが起動した際にhttpdを立ち上げる

```
$ sudo chkconfig httpd on
```
httpd起動

```
$ sudo service httpd start
```

php

```
$ sudo yum install php php-devel php-mysql php-mbstring php-gd
```

wordpress
サイトからダウンロードして、アパッチの下に解凍します

```
$ wget http://ja.wordpress.org/latest-ja.tar.gz
$ sudo tar zxvf latest-ja.tar.gz -C /var/www/html/
$ sudo chown -R apache /var/www/html/wordpress/
```
##WordPressのインストール

ブラウザでURLを入力する。

```
http://IP(DNS)/wordpress
```

![スクリーンショット 2017-01-19 17.31.43.png](https://qiita-image-store.s3.amazonaws.com/0/144904/c37b12cf-4518-d8f0-acd5-1e0c08d3007a.png)

ここでEC2とRDSを関連付けます。それぞれこんな風に対応してるので入力して、送信

| wordpress | RDSのDBインスタンス|
|:-:|:-:|
| ユーザ名 | ユーザ名 |
| パスワード | パスワード |
| データベースのホスト名 | エンドポイント : ポート |

間違ってたらすぐ蹴られますが、なかなか進まないときは入力はあってるけどセキュリティグループの関係でEC2からRDSに接続できない感じだと思います。
EC2コンソールからセキュリティグループを確認して、インバウンドルールの送信元を変更します。
EC2のプライベートIPを入力してもできますが、EC2のセキュリティグループを選択できるので、セキュリティグループを選択しましょう。![スクリーンショット 2017-01-21 13.03.33.png](https://qiita-image-store.s3.amazonaws.com/0/144904/864721a7-4f6c-4a0d-9b96-d402fa8de1e6.png)

コマンドでも接続を確かめられます（EC2にSSHしてから）

```
$ mysql -h エンドポイント -P 3306 -u ユーザ名 –p DB名
```

##確認
ここまで終わったら一旦WordPressが起動しているかブラウザで確認

```
http://IP(DNS)/wordpress
```

接続するとこんな感じになる
![スクリーンショット 2017-01-19 18.34.49.png](https://qiita-image-store.s3.amazonaws.com/0/144904/5cf82b86-d578-5929-4ba7-7f6c76728032.png)



URLのwordpressの部分をけして接続すると、こんな感じです。
![スクリーンショット 2017-01-19 18.48.36.png](https://qiita-image-store.s3.amazonaws.com/0/144904/d2324d67-57b3-05e3-01c0-46984c6f635f.png)

#Elastic IPの作成
下記のELBを設定する場合はElasticIPがなくてもできます。
冗長化や拡張性を考えた場合はELB一択ですが、
アクセスの少ない、または練習用ならElasticIPでいいと思います。

![スクリーンショット 2017-01-18 16.30.46.png](https://qiita-image-store.s3.amazonaws.com/0/144904/ec6b97c9-fb60-e536-c70f-be9be9a8402a.png)
AWSではEC2が稼働していると、publicIPとドメインが割り当てられますが、停止してしまうと変わってしまいます。このままではとても使えませんので、１つの変わらないIP(ElasticIP)を設定し対応させます。
EC2コンソールからElasticIPを選択し、新しく割り当てます。割り当てボタンを押すと１つのIPがもらえるので、選択後アクションから、EC2に関連付けます。


#ELBを作成
Route53でドメインを関連づけるためは　ELB(ロードバランサー)が必要です。
または、ElasticIPが必要です。ELBが不要な場合は飛ばしてください。

ApplicationとElasticがあるんですがどっちがいいんでしょうか・・・
とりあえず今回はHTTP推奨と書いてあるApplicationの方にしてみます。

これを作ることによって、EC2をロードする際に負荷分散してくれます。
1.名前を入力
2.そのまま
3.ELBのセキュリティグループを新しく作成します。HTTPだけ許可します。
![スクリーンショット 2017-01-19 20.47.53.png](https://qiita-image-store.s3.amazonaws.com/0/144904/ecbd7e31-a77f-e4a1-c6d8-ca5fa709a9f2.png)
4.ターゲットグループの名前を入力
5.4のターゲットグループにEC2を追加
6.確認
分散するターゲットグループを作成します
EC2コンソールからロードバランサーを開きます

#ドメイン
ドメインを持ってなかったらドメインをとりましょう！

例えば、お名前.com
http://www.onamae.com/
安いのは100円以下で1年間有効なドメインが取れます。

##Route53
取得したドメインをAWSに関連付けます。

###Route53①
Route53コンソールで CreateHostedZone ボタンを押して、取得したドメインを同じ名前で作成します。
この時NSが4つできるので、メモします。（.netとか.orgとかついてるやつ）

###ドメインNav
今回はお名前.comで取得したので、お名前.comのドメインNavにログインします。
「ネームサーバーの変更」の「ネームサーバーの情報を入力」の欄に先ほどメモしたやつ４つを入力して進みます。少し待てば完了です。
![スクリーンショット 2017-01-19 19.32.03.png](https://qiita-image-store.s3.amazonaws.com/0/144904/1dd34937-4c6e-7261-cab3-ef59d0524a9f.png)

###Route53②
Route53コンソールに戻って、CreateRecordSetボタンを押す。
![スクリーンショット 2017-01-19 21.15.19.png](https://qiita-image-store.s3.amazonaws.com/0/144904/9808be2c-18cc-456a-fdca-b409cb8a999c.png)
AliasをYesにし、作成したELBを選択し完了。

ELBが不要な場合、Noにし、Value入力欄にElastic IPを入れてあげます。
![スクリーンショット 2017-01-20 12.21.21.png](https://qiita-image-store.s3.amazonaws.com/0/144904/92f92197-4173-fe4e-d377-8acd4a794b39.png)


次のコマンドで設定が反映されているのか確かめれます。

```
$ dig ドメイン名 NS
```
![スクリーンショット 2017-01-19 21.37.46.png](https://qiita-image-store.s3.amazonaws.com/0/144904/a03c01f0-2815-8b9f-a13e-14d41306c1d7.png)

```
$ nslookup ドメイン名
```
ドメインとIPアドレスの対応が見れます。
ELBの場合２つ以上でます。
![スクリーンショット 2017-01-20 11.30.11.png](https://qiita-image-store.s3.amazonaws.com/0/144904/6b821ef9-ab70-6518-2f17-9d784869a96d.png)

ElasticIPの場合は１つ
![スクリーンショット 2017-01-20 12.24.33.png](https://qiita-image-store.s3.amazonaws.com/0/144904/fc3c7f49-82cb-d815-603e-8069fa3a1038.png)

ブラウザから確認してみます

```
http://ドメイン名
http://ドメイン名/wordpress
```

表示されればオッケーです。

#デフォルトでwordpress表示
http://ドメイン名/wordpress
カッコ悪いので、つけなくてもwordpressが開くようにサーバの設定を変えましょう。

```
/etc/httpd/conf/
sudo vim httpd.conf
```
Document Rootと下の方のDirectoryの２つを変更します。

![スクリーンショット 2017-01-21 23.10.01.png](https://qiita-image-store.s3.amazonaws.com/0/144904/624f0428-3ef4-5a76-d780-4c6c34e254dd.png)

```
/var/www/html
```
から

```
/var/www/html/wordpress/
```
に変更します。
こんな感じです。
![スクリーンショット 2017-01-21 23.28.29.png](https://qiita-image-store.s3.amazonaws.com/0/144904/8246aa94-2df3-710f-f0cd-a39f7ad596c1.png)



次にその下にある

```
AllowOverride none
```
を

```
AllowOverride All
```
に変更します。

![image](https://qiita-image-store.s3.amazonaws.com/0/144904/b343cac1-502d-521c-bd8b-1daf76734a1d.png)


これは、パーマリンク(wordpress/2017/1/1など)を使用した際に「not Found」になっちゃうのを防ぐためです。
そのあとデーモンを再起動

```
sudo service httpd restart
```

ブラウザで確認

```
http://IP(DNS)
```

以上がザクっと、AWS登録からワードプレスがドメイン名で見れるようまででした〜
お疲れ様でした！

次回からテーマ開発になります

#参考
全体
・https://yoheikoga.github.io/2016/09/14/wordpress-on-aws/
・http://qiita.com/naoki_mochizuki/items/f795fe3e661a3349a7ce
EC2
・http://qiita.com/yangci/items/ef2ab9b6f0d28bad0881#ec2-user%E3%81%AE%E5%89%8A%E9%99%A4
wordpressインストール〜EC2+RDS関連づけまで
・https://tsuchikazu.net/aws_amazon_ec2_rds_wordpress/
httpd
・http://linux.kororo.jp/cont/server/httpd_conf.php