なんちゃってエンジニアがAWSでそれっぽいことをしてみた part2

## 前回のご紹介と今回やること

　　[part1はこちらです](https://qiita.com/Odin/items/ca5b131e69450e6fc087)
　　前回ネットワーク環境を作ったので、
　　今回はweb/DBサーバを立てて、wordpress入れて起動するところまでを行います。

　　注釈として、今回はどこかに公開することなどは想定しないため
　　ドメイン取得はせず、冗長化もしません。

## レシピ

#### 　２．webサーバ構築
###### 　　（１）Linuxサーバを立てる。
　　　EC2のインスタンスメニューからインスタンス起動を選択して
　　　ポチポチ選択していって、Linuxサーバを立てます。

　　　自分で色々試作するための環境なのでリソースは最小構成でいきます。
　　　ネットワーク設定はpart1で作成したものを使います。
　　　AMIはAmazon Linuxです。
　　　制限周りはssh(port22)だけ解放して、後から必要なものを開けていくようにしています。

　　　・名前:odin-web　適当な名前で
　　　・Amazon マシンイメージ (AMI)：Amazon Linux 2023 AMI
　　　・インスタンスタイプ：t2.micro
　　　・キーペア：任意のpemを作成　※保存忘れずに
　　　・ネットワーク設定：part1で作成したVPCとpublicサブネットを指定
　　　・パブリックIPの自動割り当ては有効化
　　　・セキュリティグループはセキュリティグループ名を任意で作成
　　　・ルールはとりあえずssh(port22)だけ解放
　　　・ストレージはいじらない(8GB)

　　　でインスタンスの起動
　　　↓↓↓↓↓↓↓↓↓↓
　　　こんな感じでインスタンスが「実行中」になれば完了です。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3566513/887461f8-bbf6-24e0-19ee-86bc1497c07d.png)

###### 　　（２）sshで接続してみる
　　　インスタンスが起動したら、接続確認します。
　　　コマンドプロンプトから
```
　　　ssh -i "hogehoge.pem(作成したキーペア)" ec2-user@(IPアドレス)
```
　　　こんな感じでログインできたらOKです
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3566513/026cc28c-9b6e-93a4-e4e4-74ed871ec875.png)

###### 　　（３）Apacheをインストール
　　　インスタンスを立てたら、Apacheインストールします

```
　　　#ec2インスタンスのライブラリをupdateする（お作法）
　　　　sudo yum update -y
　　　#Apacheインストール
　　　　sudo yum -y install httpd
　　　#Apache起動
　　　　sudo systemctl start httpd.service
　　　#Apache起動確認
　　　　sudo systemctl status httpd.service
```
　　　こんな感じでactiveだったらOKです
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3566513/7c1a9800-43f3-f449-8516-0656b209109a.png)

###### 　　（４）ファイアウォール設定
　　　　現状publicサブネットはssh(port22)しか許可していないので
　　　　Webアクセスするために80port許可をする

　　　　EC2のメニュー「セキュリティグループ」から作成したセキュリティグループ
　　　　odin-webを探す
　　　　「インバウンドルールを編集」でインバウンドルールに
　　　　タイプhttpでポート範囲80のインバウンドルールを追加する
　　　　（ソースは一旦、Anywhereで）

　　　　作成されるとこんな感じになります。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3566513/7316aefc-37be-9280-4f7f-812299f81d5b.png)

　　　　これでapacheが起動した状態で80portを受け付けられるようになったので
　　　　Webアクセスができるようなったはずです。

　　　　ブラウザからIP直指定でアクセスすると…
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3566513/f7f508fb-36bf-8802-0a37-a406b7fdfcbf.png)
　　　　Apacheが「It works!」を返してくれました。


###### 　　（５）ElasticIPを設定
　　　　今回ドメインは取得しませんが、IPだけは固定しておきます。でないと面倒なので。
　　　　（課金あり）

