証跡等が目的ではなく完全に個人的メモです。
構成図なんでサブネット2つあるのか問題ですが、RDSの設定でサブネットグループを指定する必要があるので架空のサブネットを作っています。
手順
以下の手順で行ったが、コンソール画面がごっそり変わっていましたので、しっかり項目を見ていかないといけません。
一旦コンソール画面を操作し内容を把握した方がいいですが、コード化しないと延々コンソールの変更に振り回される気がしましたのでIaCの必要性を感じました。
VPC作成
my-vpc1
10.0.0.0/21
サブネット作成
pub1a-my-subnet1
10.0.0.0/24
pri1a-my-subnet1
10.0.2.0/24
EC2作成
my-vpc1
pub1a-my-subnet1
パブリックIP振り分け
SecurityGroup作成
web-sg1
InternetGateWay
my-internetgw1
my-vpc1にアタッチ
ルートテーブル
パブリックサブネット側のインバウンドはSSH用のポート22とHTTP用のポート80を0.0.0.0/0向けに解放します。セキュリティガバガバですがすぐ消すのでセーフということで。
プライベートサブネット側のルートテーブルが必要です。
pri-routetable1
関連付けるVPC
my-vpc1
これをプライベート側サブネットに関連付けることでプライベートサブネットとなります。
pri1a-my-subnet1
RDSはサブネットグループが必要
【大事】サブネットグループを作るにはサブネットが2つ要ります。
このためとりあえずシングルAZと名乗りつつマルチAZ構成をつくる必要があります。
10.0.1.0/24
pub1c-my-subnet2
10.0.3.0/24
pri1c-my-subnet2
※これらは(どうせ消すので)ルートテーブルの指定等を行っていない架空サブネットです
subnetgroup
my-subnet-g
AZ 1a、1cを追加し
プライベートサブネットの2つをそれぞれ追加
データベースの作成
MySQL/Aurora
開発/テストを通常は選択、今回は無料利用枠を選択…無料利用枠とした
セキュリティグループ
rds-sg1
【ハマりポイント】インバウンドをweb-sg1に変更する際にエラーが出ることがあります。
その場合rds-sg1を別名で作り直してアタッチするなどで回避可能です。
各種コマンド
以下はApacheやPHP、WordPressをインストールしたりするコマンドです。
EC2に直接接続して実施したところ、コマンドコピペがうまくいかなかったのでやはりコンソールでやったほうが便利かもしれません。
# 作業するのにルート権限を使用
sudo su -
# AmazonLinuxのアップデート
yum -y update
# PHPインストール
amazon-linux-extras install php7.2 -y
# 各種必要なものをインストール
yum -y install mysql httpd php-mbstring php-xml gd php-gd
# apacheを再起動後も継続起動するようにenableし、startする
systemctl enable httpd.service
systemctl start httpd.service
# 念のためステータスがactive(running)となってることを確認
syttemctl status httpd.service
# WordPressの最新版をカレントディレクトリにダウンロードする
wget http://ja.wordpress.org/latest-ja.tar.gz ~/
# 解凍
tar zxvf ~/latest-ja.tar.gz
# カレントディレクトリから必要な場所にコピーする
cp -r ~/wordpress/* /var/www/html/
# オーナーの変更
chown apache:apache -R /var/www/html
まとめ
コスト最適化といいつつこの構成でもRDSがそこそこのお値段してしまうため月額4000円はかかってしまう問題。
規模によってはVPSかレンタルサーバーの方がいい気がしています。
WordPressの動作確認後コストかからないよう環境全削除しましたが、たいへん面倒くさいのでCloudFormation等コード化を学んだほうが良いですね。そのうちコード化します。
コメント