AWSでワードプレスをホスティングする

#概要
AWSの基本的なサービスでWordPressをホスティングしていきます。

##今回作成するインフラ構成図
![スクリーンショット 2021-04-05 18.37.44.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/825833/9f5a6097-1a8c-0d9b-d4f9-65c82361b18b.png)


今回はまずこちらのシングル構成でインフラを構築し、webサーバーにsshでログインし、WordPressをインストールしていきます。

##前提知識
インフラの基礎的な知識

##早速やってみる
はじめに重要なのはまずインフラ構成図をしっかりと作りどういった構成と手順でいくかを確認することです。

##VPCを作成
まずは土台になるVPCを作成していきます。
VPC... AWSの仮装ネットワーク環境

![スクリーンショット 2021-04-05 18.39.57.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/825833/b1de9521-edcf-7627-e73c-af9e9f4f669d.png)
まずはVPCを検索しVPCを作成していきます。

![スクリーンショット 2021-04-05 18.46.06.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/825833/161520df-f2c6-9a44-a763-8c9da81f2ec5.png)

名前は任意で大丈夫です。
これでVPCを作成です！
緑色でVPCが正常に作成されましたと出るはずです！！！

##サブネットの作成

次にサブネットを作成していきます！
サブネット...サブネットとはネットワーク内のネットワークだと思ってください。ネットワークを細かく区切るイメージです。

![スクリーンショット 2021-04-05 18.49.09.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/825833/25e3d03f-1afa-c3eb-c812-daad2e080060.png)

サブネットをクリックし右上のサブネットを作成をクリックしましょう！

![スクリーンショット 2021-04-05 18.54.32.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/825833/ad3d0ae5-9d7e-f29b-266a-59dff26d9847.png)

先ほど作成したmy-vpcの中にまずpublic-subnetを作成していきます！
アベイラビリティゾーン(AZ)とはAWSのデータセンターです！！
今回は東京リージョンの1aを選択しましょう！
こちらででまずサブネットを作成です！

publicサブネット... インターネットに直接接続されるサブネットです！このあとinternet gateway(後ほど説明)を作成しネットにアクセスできるようにします！！

次にPrivate Subnetを作成していきましょう！
Private Subnet... インターネットに直接繋がれていないsubnet

データベースなどは基本的にPrivate Subnetで作成していきます。

![スクリーンショット 2021-04-05 19.10.47.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/825833/f1fa8efe-f58b-75e2-b7ed-a8929eee9664.png)

先ほどと同じ手順で今度はprivate-subnetを作成していきましょう！
AZはまた東京1aで
CIDRブロックだけ変わっているので注意しましょう！！

![スクリーンショット 2021-04-05 19.12.50.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/825833/64745f72-a6dd-2097-f605-ac0b6ab27288.png)
このように2つのサブネットが作成されたかと思います！

![スクリーンショット 2021-04-05 19.13.41.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/825833/49dd9833-3e7a-7c29-0631-4d8f3ef72c4e.png)
こちらが現在作成していった部分です！！
こうして構成図をみながらやっていくととてもわかりやすいと思います。

土台ができたので次はEC2をPublic Subnetを作成するのかな？？
など想像がつきやすいかと思います！

##Public SubnetにEC2を構築する
EC2... AWSのWebサーバー

![スクリーンショット 2021-04-05 19.18.15.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/825833/4fb5e626-576f-0e2d-3ab2-cc27381ebd0c.png)

EC2で検索して左側のインスタンスをクリックします！
![スクリーンショット 2021-04-05 19.19.25.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/825833/d6c8d5b6-a343-d810-7e64-9039b5710aae.png)

インスタンスを起動をクリック
![スクリーンショット 2021-04-05 19.21.15.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/825833/ef39c7c3-9a1f-1425-2d9a-e502c12d6c7e.png)

アマゾンリナックス2を選択
次のインスタンスタイプは無料枠のt2 microを使っていきます。
このあと次のステップを選択していきます。(※確認と作成を押すと作成されてしまうので注意しましょう)

![スクリーンショット 2021-04-06 17.59.38.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/825833/82b6de97-4388-ae63-3440-5c2d82af9c03.png)


次に先ほど作成したVPCを選択し、構成図をみるとわかると思いますが、Public SubnetにEC2を起動したいのでPublic Subnetを選択します。
自動割り当てパブリックIPを有効にし次のステップをクリックしてください。

次のストレージはそのまま次へ進んでください。

![スクリーンショット 2021-04-05 19.27.16.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/825833/6178c054-3e85-73da-e170-c1d592e6bc5f.png)

Nameタグを追加して任意の名前をつけましょう！
今回はWebServer1としておきます。

![スクリーンショット 2021-04-05 19.29.16.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/825833/930771db-d9bb-747d-b854-4fe99c270e1e.png)

次にセキュリティグループですが、名前をわかりやすくWeb-SG-1に変更しておきましょう！
今回はSSHだけではなくHTTP通信もしたいのでこちらを追加します。