　　　　Elastic IP アドレスのメニューから「Elastic IP アドレスを割り当てる」
　　　　で「割り当て」したら、割り当てられたIPアドレスを「アクション」メニューから
　　　　すでに作成済のwebインスタンス（とプライベートIPアドレス）に関連付けます。
#### 　３．DBサーバ構築
　　　　Webサーバがあれば大体遊べるのですが、wordpress立てるためDBサーバも用意します。
　　　　今回はmysqlで構築することにしました。

###### 　　（１）セキュリティグループを作成する

　　　　DBサーバへのアクセスはWebからのみとします。
　　　　EC2のセキュリティグループメニューから「新規セキュリティグループを作成」

　　　　・インバウンドルールを編集する
　　　　・タイプにMYSQL/Auroraを選択
　　　　・ソースを「Webサーバのセキュリティグループ」で指定する

###### 　　（２）RDSを構築する
　　　　aurora-mysql8.0を使います。

　　　　①サブネットグループ
　　　　　アベイラビリティゾーンとサブネットにDBサーバ用に作成したものを
　　　　　指定する。冗長構成を取りたい場合は、もう一つDBサーバ用のサブネットを
　　　　　用意して指定します。

　　　　　こんな感じ。CIDRは10.0.21.0/24としました。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3566513/f8d845d5-d4cd-bb5d-a202-03cfa8cde827.png)

　　　　②パラメータグループ
　　　　パラメータグループファミリーにaurora-mysql8.0を指定
　　　　あとは特にいじらない
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3566513/c3042e8c-4f5b-9b43-ffe8-c4dbc48a3665.png)

　　　　③オプショングループ
　　　　エンジンにmysql　メジャーエンジンバージョンに8.0を指定
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3566513/d65d45ba-ac91-5982-3f2e-d12de5cb0e8b.png)
　　　　ここまでが下準備

　　　　④データベースの作成
　　　　RDSの「データベース」メニューから「データベースの作成」

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3566513/a59adac2-b456-bfd7-27f3-006022e4614a.png)
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3566513/53c3d62c-4ef8-69ec-ad9d-791c9c189820.png)

　　　　テンプレートは開発/テスト
　　　　インスタンス設定は最小
　　　　マルチAZ配置はせず、最小構成で作る

　　　　サブネットグループ、セキュリティグループはこれまで作成したものを指定
　　　　して「データベースの作成」

　　　　無事出来ました。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3566513/81631449-02b2-5654-3392-372be9e75e64.png)
　　　　サブネットグループ、セキュリティグループは間違いないか確認しておくのが吉
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3566513/5324a389-214b-da04-74f6-e77ae48eb0a1.png)
###### 　　（３）WebサーバからRDSへ接続確認
　　　　DBサーバを構築できたので、Webサーバから接続確認をします。
```
　　　　#Webサーバに再度接続して、mysqlをインストールする
　　　　　　sudo yum -y install mysql
　　　　#mysqlコマンドで接続する
　　　　　　mysql -h (endpoint) -u (user) -p 
　　　　#　　endpointはRDSのダッシュボードから確認できます。
　　　　#　　ユーザはrootユーザを使用
　　　　#　　passwordを求められたら、RDS作成時のpasswordを入れる
```
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3566513/30759ce8-ddf9-a7ff-e953-679f8ecb8ac4.png)
　　　　　　ログインできるとこんなターミナル画面になります。
　　　　　　５．へ続きます
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3566513/9416cdc7-19b3-4735-6e99-5e704cb08347.png)
#### 　４．wordpressを立てる
　　　　いよいよ本題に入っていきます。
###### 　　（１）wordpress用にDBを作成
　　　　DBサーバにデータベースを作成していきます。
　　
　　　　・CREATE DATABASEコマンドでDB作成
　　　　　文字コードや照合順序を指定しています。詳しくはググって下さい…
```
　　　　　CREATE DATABASE [odin] DEFAULT CHARACTER SET utf8 COLLATE utf8_general_ci;
```
　　　　　[]がデータベース名
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3566513/00b80b06-1b66-94e1-530b-6ab196dd0ec9.png)
　　　　　Query OKで返ってきたら、一応作成したデータベースを確認する
```
　　　　　SHOW DATABASES;
```
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3566513/0c5265e2-0ebc-6a77-a9b1-7f97c1ee1670.png)
　　　　指定したデータベース名で作成できています。
　　　　次にDB接続ユーザを作成します。
```
　　　　#DB接続ユーザを作成する。
　　　　#odinがユーザ名。IDENTIFIED BYの後が接続時のパスワードになります。
　　　　　CREATE USER 'odin'@'%' IDENTIFIED BY '*********' ;
　　　　#DB接続ユーザへデータベースを触る権限を付与。
　　　　　GRANT ALL ON odin.* TO 'odin'@'%' ;
　　　　#権限設定を反映させる。
　　　　　FLUSH PREVILEGES;
　　　　#ユーザ一覧を表示させて、作成できたことを確認。
　　　　　SELECT user ,host FROM mysql.user;
```
　　　　最後にmysqlへの接続確認。一度mysqlから抜けて、再び接続。
```
　　　　　exit;
　　　　　mysql -h (endpoint) -u (user) -p 
　　　　　#(user)は先程作成したユーザを指定します。
```
　　　　接続できたらOK！

