6
3

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 3 years have passed since last update.

【AWS】Amazon AuroraでもWordPressは動くの?

Last updated at Posted at 2021-01-31

##この記事の目的

  • MySQLやPostgreSQLと互換性のあるAmazon AuroraでもWordPressが動作するか検証するため。

  • 執筆者自身がAWS初心者のため、自身の勉強も兼ねて。

##先行者
WordPressをAmazon Auroraで動かしてみる

2015年の記事であり、AuroraがまだTokyoリージョンで使えなかった時の記事であるため、本記事執筆の意義は十分にあると思います。

##WordPressの推奨環境

PHP バージョン 7.4 以上。
MySQL バージョン 5.6 以上、または MariaDB バージョン 10.1 以上。
HTTPS 対応

##忙しい人のために
「こんな長い記事を読んでられないよ」という人のために結論から言います。
結論はAmazon AuroraでもWordPressは動きます。以上。

##構成図
本記事で構成するシステムはこんな感じです。
aws_scheme..png

##Amazon Auroraを使ってWordPressを立ち上げてみよう
やってみよう。

###VPCの作成
####VPC
VPCのコンソールから右上のVPCの作成をクリックします。
AWS_VPC1.png
名前タグを「My_VPC_1」、IPv4 CIDRブロックを「10.0.0.0/21」に設定します。
右下のVPCを作成をクリックするとVPCが作成されます。
AWS_VPC2.png
####サブネット
次にパブリックサブネットを作成します。
サブネットの項目に移り、右上のサブネットを作成をクリックします。
AWS_VPC3.png
VPC IDを先ほど作成した「My_VPC_1」に、サブネット名を「PublicSubnet1」、アベイラビリティゾーンを「アジアパシフィック(東京)/ap-northeast-1a」、IPv4 CIDRブロックを「10.0.0.0/24」に設定します。
右下のサブネットを作成をクリックするとパブリックサブネットが作成されます。
AWS_VPC4.png
同様の手順でサブネット合計4つ作成します。
ちなみに新しいサブネットを追加で同じVPC内に複数のサブネットを同時に作成することができます。

VPC ID サブネット名 アベイラビリティゾーン IPv4 CIDRブロック
My_VPC_1 PublicSubnet1 アジアパシフィック(東京)/ap-northeast-1a 10.0.0.0/24
My_VPC_1 PublicSubnet2 アジアパシフィック(東京)/ap-northeast-1c 10.0.1.0/24
My_VPC_1 PrivateSubnet1 アジアパシフィック(東京)/ap-northeast-1a 10.0.2.0/24
My_VPC_1 PrivateSubnet2 アジアパシフィック(東京)/ap-northeast-1c 10.0.3.0/24

注 RDSを起動するために、複数のアベイラビリティゾーンにまたがってサブネットを作っておかなければならないので、このようにサブネットを作成しています。 

###EC2の作成
####インスタンス
次にEC2インスタンスを作成していきます。
EC2のコンソールのインスタンスの項目に移ります。
右上のインスタンスを起動をクリックします。
AWS_EC2_1.png
AMIはAmazon Linux2を選択します。
AWS_EC2_2.png
インスタンスタイプはt2.microを選択して、次のステップをクリックします。
AWS_EC2_3.png
ネットワークは「My_VPC_1」、サブネットは「PublicSubnet1」、自動割り当てパブリックIPは「有効」に設定し、次のステップをクリックします。
AWS_EC2_4.png
ストレージはデフォルトのまま次のステップに移ります。
AWS_EC2_5.png
タグの設定は、キーを「Name」、値を「TestServer1」にします。次のステップに移ります。
AWS_EC2_6.png
新しいセキュリティグループを作成します。セキュリティグループ名は「Web-SG-1」、説明も同じです。
SSHのみだとWebサーバが公開できないので、HTTPを追加します。
確認と作成をクリックします。
AWS_EC2_7.png
確認画面です。問題がなければ起動をクリックします。
AWS_EC2_8.png
キーペアを作成します。ここでは新しいキーペアを作成し、キーペア名を「Qiita_test_keypair」とします。
キーペアをダウンロードし、PCの任意の場所に保存します。
インスタンスの作成をクリックします。これでEC2インスタンスの完成です。
AWS_EC2_9.png

