Amazon Linux2でのLAMPのインストール

内容
・趣旨目標
・使用できるサービス
・参考サイト
・VPC作成
・EC2の作成
・LAMP サーバーを準備
・データベースサーバーをセキュリティで保護
・リソースの削除


## 趣旨目標
手を動かして学ぶ！手動でサーバーを準備！

## 使用できるサービス
VPC,EC2
※気になった箇所だけ記載して、大分端折って記載しています。

## 参考サイト（これに従って作成します。）：

https://docs.aws.amazon.com/ja_jp/AWSEC2/latest/UserGuide/ec2-lamp-amazon-linux-2.html

## VPC作成
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3518951/8425bc15-8335-b0d3-0074-593241615886.png)

## EC2の作成
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3518951/34b1dd26-353f-f0f0-39d7-cb32b71259b4.png)
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3518951/4869b05a-8424-6704-4a2c-a9d57667d5cc.png)


## LAMP サーバーを準備
・web経由でインスタンスに接続
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3518951/1e53b727-4cc2-bd00-f8e5-2e1ef40af11b.png)

・すべてのソフトウェアパッケージが最新の状態であることを確認
```
sudo yum update -y
```
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3518951/3db43047-c047-b4a4-8cdf-3277a80ce2d9.png)

・MariaDB パッケージの最新バージョンを取得
```
sudo amazon-linux-extras install mariadb10.5
```
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3518951/1fc2976e-af79-8e75-edfb-dc9174930c25.png)
色々表示されすぎてわかりにくい(;'∀')

・Amazon Linux 2 向け PHP パッケージの最新バージョンを取得
```
sudo amazon-linux-extras install php8.2
```
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3518951/3f75c099-1168-c5d2-d8da-9eba49594bea.png)

・Apache ウェブサーバー、MariaDB、および PHP ソフトウェアパッケージをインストール
```
sudo yum install -y httpd
```
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3518951/1b58280a-0fff-f1af-7bd3-b7d8fca4affd.png)

・Apache ウェブサーバーを起動
```
sudo systemctl start httpd
```

・systemctl コマンドを使用して、システムがブートするたびに Apache ウェブサーバーが起動するように設定
```
sudo systemctl enable httpd
```
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3518951/2476dc41-f390-6fd7-de6d-7b98bb5f1210.png)

・httpd が有効であることの確認
```
sudo systemctl is-enabled httpd
```
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3518951/1ccdd575-40c6-fa73-1671-62953428e119.png)

・ウェブサーバーをテスト
コンソールからインスタンスのパブリックDNSアドレスをブラウザへ貼り付け。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3518951/092a0fdb-4613-526a-a4cb-7c0fb0417049.png)

・ec2-user を apache グループに追加し、ファイルの許可を設定
```
sudo usermod -a -G apache ec2-user
```

・一度ログアウト
```
exit
```

・apache グループのメンバーシップを検証
```
groups
```
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3518951/9f3553f5-1d70-a0d8-f504-55b73ebe252c.png)

・/var/www（Apache HTTPサーバーがウェブコンテンツをホストするデフォルトのルートディレクトリ）とそのコンテンツのグループ所有権をapache グループに変更
```
sudo chown -R ec2-user:apache /var/www
```

・グループとユーザーに読み取り、書き込みについて権限を付与
```
sudo chmod 2775 /var/www && find /var/www -type d -exec sudo chmod 2775 {} \;
```

・再帰的（ディレクトリ内を検索して親子関係なく全てのディレクトリやファイルに対して）に権限付与
```
find /var/www -type f -exec sudo chmod 0664 {} \;
```
これらの権限付与によって権限を持ったユーザーが、静的ウェブサイトや PHP アプリケーションなどのコンテンツを追加できる。
※ここでSSL/TLS の設定について参考サイトを貼ります。
参考：
https://docs.aws.amazon.com/ja_jp/AWSEC2/latest/UserGuide/SSL-on-amazon-linux-2.html


・LAMP サーバーをテスト
PHPファイルを作成。
ユーザーで実行。
```
echo "<?php phpinfo(); ?>" > /var/www/html/phpinfo.php
```
これでエラーが出なければ適切にグループ設定できている。
また、インスタンスのパブリック DNS アドレスにスラッシュとファイル名を追加し、ブラウザで検索すると次のPHPのページが表示される。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3518951/b80501bd-0e97-5713-6696-b8ad6e6d9f5f.png)
webサーバーとして機能していますね。

・phpinfo.php ファイルを削除
```
rm /var/www/html/phpinfo.php
```

## データベースサーバーをセキュリティで保護
本番環境でDBを使う場合の初期設定としてaws公式サイトに従って記録！

・MariaDB サーバーを起動
```
sudo systemctl start mariadb
```

・mysql_secure_installation を実行（これが主体）
```
sudo mysql_secure_installation
```
１　Remove anonymous users?匿名ユーザーの削除
２　Disallow root login remotely?リモート接続禁止
３　Remove test database and access to it?テストデータベースを削除
４　Reload privilege tables now?権限テーブルを再ロードし、変更を保存

こんな感じ。続けざまに質問が飛んできます。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3518951/2c27ee45-af67-8914-dbbb-253d68de7fdf.png)
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3518951/1a7c56da-0abc-0e3d-37eb-504410175067.png)
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3518951/de7fa27c-552d-16d8-e296-59509aa8fca8.png)
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3518951/f73b5e81-b40a-6407-0177-dad6ea7dd227.png)

（参考１）MariaDB サーバーをすぐに使用する予定がなく、一時的に停止する場合
```
sudo systemctl stop mariadb
```
（参考２）ブート時に毎回 MariaDB サーバーを起動させる場合
```
sudo systemctl enable mariadb
```
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3518951/b60560bf-3a65-9be2-fbb7-df56b9a61e4b.png)
完了！！！


## リソースの削除
学習が完了したので、リソースを削除していきます。

・EC2の削除
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3518951/769bebf6-f7d1-ca50-219f-51831ad4dfff.png)
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3518951/bccff595-e391-917e-8661-3c6ba953c1ab.png)

・VPCの削除
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3518951/dbc41420-356a-c1b5-bb0d-cddf314c89e7.png)
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3518951/cf7e73bd-28e3-384c-00c3-1c65101c589c.png)

さいごに
勉強になりました！また時間を作ってハンズオンやっていきます。