###### 　　（２）wordpressインストール
　　　wordpressインストールにあたり
　　　phpが必要になるので先にインストールしています。
```
　　　#phpインストール
　　　　sudo amazon-linux-extras install -y php8.1
　　　#wordpressインストール
　　　#ホームディレクトリにダウンロードした後で解凍
　　　　cd ~
　　　　wget https://ja.wordpress.org/latest-ja.tar.gz
　　　　tar xzvf latest-ja.tar.gz
　　　　ls
```
　　　　wordpressのディレクトリが出来ました。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3566513/2151e203-23e7-9b3d-6084-380b5d02956e.png)        
　　　　apache配下にwordpressのディレクトリをコピーして
　　　　権限を変更した後に、apache再起動をします。
```
　　　　cd wordpress
　　　　sudo cp -r * /var/www/html
　　　　sudo chown apache:apache /var/www/html/ -R
　　　　sudo systemctl status httpd.service
```
　　　　ここでstatusを確認（activeになっているはず。キャプチャlostしました…）
```
　　　　sudo systemctl restart httpd.service
　　　　sudo systemctl status httpd.service　　　　
```
　　　　再起動して、再びstatusを確認。activeになっていればOK！
　　　　webブラウザからwebサーバにアクセスすると…
　　　　![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3566513/7d61778d-f29c-860b-fff1-1db3d177ae58.png)
　　　　これでwordpressインストールされました。
###### 　　（３）wordpress設定
　　　　あと少し。「さあ、始めましょう！」のボタンから設定を行っていきます。
　　　　サイトのタイトルとメールアドレスは任意のものでOK
　　　　ユーザ名、パスワードは構築したDBのものを使う
　![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3566513/1f718074-a161-842c-6e65-4844825bacaf.png)
　　　　「Wordpressをインストール」を押下すると
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3566513/a33c785a-f228-2211-3687-130cb78c9678.png)
　　　　OK!
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3566513/0d5a5b03-15fb-9714-01e8-ec2d21c6af10.png)
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3566513/beaf57ef-06d3-f858-7d58-1124d95ec864.png)

　　　　これでwordpressを起動させることが出来ました。

## この後どうするの？

　　　　とりあえずwebサービスを提供する環境はできたので、思いつつままに
　　　　やりたいことをやっていきます。

　　　　part3ではWebサーバ側でpythonプログラムを動かしていきます。

　　　　またpart1,2でwordpressを立ち上げるまでの流れが出来ています。
　　　　もしこの記事をみて作りたくなった人は参考にしていただけると
　　　　大変嬉しかったりもします(｀・ω・´)