【AWS】Amazon AuroraでもWordPressは動くの?
この記事の目的
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は動きます。以上。
構成図
Amazon Auroraを使ってWordPressを立ち上げてみよう
やってみよう。
VPCの作成
VPC
VPCのコンソールから右上のVPCの作成
をクリックします。
名前タグを「My_VPC_1」、IPv4 CIDRブロックを「10.0.0.0/21」に設定します。
右下のVPCを作成
をクリックするとVPCが作成されます。
サブネット
次にパブリックサブネットを作成します。
サブネットの項目に移り、右上のサブネットを作成
をクリックします。
VPC IDを先ほど作成した「My_VPC_1」に、サブネット名を「PublicSubnet1」、アベイラビリティゾーンを「アジアパシフィック(東京)/ap-northeast-1a」、IPv4 CIDRブロックを「10.0.0.0/24」に設定します。
右下のサブネットを作成
をクリックするとパブリックサブネットが作成されます。
同様の手順でサブネット合計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のコンソールのインスタンスの項目に移ります。
右上のインスタンスを起動
をクリックします。
AMIはAmazon Linux2を選択します。
インスタンスタイプはt2.microを選択して、次のステップ
をクリックします。
ネットワークは「My_VPC_1」、サブネットは「PublicSubnet1」、自動割り当てパブリックIPは「有効」に設定し、次のステップ
をクリックします。
ストレージはデフォルトのまま次のステップ
に移ります。
タグの設定は、キーを「Name」、値を「TestServer1」にします。次のステップ
に移ります。
新しいセキュリティグループを作成します。セキュリティグループ名は「Web-SG-1」、説明も同じです。
SSHのみだとWebサーバが公開できないので、HTTPを追加します。
確認と作成
をクリックします。
確認画面です。問題がなければ起動
をクリックします。
キーペアを作成します。ここでは新しいキーペアを作成し、キーペア名を「Qiita_test_keypair」とします。
キーペアをダウンロードし、PCの任意の場所に保存します。
インスタンスの作成
をクリックします。これでEC2インスタンスの完成です。
インターネットゲートウェイの作成
このままだとEC2インスタンスがインターネットに接続できないのでVPCにインターネットゲートウェイを追加します。
VPCのコンソールに移動し、インターネットゲートウェイの項目を開きます。
右上のインターネットゲートウェイの作成
をクリックします。
名前タグを「My-IGW」とします。
インターネットゲートウェイの作成
をクリックします。
このままだとまだVPCに接続されていないので、右上のVPCへアタッチ
をクリックします。
使用可能なVPCに、作成した「My_VPC_1」を選択し、インターネットゲートウェイのアタッチ
をクリックします。
まだVPCがインターネットに向けられていないので、My_VPC_1のルートテーブルを編集します。
ルートテーブルの項目を開きます。My_VPC_1を選択し、ルートの編集
をクリックします。
ルートを追加します。送信先を「0.0.0.0/0」とし、ターゲットを先ほど作成した「My-IGW」を選択します。
ルートの保存
クリックします。
これでEC2インスタンスがインターネットにつながりました。SSH接続ができるようになります。
RDSの作成
サブネットグループ
RDSのコンソールに移動し、サブネットグループの項目を開きます。
右上のDBサブネットグループの追加
をクリックします。
名前、説明を「My_Subnet_Grp」とし、VPCを「My_VPC_1」を選択します。
アベイラビリティゾーンを「ap-northeast-1a」「ap-northeast-1c」とし、サブネットは「10.0.3.0/24」「10.0.4.0/24」を選択します。
作成
をクリックするとサブネットグループが作成されます。
データベース
データベースを作成します。データベースの項目を開きます。
右上のデータベースの作成
をクリックします。
「標準作成」を選択します。
Auroraで検証したいので「MySQL」ではなく「Amazon Aurora」を選択します。
WordPressの推奨環境がMySQL バージョン 5.6 以上なのでこの条件に合うようにバージョンを選択します。
テンプレートは「開発/テスト」を選択します。
マスターユーザー名を「wordpress」とし、マスターパスワードを入力します。
DBインスタンスサイズは「バースト可能クラス」、「db.t3.small」を選択します。
Auroraレプリカは作成しません。
VPCは「My_VOC_1」、サブネットグループは「my_subnet_grp」、パブリックアクセス可能は「なし」を選択します。
VPCセキュリティグループは「新規作成」を選択し、セキュリティグループ名は「My-RDS-SG1」とし、アベイラビリティゾーンは「ap-northeast-1a」を選択します。
データベース名は「wordpress」と入力します。
RDSの設定は以上で問題ないので、下へスクロールして、データベースの作成
をクリックします。
データベースのセキュリティグループの編集
デフォルトの設定のままだとRDSのセキュリティ面に問題があるので、DBに侵入できるのはWebサーバのみに設定します。
VPCのコンソールに移動し、セキュリティグループの項目を開きます。
My-RDS-SG1を選択し、インバウンドルールを編集
をクリックします。
ソースの部分を「Web-SG-1」にして、ルールを保存
をクリックします。
WordPressのインストール
ではWordPressをEC2インスタンスにインストールしていきます。
執筆者の環境はWindowsなので、TeraTermやRLoginなどのターミナルソフトを使用してもよいのですが、今回はAWSの機能を使ってブラウザ上でログインしていきます。
EC2インスタンスを選択して、上方の接続
をクリックします。
接続
を押せば接続します。この場合、インスタンスを作成した際に作ったキーペアを用いて公開鍵認証を行うことはありません。
まずは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。
/var/www/html以下の階層はApache自身のapacheユーザが操作するので、デフォルトの所有ユーザ(rootユーザ)のままでは操作できません。したがって、所有ユーザ、グループをapacheに変更する必要があります。
[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アドレスにブラウザからアクセスします。
すると以下のページが表示されます。
さあ、始めましょう!
をクリックします。
データベース名を「wordpress」、ユーザー名を「wordpress」、パスワードはRDSを作成した際に設定したパスワードを入力します。
データベースのホストは次の画像を参照。
送信
をクリックします。
RDSの作成したデータベースを開きます。database-1-instance-1のエンドポイントをデータベースのホストに入力します。
インストール実行
します。
必要情報を入力してWordPressをインストール
します。
ログイン
します。
ログインできました。
動作確認です。適当に記事を投稿して終了。
おわりに
動きましたね。
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
-
執筆者自身はwordpressディレクトリごとコピーしたせいで「index.phpが見つからないヨ」というエラーが出て小一時間潰れたので注意してください。 ↩
Author And Source
この問題について(【AWS】Amazon AuroraでもWordPressは動くの?), 我々は、より多くの情報をここで見つけました https://qiita.com/GATCHenx/items/515b3ae5caa1f548b3c5著者帰属:元の著者の情報は、元のURLに含まれています。著作権は原作者に属する。
Content is automatically searched and collected through network algorithms . If there is a violation . Please contact us . We will adjust (correct author information ,or delete content ) as soon as possible .