###インターネットゲートウェイの作成
このままだとEC2インスタンスがインターネットに接続できないのでVPCにインターネットゲートウェイを追加します。
VPCのコンソールに移動し、インターネットゲートウェイの項目を開きます。
右上のインターネットゲートウェイの作成をクリックします。
AWS_IGW1.png
名前タグを「My-IGW」とします。
インターネットゲートウェイの作成をクリックします。
AWS_IGW2.png
このままだとまだVPCに接続されていないので、右上のVPCへアタッチをクリックします。
AWS_IGW3.png
使用可能なVPCに、作成した「My_VPC_1」を選択し、インターネットゲートウェイのアタッチをクリックします。
AWS_IGW4.png
まだVPCがインターネットに向けられていないので、My_VPC_1のルートテーブルを編集します。
ルートテーブルの項目を開きます。My_VPC_1を選択し、ルートの編集をクリックします。
AWS_IGW5.png
ルートを追加します。送信先を「0.0.0.0/0」とし、ターゲットを先ほど作成した「My-IGW」を選択します。
ルートの保存クリックします。
AWS_IGW6(1).png
これでEC2インスタンスがインターネットにつながりました。SSH接続ができるようになります。

###RDSの作成
####サブネットグループ
RDSのコンソールに移動し、サブネットグループの項目を開きます。
右上のDBサブネットグループの追加をクリックします。
AWS_RDS1.png
名前、説明を「My_Subnet_Grp」とし、VPCを「My_VPC_1」を選択します。
アベイラビリティゾーンを「ap-northeast-1a」「ap-northeast-1c」とし、サブネットは「10.0.3.0/24」「10.0.4.0/24」を選択します。
作成をクリックするとサブネットグループが作成されます。
AWS_RDS2.png

####データベース
データベースを作成します。データベースの項目を開きます。
右上のデータベースの作成をクリックします。
AWS_RDS3.png
「標準作成」を選択します。
Auroraで検証したいので「MySQL」ではなく「Amazon Aurora」を選択します。
AWS_RDS4.png
WordPressの推奨環境がMySQL バージョン 5.6 以上なのでこの条件に合うようにバージョンを選択します。
テンプレートは「開発/テスト」を選択します。
マスターユーザー名を「wordpress」とし、マスターパスワードを入力します。
AWS_RDS5.png
DBインスタンスサイズは「バースト可能クラス」、「db.t3.small」を選択します。
Auroraレプリカは作成しません。
VPCは「My_VOC_1」、サブネットグループは「my_subnet_grp」、パブリックアクセス可能は「なし」を選択します。
AWS_RDS6.png
VPCセキュリティグループは「新規作成」を選択し、セキュリティグループ名は「My-RDS-SG1」とし、アベイラビリティゾーンは「ap-northeast-1a」を選択します。
データベース名は「wordpress」と入力します。
AWS_RDS7.png
RDSの設定は以上で問題ないので、下へスクロールして、データベースの作成をクリックします。

####データベースのセキュリティグループの編集
デフォルトの設定のままだとRDSのセキュリティ面に問題があるので、DBに侵入できるのはWebサーバのみに設定します。
VPCのコンソールに移動し、セキュリティグループの項目を開きます。
My-RDS-SG1を選択し、インバウンドルールを編集をクリックします。
AWS_RDS8.png
ソースの部分を「Web-SG-1」にして、ルールを保存をクリックします。
AWS_RDS9.png

###WordPressのインストール
ではWordPressをEC2インスタンスにインストールしていきます。
執筆者の環境はWindowsなので、TeraTermやRLoginなどのターミナルソフトを使用してもよいのですが、今回はAWSの機能を使ってブラウザ上でログインしていきます。
EC2インスタンスを選択して、上方の接続をクリックします。
AWS_WP1.png
接続を押せば接続します。この場合、インスタンスを作成した際に作ったキーペアを用いて公開鍵認証を行うことはありません。
AWS_WP2.png
まずはphpをインストールしてみましょう。