こちらで作成します！


![スクリーンショット 2021-04-06 18.03.26.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/825833/e7a413ea-d692-d449-2df7-4da92e339336.png)

起動を押すとキーペアが選択できますので
新しいキーペアを作成します。
キーペア名は任意で大丈夫です。
これでキーペアをダウンロードしておきましょう！！
わかりやすくデスクトップとかに保存しましょう。
これでインスタンスを作成です！

![スクリーンショット 2021-04-06 18.05.52.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/825833/223ab527-8e8a-f5c3-f5b6-ee6e59142e2e.png)

これでEC2ができました。
次の手順としてはEC2をインターネットにつなげるために矢印の部分のinternet gateway とRoute tableを作成していきます！


##internet gatewayを設定する
EC2をインタネットとつなげるためにはinternet gatewayを設定する必要があります。
構成図を見るとinternet gatewayはVPCにあるのでVPCのページを開きます！
左側のinternet gatewayを選択しましょう！

![スクリーンショット 2021-04-06 18.09.44.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/825833/7e5d71c0-913e-3325-8aaf-ff8cbcffabd2.png)

これで作成していきましょう！
![スクリーンショット 2021-04-06 18.10.50.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/825833/a42bff88-2ca5-da20-7a39-7b9fdc6da430.png)

こちらに関しても名前は任意です。

![スクリーンショット 2021-04-06 18.11.42.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/825833/43241150-8efe-0542-60cd-385cd62b39f9.png)
作成してもVPCにしっかりとアタッチしないと意味が無いので右上のVPCへアタッチしましょう！

VPCは作成したmy-vpcを選択してアタッチです！

##Route Tableの設定
次にRoute tableを設定していきます。
Route Tabel...こちらでEC2とinternetgate wayを設定していきます。

![スクリーンショット 2021-04-06 18.15.44.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/825833/c336a070-bea0-ea76-3470-8ef16c6b7166.png)

サブネットを開いてpublic subnetにチェックを入れましょう！
![スクリーンショット 2021-04-06 18.17.07.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/825833/33f62102-40f6-4e64-e15a-c79b39ad3bc6.png)

ルートテーブルから設定を変更していきましょう！

![スクリーンショット 2021-04-06 18.19.07.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/825833/775a7e73-a669-b30d-c749-d1bc24c356de.png)

ルートの編集よりinternet gatewayを追加します！
![スクリーンショット 2021-04-06 18.20.57.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/825833/463288f9-3dce-4111-541c-66b27b4960bc.png)

ではここからSSHでログインしていきましょう！！

##sshでEC2でログインする
ssh...Secure Shellで遠隔から安全に(セキュアに)ログインする

ターミナルを開きましょう！！

```
cd Desctop
chmod 400 new-key.pem
```
まずはkey-pemmを保存してあるディレクトリに移動します。
権限を400に変更しましょう。

```
ssh -i new-key.pem ec2-user@EC2のパブリックIP
```
これでログインができます。
パブリックIPは
EC２→インスタンス→ネットワーキングから確認することができます！

![スクリーンショット 2021-04-06 18.49.44.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/825833/c40445c7-7c3a-9428-9e72-13c98b05e6a5.png)

##データベースを作成する
webサーバーにログインできたので次にWordPressをインストールするためにデータベースの作成をしていきます。
RDS...AWSのデータベースサービス
RDSを作成するためには必ずサブネットグループを作成する必要があります。
![スクリーンショット 2021-04-06 19.20.27.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/825833/b65cdc1b-4fe5-dde2-e055-113c5e6b8d3b.png)
これが今回シングル構成なのにからのサブネットを用意している理由になります。

では作成していきましょう！
![スクリーンショット 2021-04-06 19.24.18.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/825833/bff20c8d-4e72-cd0e-7dd1-a76844cd20c3.png)


![スクリーンショット 2021-04-06 19.24.54.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/825833/ca9a83ea-e522-d177-77b2-6d4ca2dd297b.png)

publicとprivateそれぞれを一つずつ作成します。

ではRDSを作成していきましょう！
RDSで検索からサブネットグループを選択します。
![スクリーンショット 2021-04-06 19.32.07.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/825833/b0cb53f7-fc4b-ef98-bc4b-9001c471c38c.png)
次にサブネットグループを作成をクリック

![スクリーンショット 2021-04-06 19.34.48.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/825833/5c13ee15-28aa-8ec9-e879-567ae72ddda2.png)
こちらで作成します。
サブネットを追加の部分はPrivate Subnetの方を追加しています！

これで作成です！

これでRDSを作成する準備が整いました！
左側のタブのデータベースを選択しましょう！

![スクリーンショット 2021-04-07 11.02.32.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/825833/8960a12c-3812-2f0e-3298-432340115d94.png)


ここからデーターベースの作成を選択

上から
MySQL
バージョン: 8.0.20
開発テストよう
を選択しましょう！

![スクリーンショット 2021-04-07 11.05.17.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/825833/92de35f5-6c86-4c38-e722-eff35107cd89.png)

