#はじめに
教材を使ってAWS上でWordPressを作った。教材ではコンソールの画面が一部異なったり、AWSやインフラ基礎に関する内容も多かったため、本稿でWordPressの使い方をまとめて備忘録として載せたい。
※WordPress作成後にスクリーンショットを撮ったので、一部実際の画面と異なる点がありますが、ご了承ください。
#手順
VPC・サブネット・ルーティングの作成
EC2の作成
SSH接続
ファイアウォールの設定
Elastic IPアドレスの割り当て
ドメインの購入
Route53でDNSを設定
プライベートサブネットの作成
RDSの設置
WEBサーバーからRDSを接続
WordPress用のデータベース作成
WordPressのインストール
WordPressの設定
#方法
VPCの作成
VPCを開き、VPCの作成をクリックする。画面を開けたら、以下の設定を行う。
名前タグを適当に設定する。
IPv4 CIDR ブロックでVPC全体のアドレスの範囲を指定。今回は「10.0.0.0/16」にする。
IPv6 CIDR ブロックとテナンシーはそのままで、「作成」を押す。
サブネットの作成
VPCサブネットを開く。 サブネットの作成を押す。まずはパブリックサブネットの作成。
名前タグは見返した時わかりやすい様に「public-subnet-1a」を入れると良い。
VPCでは先ほど作ったVPCを選択する。
アベイラビリティゾーンは「ap-northeast-1a」を選択する。
IPv4 CIDR ブロックで10.0.10.0/24を入力する。
確認できたら「作成」ボタンを押す。
次にプライベートサブネットの作成。
名前タグは見返した時わかりやすい様に「private-subnet-1a」を入れると良い。
VPCでは先ほど作ったVPCを選択する。
アベイラビリティゾーンは「ap-northeast-1a」を選択する。
IPv4 CIDR ブロックで10.0.20.0/24を入力する。
確認できたら「作成」ボタンを押す。
ルーティングの作成。
ルーティングをできる様にするため、インターネットゲートウェイを作る必要がある。
名前タグにインターネットゲートウェイとわかる様に「igw」を名前に含める。(タグ オプションはインターネットゲートウェイ の設定で自動で入力される。)
入力できたら、「インターネットゲートウェイ」の作成を押す。
VPCにインターネットゲートウェイをアタッチする。
該当のインターネットゲートウェイ選択し、「VPCにアタッチ」を選択する。
「使用可能なVPC」に先ほど作成した該当のVPCをアタッチする。
「インターネットゲートウェイのアタッチ」を押す。
ルートテーブルを設定する。
名前タグを入力し、VPCに先ほど作成した該当のVPCを選択する。
該当のルートテーブルを選択し、「サブネットの関連付け」>「サブネットの関連付けの編集」を押す。
サブネットでpublic-subnet-1aのものを選択する。
確認して、「保存」ボタンを押す。
該当のルートテーブルを選択し、「ルート」>「ルートの編集」をクリック。
「ルートの追加」をクリックし、送信先に0.0.0.0/0を入力。ターゲットで「Internet Gateway」を選択し、先ほど作ったものをクリックする。確認して「ルートの保存」を押す。
EC2の作成
EC2>インスタンスの作成を押す。 今回は「Amazon Linux 2 AMI (HVM), SSD Volume Type」を選択する。 t2.microを選択し、「次のステップ:インスタンスの詳細の設定」をクリックする。 「ネットワーク」で先ほど作ったVPCを選択。 「サブネット」で先ほど作ったpublic-1aを選択。 自動割り当てパブリックIPで有効を選択。 下にうつって、ネットワークインターフェイスのプライマリIPで10.0.10.10と設定する。 後はそのままにして「次のステップ:ストレージの追加」を押す 今回はそのままで「次のステップ:タグの追加」を押す。 タグの追加を行う。 「別のタグを追加」ボタンを押し、キーと値を適当に入力する。 「次のステップ:セキュリティグループの設定」を押す。 「新しいセキュリティグループを作成する」を選択し、「セキュリティグループ名」でwordpressを選択する。 「確認と作成」ボタンを押す。 内容を確認し、問題なければ「起動」ボタンを押す。 「新しいキーペアの作成」を選択し、キーペア名を適当に入力する。キーペアのダウンロードをクリックし、キーペアをローカルに保存する。 ダウンロードと保存をし終えたら、インスタンスの作成押す。 EC2>インスタンスに戻って、インスタンスが作成されていることを確認する。SSH接続
Macの場合ターミナルで、下記の通りに接続$ chmod 600 ~/xxx.pem
pemは秘密鍵のことで秘密鍵がある場所を入力
$ ssh -i ~/xxx.pem ec2-user@xx.xx.xx.xx
xx.xx.xx.xxはIPv4パブリックIP(EC2の該当インスタンスで見ることができる)
Are you sure you want to continue connecting (yes/no)?
→yesと入力する
$ sudo yum update -y
$ sudo yum -y install httpd
$ sudo systemctl start httpd.service
$ sudo systemctl enable httpd.service
ファイアウォールの設定
EC2に戻り、該当のインスタンスを選択し、セキュリティグループをクリックする。 セキュリティグループを開いて、「インバウンドを編集」をクリック。(※私のルールはすでに設定済みのため画像ではHTTPもすでに許可されていますが、設定する前はSSHのみ許可されている状態です。) 「ルールを追加」ボタンを押し、タイプを「HTTP」リソースタイプを「任意の場所」に変更する。するとソースが0.0.0.0/0,::/0で自動入力される。入力できたら「ルールを保存」ボタンを押す。 IPv4パブリックIPをURL欄に入力し、Apacheのデフォルトページが出るか確認する。Elastic IPアドレスの割り当て
このままだとEC2インスタンスの起動・停止時にIPアドレスが変わるため、固定アドレスにする。 EC2>Elastic IPをクリックし、「Elastic IPアドレスの割り当て」を押す。 その後「割り当て」ボタンを押したら、アドレスが作成されるので、成功したら閉じる。 アクションを押し、「Elastic IPアドレスの関連付け」ボタンを押す。 「インスタンス」を先ほど作成したものを選択し、プライベートIPアドレスを「10.0.10.10」と入力し、「関連付ける」を押す。関連付けられたら、Elastic IPをURLに入力し、Apacheのデフォルトページが出るか確認する。
ドメインの購入
お名前.comなどでドメインを購入しましょう。 ドメインの購入方法は下記ページなどを参考にしてください。 https://tekito-style.me/columns/domain-onamaeRoute53でDNSを設定
Route53>ホストゾーンをクリック。「ホストゾーンの作成」を押す。 「ドメイン名」を先ほど購入したものを入力。 タイプを「パブリックホストゾーン」を選択する。 選択したら、「作成」をクリックする。 お名前.comでネームサーバーを変更する。(別のサイトでドメインを設定してたら、そこで変更してください。)変更手順は以下のサイトを参照。
https://www.onamae.com/guide/p/67
「その他のネームサーバーを使う」で先ほど作成したドメインに行って、ネームサーバー名を確認する。
Route53>ホストゾーン>該当ドメインをクリック。
右にスクロールするとタイプが出てくるので「NS」の4つの値をお名前.comのネームサーバーに入力する。(最後の.は入れなくて良い。)そしたら「確認」ボタンと「設定」ボタンを押す。
ドメイン反映までしばらく待つ。(長いと1〜2日かかる場合もあるとのこと。)
Aレコードを作成するため、「値」にEC2の該当インスタンスのIPv4パブリックIPを入力。あとはそのままで「作成」を押す。
終わったらドメインの疎通確認を行う。(前述の通り、ネームサーバをお名前.comに変更直後だと反映に時間がかかります。)
dig xxx.com NS +short
xxx.comには自分のドメインを入力
Route53のネームサーバーが表示されている確認。
URLでも設定したドメインでApacheのデフォルトページが出るか確認。
プライベートサブネットの作成
VPC>サブネットの作成をクリック。 名前タグに「private-subnet-1c」を含めて、VPCに先ほど作成したVPC、アベイラビリティーゾーンに「ap-northeast-1c」、IPv4CIDRブロックに10.0.21.0/24RDSの設置
EC2>セキュリティグループ>セキュリティグループの作成をクリック。 セキュリティグループ名と説明を入力。今回は「wordpress-db」とする。VPCは先ほど作ったものにする。 インバウンドルールで「MYSQL/Aurora」、ソースはカスタム、虫眼鏡マークで先ほど作ったセキュリティグループのものを選ぶ。 RDS>サブネットグループを選択する。「DB サブネットグループを作成」ボタンをクリックする。 名前、説明を入力する。今回は「wordpress-subnet-group」とする。VPCは先ほど作ったものを選ぶ。 プライベートサブネットを選ぶため、アベイライビリティーゾーンを「ap-northeast-1a」、サブネットをCIDRブロック「10.0.20.0/24」、アベイラビリティゾーンを「ap-northeast-1c」サブネットをCIDRブロック「10.0.21.0/24」で選択する。こちらで「作成」ボタンを押す。 RDS>パラメータグループにいき、「パラメータグループの作成」をクリック。今回はパラメータグループファミリーに「mysql8.0」、グループ名に「wordpress-mysql80」、説明に「wordpress-mysql80」を入力する。入力できたら「作成」ボタンを押す。 RDS>オプショングループを選択。「オプショングループの作成」ボタンを押す。名前と説明をwordpress-mysql80で、エンジンをmysql、メジャーエンジンバージョンを8.0にし、「作成」ボタンを押す。WEBサーバーからRDSを接続
RDSにいき、データベースの作成を押す。 テンプレートを費用を抑えるため今回は「開発/テスト」とする。(用途によって分ける。) DBインスタンス識別子と認証情報の設定で入力する。(マスターユーザー名とマスターパスワードは忘れないようにメモしておく。) DBインスタンスサイズを用途に応じて選択する。(db.t2.microだと安い。) 今回は負荷があまりかかることがないと想定し、「ストレージの自動スケーリングを有効にする」のチェックを外す。 接続ではVPCとサブネットグループを先ほど作ったものを選択する。 既存のVPCセキュリティグループを作成したものを今回作成したものを選択肢、アベイラビリティゾーンを「ap-northeast-1a」とする。 追加設定>データベースの選択肢でDBパラメータグループとオプショングループで今回作成したものを選択する。 モニタリングで拡張モニタリングの有効化のチェックを外し、メンテナンスをマイナーバージョン自動アップグレードの有効化を選択する。メンテナンスウインドウで時間を指定する。 概算月間コストを確認し、「データベースの作成」ボタンを押す。ターミナルでの操作を行う。
$ ssh -i ~/xxx.pem ec2-user@xx.xx.xx.xx
$sudo yum -y install mysql
上記でMySQLをインストールする。
MySQLに入るためエンドポイントを確認する。
mysql -h エンドポイント -u マスターユーザー名 -p
その後パスワードを入力する。
WordPress用のデータベースを作成
MySQLに入れたら下記を入力する。$CREATE DATABASE データベース名 DEFAULT CHARACTER SET utf8 COLLATE utf8_general_ci
$CREATE USER 'ユーザー名'@'%' IDENTIFIED BY 'password';
$GRANT ALL ON データベース名.* TO 'ユーザー名'@'%';
$FLUSH PRIVILEGES;
$exit;
WordPressのインストール
exit;でターミナルに戻る。$sudo amazon-linux-extras install -y php7.2
$sudo yum install -y php php-mbstring
$cd ~
$wget https://ja.wordpress.org/latest-ja.tar.gz
$tar xzvf latest-ja.tar.gz
$cd wordpress/
$sudo cp -r * /var/www/html/
$sudo chown apache:apache /var/www/html -R
$sudo systemctl restart httpd.service
WordPressの設定
URL欄にドメインを入力する。 WordPressの画面に進み、始めるボタンをクリックし、データベース名、ユーザー名、パスワード、データベースのホスト名(エンドポイント)を入力し、送信ボタンを押す。 接続完了したらインストール実行で、サイトのタイル、ユーザー名、パスワード、メールアドレス、検索エンジンでの表示を適宜入力する。できたら「WordPressをインストール」ボタンをクリックする。 これでログインをし、管理画面に入れるようになる。#まとめ
レンタルサーバーだとボタンをポチポチしたらできたが、AWSだと結構手順を踏む必要があると思った。流れを意識しつつ実装しましょう、
教材
AWS:ゼロから実践するAmazon Web Services。手を動かしながらインフラの基礎を習得