AWSでEC2(nginx)+RDS(MySQL8)+PHP7.3なLAMP環境を構築して、phpMyAdmin導入までやってみた。セキュリティグループ(ファイアウォール)の設定が分かりづらい…。

AWSでEC2(nginx)+RDS(MySQL8)+PHP7.3なLAMP環境を構築して、phpMyAdmin導入までやってみた。セキュリティグループ(ファイアウォール)の設定が分かりづらい…。

前回はEC2サーバにMySQLをインストールしちゃったので、今回はAWSっぽい感じでRDS(MySQL)を使ってみよう。

ec2にLAMP環境(apache2.4, MySQL5.7 php7.2)とlaravel5.8を入れてみた

DBは、Amazon Aurora(MySQL互換性)を使おうと思ったらMySQL8系には対応していないのか…。
MySQL5.7までだと、laravel6系を使うのは不安だからやめておこう。

MySQL8.0.16(最新) & 無料利用枠を選択
Amazon RDS 無料利用枠は、12 か月間利用できます。無料利用枠では毎月 1 日から末日まで、下記の Amazon RDS リソースを無料で使用できます。
Amazon RDS による db.t2.micro インスタンスのシングル AZ における 750 時間使用。
20 GB の汎用ストレージ (SSD)。
自動化されたバックアップ用の 20 GB のストレージ、およびユーザー起動による任意の DB スナップショット。
AWS 無料利用枠の詳細はこちらをご参照ください。
無料利用枠の有効期限が切れた場合、またはアプリケーション使用量が無料利用枠を超えた場合は、Amazon RDS の料金ページで説明されているように、標準の従量課金制でお支払いいただきます。

DBインスタンス識別子はS3と違って、AWSアカウント毎でユニークだから楽でいい。
database-1-mysql8016
パスワードの自動生成
db.t2.micro
20GiB SSD
ストレージの自動スケーリング:有効
最大ストレージ100GiB

エントリーポイントURLが表示されるのでメモしておく

とりあえず、これでMySQLが使えるようになった~。
phpMyAdminを使いたいのでEC2インスタンスを作ろう。

無料利用枠
Amazon Linux 2 AMI (HVM), SSD Volume Type

SSH(ec2-user)でログインして

nginxのドキュメントルートはroot権限になっているので、このままだとec2-userがファイルアップロードが出来ない…。
/usr/share/nginx/html

これでアップロードも出来るようにあったので、nginxでPHPが動くようにする。
例によってyumじゃなくて、amazon-linux-extrasを使う

phpinfo()なんかのPHPファイルを作って、ブラウザからアクセスできるかチェックしてみる。

mysqlクライアントをインストールしておく
https://joppot.info/2017/04/28/3877

う~ん、うまく行かないな~。しょうがない。素直にmysql本体をインストールしよう。

セキュリティグループ(ファイアウォール)の設定をしないと駄目っぽい。

RDSインスタンス作成時に、セキュリティグループ(ファイアウォール)を特に指定しなかったらデフォルト・セキュリティグループになっていた。
デフォルト・セキュリティグループの設定を見てみると、インバウンドもアウトバウンドも「すべてのトラフィック」になっているから何も制限してないんじゃ・・・?と思ったけど
インバウンド = 外部から内部へのアクセス。デフォルトで全てNG
アウトバウンド = 内部から外部のアクセス。デフォルトで全てOK

なので、インバウンドが「すべてのトラフィック」だと、全く外部からアクセス出来ないって事か…。
デフォルト・セキュリティグループを修正するのは怖いので、RDSのセキュリティグループをEC2のに変更しよう。(RDSの右上の変更ボタンから修正。反映に数分かかった)

これでサーバ&ネットワークの設定は完了。
最新版のphpMyAdminをダウンロードする

phpMyAdminの接続DBを設定ファイルで指定する。
直下にconfig.sample.inc.phpがあるので、コピーしてconfig.inc.phpにして
$cfg[‘Servers’][$i][‘host’] = ‘localhost’;
$cfg[‘Servers’][$i][‘host’] = ‘RDSのエントリーポイントのURL’;

これで、EC2上のphpMyAdminからRDS(MySQL)を操作出来るようになった~。
セキュリティグループ(ファイアウォール)の設定が分かりづらい…。
RDSって言っても、外部からみると普通のMySQLサーバと全く変わらないのな。