概要
AWS上にカスタムVPCを設定してその上に、WordPressを使用した動的サイトを構築した時のメモ
構成
・カスタムVPC上にネットワーク上にWordPressを稼働させるEC2インスタンスとWordPressが使用するMySQLのRDSインスタンスを配置
・冗長化構成によるロードバランシング
カスタムVPCの構築
AWSコンソール→VPCダッシュボード→VPCの作成
ウィザード形式で簡単に作れるが、勉強のためウィザードを使用せずに進める。
AWSコンソール→VPCダッシュボード→VPC→VPCの作成
①VPCネットワークの作成
名前タグ:test-vpc
IPv4 CIDRブロック設定:10.0.0.0/16
テナンシー:デフォルト
VPC作成後にメニューから、DNSホスト名の編集:「はい」
②サブネットの作成
VPC→サブネット→サブネットの作成
4つのサブネットを作成する
名前タグ VPC AZ IPv4 CIDRブロック
test-public-A / test-vlc/ ap-northeast-1a/ 10.1.11.0/24
test-private-A / test-vpc/ ap-northeast-1a/ 10.1.15.0/24
test-public-C / test-vpc/ ap-northeast-1c/ 10.1.51.0/24
tes-private-C / test-vpc/ ap-northeast-1c/ 10.1.55.0/24
test-public-Aとtest-public-Cは、パブリックIPが自動的に付与されるように設定する。
一覧のメニュー→クリックで自動割当IP設定の変更でIPの自動割当にチェックを入れる。
③インタネットゲートウェイの作成(構成のGWに相当するもの)
VPC→インタネットゲートウェイ→インターネットゲートウェイの作成
名前タグ:test-InternetGateway
作成したインタネットゲートウェイを作成したカスタムVPC(test-vpc)にアタッチする。
④ルートテーブルの作成
パブリックサブネット用にインタネットゲートウェイをルーティングするルートテーブルの作成
VPC->ルートテーブル→ルートテーブルの作成
名前タグ:test-publicRouteTable
VPC:test-vpc
test-publicRouteTableのルートの追加。
ターゲットにはtest-InternetGatewayを指定する。
test-publicRouteTableをtest-public-Aとtest-public-Cのルートテーブルとして設定する。
VPCダッシュボード→サブネット→test-public-Aとtest-public-Cそれぞれのルートテーブルを
test-publicRouteTableにする。
⑥セキュリティグループの設定
wordpress用とDB用のセキュリティグループの設定
VPC→セキュリティグリープ→セキュリティグループの設定
名前タグ:wordpress用(WP-Web-DMZ)とDB用(WP-DB)
グループ名:WP-Web-DMZ, WP-DB
vpc:test-vpc
⑦DBサブネットグループの設定
VPC上でRDBインスタンスを使用する場合、DBサブネットグループの作成が必要。
Relational Database Service → サブネットグループ → DBサブネットグループ
名前:wp-dbsublent
vpc:test-vlc
アバイラビィティーゾーンに追加するAZ(ap-northeat-1aとap-northeat-1c)を追加する。
RDSのインスタンス作成
Relational Database Service → インスタンス → DBインスタンスの起動
以下の項目を選択
エンジンのオプション:MySQL
ユースケース:本番稼動用 - MySQL
DBの詳細設定
DBエンジンバージョン:MySQL 5.6.39
DB インスタンスのクラス:db.t2.micro
マルチAZ配置:別ゾーンにレプリカを作成
詳細設定(設定)
DBインスタンス識別子:wp-mysql
マスターユーザーの名前:root
マスターバスワード:****
パスワードの確認:****
EC2インスタンス起動
WordPressを稼動させるためのEC2インスタンスを生成する。
AMI:Amazon Linux AMI
ネットワーク:vpc-test
サブネット:test-public-A
自動割当パブリックIP:有効
Nameタグ:WP-WebAPP
セキュリティグループ:WP-Web-DMZ
起動詳細は、https://qiita.com/hanasaku/items/b112cdef5e07ecdee4ff
WordPressのインストール
chmod 0600 was-key.pem
ssh -i was.key.pem ec2-user@<パブリックDNS名>
sudo yum install php php-mysql php-gb php-mbstring -y
sudo yum install mysql -y
wget -O /tmp/wordpress-4.9.4-ja.tar.gz https://ja.wordpress.org/wordpress-4.9.4-ja.tar.gz
sudo tar dxf /tmp/wordpress-4.9.4-ja.tar.gz -C /opt
sudo ln -s /opt/wordpress /var/www/html
sudo chown -R apache:apache /opt/wordpress
sudo chkconfig http on
sudo service httpd start
MySQLのインストール
# RDSインスタンスにログイン(ログインはRDSインスタンスのエントリポイントに記載)
mysql -u root -p -h wp-mysql.**********
mysql> CREATE USER 'wordpress-user'@'%' IDENTIFIED BY 'wordpress';
Query OK, 0 rows affected (0.01 sec)
mysql> CREATE DATABASE wordpress;
Query OK, 0 rows affected (0.01 sec)
mysql> GRANT ALL PRIVILEGES ON wordpress.* TO "wordpress-user"@"%";
Query OK, 0 rows affected (0.01 sec)
mysql> FLUSH PRIVILEGES
Query OK, 0 rows affected (0.01 sec)
wordpress セットアップ
http:///wordpress/wp-admin/install.php
ロードバランシングの設定
①AMIの作成
EC2 → インスタンスを右クリック → DBインスタンスの起動
②別のAZでEC2を起動する
EC2 → AMI → AMIを選択 → 作成
AMI:Amazon Linux AMI
ネットワーク:vpc-test
サブネット:test-public-C
自動割当パブリックIP:有効
Nameタグ:WP-WebAPP
セキュリティグループ:WP-Web-DMZ
③ELBの設定
EC2 → ロードバランサー → ロードバランサーの作成
ALBの選択
リスナー
http:80
AZ
vpc:test-vpc
サブネット:test-public-A, test-public-C
タグ
キー:Name
値:WP-ELB
ターゲットグループ
名称:WpTargetNew
④WordPressの設定変更
EC2 → ロードバランサーに表示されるELBのDNSをWordPressに設定する。
⑤スティッキーセッションの設定
冗長化構成したサーバー間でセッション情報を共有できるようにするための設定(スティッキーセッションの設定)を行う。
EC2 → ターゲットグループ
WpTargetを選択
登録解除の遅延:300秒
維持設定:有効
維持設定の時間:30分
⑥セキュリティグループの変更
WordPressのEC2インスタンスはELB経由でのアクセスするように変更したため、ELBからのアクセスを許可するように設定を変更する。
httpのソース:カスタム WP-ELBのグループIDを入力
WP-Web-DMZ