ユーザー名とパスワードを任意で決めましょう！

DBインスタンスサイズはバースト可能のtクラスにしましょう！(ここで結構値段が変わってきます！)
ストレージはそのままで
多様性と耐久性は今回はスタンバイインスタンスを作成しないを選択しましょう！


![スクリーンショット 2021-04-07 11.08.58.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/825833/2ae07002-eb7a-396d-8110-799c2285279b.png)
VPCは一番最初に作成したものを選択肢
サブネットグループも先ほど作成したものを選択しましょう！

セキュリティグループを新規作成で
![スクリーンショット 2021-04-07 11.12.02.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/825833/9c9b02ef-3a4f-f603-4cfb-932696c3c27b.png)

こんな感じに作成しておきましょう！
基本データーベースは世界中に公開するものでは無いのでパブリックアクセスは可能にしない方が良いです。

データベース認証はパスワードのままでこれで作成です！
一番下に月間コストが出てきますが、こちらは作成後すぐに停止すればそこまで料金は掛からないので、
切り忘れだけ注意しましょう！
追加設定を押してデータベース名だけWordPressにしておきましょう！！

これで作成です！

ではここからRDSおセキュリティグループを作成していきます！
VPCの画面に戻って左のタブからセキュリティグループを選択しましょう！

![スクリーンショット 2021-04-07 11.18.09.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/825833/91ffa48f-3100-17ae-6b58-3b1e9462cd40.png)
こちらに先ほど作成したRDSにセキュリティグループがあるかと思います。

こちらを選択して編集していきましょう！
編集の部分でインバウンドルールを選択します。
インバウンドルール...内側に入ってくる通信
アウトバウンドルール...外側に出ていく通信

基本的にデータベースの情報は超重要なのでインバウンドはじWebサーバーだけからといった設定に変更していきます。

![スクリーンショット 2021-04-07 11.23.53.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/825833/0d6c1eec-e8d6-2244-2ac1-6ee609ba5135.png)

sgと打つとWEBサーバーのセキュリティグループが出てくるのでこちらを選択します。
これで保存しましょう！

では準備が整ったのでここからWordPressをインストールしていきます！！

##WordPressをインストールする

ではターミナルに戻りましょう。
現在はEC2にログインしている状態かと思います。
もしログアウトしてしまった人は

```
cd Desctop
chmod 400 new-key.pem
```

```
ssh -i new-key.pem ec2-user@EC2のパブリックIP
```

こちらでログインしなおしましょう！

まずはルート権限になりましょう！

```
sudo su -
```
こちらでルート権限になれます！！
EC2のパッケージを最新版にupdateしましょう！

```
yum -y update
```
yumとはCeontOSで利用されるパッケージ管理システムでyumコマンドを実行してパッケージのインストールやupdateを行います。

次にWordPressをインストールするために
ApacheとMySQlとPHPをインストールしていきましょう！！

```
amazon-linux-extras install php7.2 -y
```
-yは全ての質問をyesで答えます。
amazon-linux-extraとはインスタンスにあるPHPやPython、GOなどのパッケージを利用できるようマネジメントで管理するコマンドです！
これでPHPをinstallしています。

```
yum -y install mysql httpd php-mbstring php-xml gd php-gd
```
あとはWordPressに必要なものをインストールしていきます。
この辺はWordPressの使用なのであまり気にしなくて大丈夫です。
hpptdはApacheです。

```
systemctl enable httpd.service
systemctl start httpd.service
```

systemctl コマンドはサービスを停止したり起動したりする時に使うコマンドです！
これでhttpdをスタートさせましょう！

これでWordPressが使える状態になっています！！
では環境が整ったのでWordPressをインストールしていきましょう！

```
wget http://ja.wordpress.org/latest-ja.tar.gz ~/
```
wgetコマンドはwebサイト全体あるいは特定の階層を一括取得します。
つまりhttp~~~を取得してそれを~/でカレントディレクトリに指定しています！
ちなみにtar.gzは拡張子ですが
tarコマンドでまとめたファイルをgzipコマンドで圧縮しているファイルになります。

つまり圧縮されているため、これを展開していく必要があります。
```
tar zxvf ~/latest-ja.tar.gz 
```
こちらのコマンドを使います！

llコマンドをうつとWordPressがあるのがわかるかと思います。
こちらを特定の場所にコピーしていきます！

```
cp -r ~/wordpress/* /var/www/html/
```
```
chown apache:apache -R /var/www/html/
```
こちらで権限をapacheに変更しましょう！
これでWordPressのインストールと設定が完了しています！

では確認していきましょう！

EC2のインスタンスで作成したwebサーバーの詳細からパブリックIPアドレスをネットで検索してみましょう！！
![スクリーンショット 2021-04-07 13.01.02.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/825833/5fc4a9cb-7095-c637-2acc-a2c3b6dc867e.png)

これでWordPressが立ち上がります！！！

お疲れ様でした！！！