AWS

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

証跡等が目的ではなく完全に個人的メモです。 構成図なんでサブネット2つあるのか問題ですが、RDSの設定でサブネットグループを指定する必要があるので架空のサブネットを作っています。 手順 以下の手順で行ったが、コンソール画 […]

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