AWS Linux仮想マシンにLAMP環境構築　（初学者が教材と現実の狭間で奮闘した結果）

# はじめに
AWS SAAの取得を目指して会社からの課題で、AWS上にLAMP環境の構築をすることになりました。早速paizaラーニングでAWSの操作を学習しましたが、現在とのバージョンの違いに苦戦しました。

私自身の備忘録でもありますが、同じようにeラーニングと現実との狭間で苦戦してる初学者に届けとの思いで書きます。
(なるべく動画教材の流れに合わせて書いたつもりです。）


# Linux仮想サーバ　EC2を作成
- リージョンを選択
Linux 2 AMIを選択
（Linux AMIは既にサポート終了）
キーペアを作成してからインスタンス起動

- パブリックIPアドレスを設定
Elastic ipを関連付ける
※割り当て　→　インスタンスへの関連付け　を確実に
（私はいつのまにか複数割り当ててしまって関連付けていないEIPのせいで課金されてしまいました:sob:）
セキュリティグループのインバウンドルールの編集→HTTPを追加
（ソースは0.0.0.0/0にしたのですが…あってる？？💦）

- ターミナルでLinux仮想マシンにリモートで接続
WindowsなのでGit Bash使用
※PoweShellやcmdで試みたがシェルコマンドが違うため、途中で断念
.sshフォルダがあるか`ls -al`で確認。（なければmkdirで作成）
キーペアファイルを.sshに移動
`mv ~/キーペアのpath/キーペア名 ~/.ssh`
キーペアが他の人に使われないように設定
`chmod 400 ~/.ssh/キーペア名`

# Apache、MariaDB、PHPをインストール
:::note warn
この辺りからは流れはeラーニングですが、操作はAMSのチュートリアルに沿って進めました。
（私はPHPのverが古かったり、MySQLだったりして後々やり直す羽目に…）
:::
- 時間の確認
`date`
Wed Jan 11 13:10:04 UTC 2023と表示されたので（UTCはロンドン）
時間を日本時間に設定
`sudo ln -sf /usr/share/zoneinfo/Japan /etc/localtime`

- Amazon Linux Extras リポジトリをインストール
（LAMP MariaDB と Amazon Linux 2 PHP パッケージの最新バージョンを取得）
`sudo amazon-linux-extras install -y lamp-mariadb10.2-php7.2 php7.2`

- ApacheとMariaDBをインストール
`sudo yum install -y httpd mariadb-server`
Apacheを起動
`sudo systemctl start httpd`
自動で起動するように設定
`sudo systemctl enable httpd`
起動しているか確認　→　enabledならok
`sudo systemctl is-enabled httpd`

# 各種設定
- ファイルの許可を設定
ec2-userをapacheグループに追加
`sudo usermod -a -G apache ec2-user`
一旦ログアウトして再度ログイン
apacheグループのメンバーシップを検証　→　ec2-user adm wheel apache systemd-journalならok
`groups`
/var/www とそのコンテンツのグループ所有権を apache グループに変更
`sudo chown -R ec2-user:apache /var/www`
グループの書き込み許可を追加して、これからのサブディレクトにグループ ID を設定するには、/var/www とサブディレクトのディレクトリ許可を変更
`sudo chmod 2775 /var/www && find /var/www -type d -exec sudo chmod 2775 {} \;`
グループ書き込み許可を追加するには、/var/www とサブディレクトリのファイル許可を再帰的に変更
`find /var/www -type f -exec sudo chmod 0664 {} \;`

- サーバのテスト
Apache ドキュメントルートで PHP ファイルを作成
`echo "<?php phpinfo(); ?>" > /var/www/html/phpinfo.php`
ブラウザでphpinfo.phpが表示されればok
phpinfo.phpを削除
`rm /var/www/html/phpinfo.php`

- DBの設定
起動
`sudo systemctl start mariadb`
パスワード設定と不要な機能の削除
`sudo mysql_secure_installation`
パスワードを求められるが初期設定はないのでそのままEnter
Yで新しいパスワードの設定　→　2回入力（入力しても画面に表示されない）
あとは全部Y
（匿名ユーザーアカウントを削除、リモートルートログインを無効、テストデータベースを削除、権限テーブルを再ロードし、変更を保存）
自動で起動するように設定
`sudo systemctl enable mariadb`
文字コードを設定
`sudo vi /etc/my.cnf`
[mysqld]の最後の行に
`character-set-server=utf8mb4`


# phpMyAdminをインストール
必要な依存ファイルをインストール
`sudo yum install php-mbstring php-xml -y`
Apache を再起動
`sudo systemctl restart httpd`
php-fpm を再起動
`sudo systemctl restart php-fpm`
Apache ドキュメントルートに移動してphpMyAdmin リリース用のソースパッケージをダウンロード
`cd /var/www/html`
`wget https://www.phpmyadmin.net/downloads/phpMyAdmin-latest-all-languages.tar.gz`
phpMyAdmin フォルダを作成し、パッケージを展開
`mkdir phpMyAdmin && tar -xvzf phpMyAdmin-latest-all-languages.tar.gz -C` `phpMyAdmin --strip-components 1`
phpMyAdmin-latest-all-languages.tar.gz Tarball を削除
`rm phpMyAdmin-latest-all-languages.tar.gz`
ブラウザでIPアドレスの後に/phpMyAdminをつけて移動　→　ログイン（"root" "設定したPW"）

# おわりに
このあとはeラーニングにそってDBのテーブルを作ったりなんだりで、掲示板アプリを作成しました。
これを書き上げるまでに恐ろしく色んなサイトを見ました。個人的には検索力も身に付いてような…。
ただ巡り巡ってAWSのチュートリアルが一番まとまっていたように感じました。
最後に、もしこの記事を諸先輩方が読んでくださっていて何か間違いに気づきましたらコメントいただけたら幸いです。


https://paiza.jp/works/aws/primer

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