AWS EC2でwordpressをユーザーデータで立ち上げる


この記事でできること

後半に記載の前準備後に、ユーザーデータを利用して、wordpress AWS EC2でコピペだけでを立ち上げられる

先に結論

これをユーザーデータにコピペするだけ

ECインスタンスのユーザーデータにコピペするbash(バッシュ)


#!/bin/bash

echo "===sudu su -==="
#以下、管理者権限
sudu su -

echo "===yum -y update==="
# インストールされている すべてのソフトの アップデート
yum -y update

echo “===amazon-linux-extras install php7.2 -y===”
# レポジトリからphp7.2 install yes
amazon-linux-extras install php7.2 -y

# wordpress(PHP)に必要なソフトをインストールする
echo “===yum -y install mysql httpd php-mbstring php-xml gd php-gd===”
yum -y install mysql httpd php-mbstring php-xml gd php-gd

echo "===systemctl start httpd.service==="
#アパッチを起動
systemctl start httpd.service

echo "===systemctl enable httpd.service==="
#アパッチ再起動後も実行を有効
systemctl enable httpd.service

# wget(HTTP/(S)でダウンロード) 最新のwordpress tar.gz形式
# オプション-O がないと保存先がひとつ前になる、なぜ(?)
echo “===wget http://ja.wordpress.org/latest-ja.tar.gz -O /usr/local/src/latest-ja.tar.gz===”
wget http://ja.wordpress.org/latest-ja.tar.gz -O /usr/local/src/latest-ja.tar.gz

echo "===cd /usr/local/src/==="
#ディレクトリ移動  ダウンロードは一般にここに入れるらしい
cd /usr/local/src/

#tar.gz形式の最新ワードプレスjpを展開。 z(gzipファイル)をx(展開)v(詳細を表示する)f(ファイルの指定)
echo”===tar zxvf latest-ja.tar.gz===”
tar zxvf latest-ja.tar.gz

#カレントディレクトリにあるwordpressとサブディレクトリすべてを /var/www/html/のしたにコピーする -r(コピー元にディレクトリを指定した場合、再帰的に(サブディレクトリも含めて)コピーする
echo”===cp -r wordpress/* /var/www/html/===”
cp -r wordpress/* /var/www/html/

#/var/www/htmlの権限をapacheの所有者apacheのユーザーにする -R(再帰的に変更)
echo”===chown apache:apach -R /var/www/html===”
chown apache:apache -R /var/www/html

インスタンス起動後数分すると・・・


上記を実行する前には、下記の準備を行っておく必要があります。

前準備

あくまで例です

VPC

10.0.0.0/21

subnet

(サブネット把握しやすいように第3オクテットをNameの末尾の数字とした)

RDSでマルチAZ構成のため異なるAZにpublic,privateサブネットをそれぞれ用意する

ap-northeast-1a Name:PublicSubnet0 10.0.0.0/24
ap-northeast-1a Name:PrivateSubnet2 10.0.2.0/24
ap-northeast-1c Name:PublicSubnet1 10.0.1.0/24
ap-northeast-1c Name:PrivateSubnet3 10.0.3.0/24

インターネットゲートウェイ

VPCにアタッチ

ルートテーブル

サブネット PublicSubnet0 のルートテーブルで 0.0.0.0/0 でインターネットゲートウェイを指定

RDS

サブネットグループを作成

RDSを作成

WordPressにはMySQLが必須。WordPressではMySQLまたはMariaDBが推奨されています。 多くのレンタルサーバーはデータベースにMySQLを採用しています。
ということなので、MySQLを選択

VPCセキュリティグループは、新しく RDS-SG の名称で作成する 
(マスターユーザー名:wordpress、インスタンス安いのに変更、vpc指定、サブネットグループ指定、Azは1a、あとは大体デフォルト)

セキュリティグループ

テストなので今回はHTTPのみ。本番はHTTPS+AWS HTTPS 証明書 ACM+(ELB or Route53)ご利用ください。

Name:Web-SG で以下で作成
インバウンドルールを編集
HTTP TCP 80 0.0.0.0/0 –
HTTP TCP 80 ::/0 –
SSH TCP 22 0.0.0.0/0 –

RDSで作成したセキュリティグループ RDS-SG を以下に変更
インバウンドルールを編集
既存IPアドレス削除し、Web-SGを指定する。

EC2

(やっと出番です)
最初に示したバッシュをユーザーデータにコピペして、セキュリティグループWeb-SG でインスタンスを起動!!!!

はまったこと

sudo su - がないと権限が足りない
wget http://ja.wordpress.org/latest-ja.tar.gz -O /usr/local/src/latest-ja.tar.gz のオプションOがないとcloud-init-output.log でScheme missing.表示で失敗する。

まとめ

sudo su
cat /var/log/cloud-init-output.log
がめっちゃ役立つのよくわかった

【ハンズオン1】基本的なブログサービスを構築する(シングル構成)
AWSCloudTech