はじめに
AWS SAAの取得を目指して会社からの課題で、AWS上にLAMP環境の構築をすることになりました。早速paizaラーニングでAWSの操作を学習しましたが、現在とのバージョンの違いに苦戦しました。
私自身の備忘録でもありますが、同じようにeラーニングと現実との狭間で苦戦してる初学者に届けとの思いで書きます。
(なるべく動画教材の流れに合わせて書いたつもりです。)
Linux仮想サーバ EC2を作成
-
リージョンを選択
Linux 2 AMIを選択
(Linux AMIは既にサポート終了)
キーペアを作成してからインスタンス起動 -
パブリックIPアドレスを設定
Elastic ipを関連付ける
※割り当て → インスタンスへの関連付け を確実に
(私はいつのまにか複数割り当ててしまって関連付けていないEIPのせいで課金されてしまいました)
セキュリティグループのインバウンドルールの編集→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をインストール
この辺りからは流れは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のチュートリアルが一番まとまっていたように感じました。
最後に、もしこの記事を諸先輩方が読んでくださっていて何か間違いに気づきましたらコメントいただけたら幸いです。