コスト最適化?シングルAZ環境でWordPressを公開する

証跡等が目的ではなく完全に個人的メモです。
構成図なんでサブネット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等コード化を学んだほうが良いですね。そのうちコード化します。

コメント