[ec2-user@ip-10-0-0-197 ~]$ sudo yum -y install php

試しにphpのバージョンを確認してみましょう。

[ec2-user@ip-10-0-0-197 ~]$ php -v
PHP 5.4.16 (cli) (built: Oct 31 2019 18:34:05) 
Copyright (c) 1997-2013 The PHP Group
Zend Engine v2.4.0, Copyright (c) 1998-2013 Zend Technologies

WordPressの要件がPHPバージョン7.4以上なので、インストールされたものは要件を満たしていないですね。
なのでこうします。

[ec2-user@ip-10-0-0-197 ~]$ sudo amazon-linux-extras install php7.4 -y

amazon-linux-extrasとはAmazon Linux2で使えるyumコマンドみたいなものです。
詳しくはこちら

あとはMySQL、Apache、その他必要なモジュールをインストールします。
php-mbstringは日本語などのマルチバイト文字列を用いる際に必要なモジュール、php-xmlはXMLを扱うのに必要なモジュール、gdはイメージを動的に操作するライブラリ、php-gdはそのGDモジュールです。

[ec2-user@ip-10-0-0-197 ~]$ sudo yum -y install mysql httpd php-mbstring php-xml gd php-gd

Apacheを起動して、自動起動設定をオンにします。

[ec2-user@ip-10-0-0-197 ~]$ sudo systemctl start httpd.service
[ec2-user@ip-10-0-0-197 ~]$ sudo systemctl enable httpd.service

WordPressをインストールしていきます。
WordPressのtarballファイルをダウンロードします。
WordPressの公式ダウンロードページはこちら

[ec2-user@ip-10-0-0-197 ~]$ wget https://ja.wordpress.org/latest-ja.tar.gz 

tarballファイルを展開します。

[ec2-user@ip-10-0-0-197 ~]$ tar xvzf latest-ja.tar.gz 

展開されたwordpressディレクトリがカレントディレクトリに存在しているので、wordpressディレクトリの中身をApacheのドキュメントルート(/var/www/html)にコピーします1

[ec2-user@ip-10-0-0-197 ~]$ sudo cp -r wordpress/* /var/www/html
[ec2-user@ip-10-0-0-197 ~]$ sudo chown -R apache:apache /var/www/html

###WordPressの初期設定
EC2インスタンスのパブリックIPアドレスにブラウザからアクセスします。
すると以下のページが表示されます。
さあ、始めましょう!をクリックします。
AWS_WP3.png
データベース名を「wordpress」、ユーザー名を「wordpress」、パスワードはRDSを作成した際に設定したパスワードを入力します。
データベースのホストは次の画像を参照。
送信をクリックします。
AWS_WP5.png
RDSの作成したデータベースを開きます。database-1-instance-1のエンドポイントをデータベースのホストに入力します。
AWS_WP4.png
インストール実行します。
AWS_WP6.png
必要情報を入力してWordPressをインストールします。
AWS_WP7.png
ログインします。
AWS_WP8.png
AWS_WP9.png
ログインできました。
AWS_WP10.png
動作確認です。適当に記事を投稿して終了。
AWS_WP11.png

##おわりに
動きましたね。
Amazon Auroraは標準的なMySQLと比べて5倍のスループットの性能をがあるので、Amazon Auroraを選ばない理由はないですね。
(追記:料金を度外視すればの話ですが。)

Auroraについてのより詳しい記事
https://dev.classmethod.jp/articles/developers-io-2019-in-osaka-aurora-or-rds/


この記事はAWS初学者を導く体系的な動画学習サービス「AWS CloudTech」の課題カリキュラムで作成しました。
https://aws-cloud-tech.com

  1. 執筆者自身はwordpressディレクトリごとコピーしたせいで「index.phpが見つからないヨ」というエラーが出て小一時間潰れたので注意してください。
    /var/www/html以下の階層はApache自身のapacheユーザが操作するので、デフォルトの所有ユーザ(rootユーザ)のままでは操作できません。したがって、所有ユーザ、グループをapacheに変更する必要があります。

6
3
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
6
3

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?