AWSでEC2とRDSでwordpressをセットアップしてみたので記事にする!の第4回です。この記事ではEC2とRDSでWordPressをセットアップするまでを紹介していきます。

この記事はこんな人にオススメ
- RDSを使ってWordPress用のデータベースを作成したい方
- EC2からRDSに接続しデータベースを作成したい方
- WordPress用にEC2にPHPをインストールしたい方
このサイト(ブログ)はConoHa WINGで運用しています。国内最速、超安定、稼働率99.99%以上、ということだけあってConoHa WINGにまったく不満もなくむしろ動作もキビキビ速いし、コンソールもまずまず使いやすく快適で満足しかないです。ConoHa WINGの詳細はこちらです。
本シリーズの記事はAWSのEC2とRDSを使ってwordpressをセットアップし、バックアップにはS3を活用します。自由度や柔軟性は圧倒的にAWSが高い反面、セキュリティの対策や日々のメンテナンスも必要になってきます。つまりネットーワークやセキュリティ、AWSの勉強にはもってこい!ってことです。
それとは逆に、コンテンツ制作やクリエイティブ面に注力したい場合は、ネットワークやセキュリティ、サーバ構築、メンテナンスなどがほぼ必要のないConoHa WINGがオススメです。
さて、下記は前回までの記事と今回の記事の位置づけです。
この記事でわかること
- RDSを使ったWordPress用のデータベース作成方法
- EC2からRDSに接続しデータベースを作成する方法
- WordPressに必要なPHPのインストール方法

目次
全体像
- STEP
【AWS】コンソール操作でEC2とRDSを準備する
- STEP
【AWS】EC2にSSHで安全にアクセスする
- STEP
【AWS】Apacheで最低限やっておくべきSSL/TLSの設定
- STEP
【AWS】EC2とRDSでwordpressをセットアップする
- STEP
【AWS】S3にwordpressをバックアップする
前回までのおさらい
AWSのアカウントを登録し、EC2インスタンス作成、Elastic IPの割り当てと関連づけを行い、固定IPにしました。そしてRDSコンソールからデータベースの作成を行いました。
ローカル環境から立ち上げたEC2インスタンスへSSH接続し、Apacheをインストールしローカル環境からブラウザでSSL接続できることまでやりました。
今回は、RDSコンソールから作成したデータベースに対して、EC2インスタンスから接続しSQLでWordPress用のデータベースをつくっていきます。

ネットワーク、セキュリティや各種チューニング、AWSの各サービスの詳細は奥が深すぎるので今回は触れませんが、「AWSではじめるインフラ構築入門 安全で堅牢な本番環境のつくり方」はオススメの書籍です。
そもそもAWSのRDSとは?
ちなみにRDSはリレーションデータベースサービス(Relation Database Service)の略です
WordPressを構築する場合、通常はサーバを準備しそのサーバにデータベースをインストールしWordPressを利用します。1台のサーバにWEBサーバとデータベースをセットアップするパターン、WEBサーバとデータサーバを1台ずつに分けて2台で構築するパターン、それぞれ冗長化させて4台(2×2台)で構築するパターンなど、たくさんのケースがあります。
いずれのパターンでも通常、データベースを用意するにはサーバを準備する必要があるわけですが、AWSのRDSはデータベースのためのサーバが不要で、設定も簡単ですぐに利用することができます。
他にもメリットとして高速であり安価でありセキュリティも高く、自動でバックアップも作成され、更に拡張性もあります。
デメリットとしては、データベースサーバがないのでログインできませんので、若干ブラックボックス感がなくもないですがそれもあくまでサーバと比べての話しなのでメリットの方が大きいと思います。
サーバによるWordPressのデータベース構築や運用を経験した上でRDSを使う、というのが勉強や経験としても良いと思います。
RDSにWordPress用のデータベースを作成する
mysql clientをインストールする
それではやっていきます。まずEC2インスタンスへSSHで接続します。EC2インスタンス上で下記のコマンドを実行し、RDSへ接続するためにmysql clientをインストールします。(実際には下記のようにmariadb.x86_64とmariadb-libs.x86_64 がインストールされます)
sudo yum install mysql
Running transaction
インストール中 : 1:mariadb-libs-5.5.68-1.amzn2.x86_64 1/2
インストール中 : 1:mariadb-5.5.68-1.amzn2.x86_64 2/2
検証中 : 1:mariadb-libs-5.5.68-1.amzn2.x86_64 1/2
検証中 : 1:mariadb-5.5.68-1.amzn2.x86_64 2/2
インストール:
mariadb.x86_64 1:5.5.68-1.amzn2
依存性関連をインストールしました:
mariadb-libs.x86_64 1:5.5.68-1.amzn2
完了しました!
インストールされたこととバージョンを確認します。
sudo yum list installed | grep maria
mariadb.x86_64 1:5.5.68-1.amzn2 @amzn2-core
mariadb-libs.x86_64 1:5.5.68-1.amzn2 @amzn2-core
mysql --version
mysql Ver 15.1 Distrib 5.5.68-MariaDB, for Linux (x86_64) using readline 5.1
RDSへ接続する
エンドポイントの確認
RDSへ接続するために、RDSのコンソールからエンドポイントを確認します。エンドポイントとはRDS自身のホスト名で、EC2インスタンスからこのエンドポイントを指定して接続する必要があります。
- STEP
RDSコンソールへアクセス
- STEP
左のメニューからデータベースをクリック
- STEP
データベース一覧から該当のデータベース(wordpress用)をクリック
- STEP
接続とセキュリティタブ内にエンドポイントが表示されています
xxxxxxxxxxxxxxxxx.rds.amazonaws.comという文字列です。
エンドポイントはコピーしておきます。
EC2インスタンスからRDSへ接続する
EC2インスタンスから下記のコマンドでRDSへ接続します。
mysql --user=<USER> --password=<PASSWORD> --host=<ENDPOINT>
mysql -u <USER> -p<PASSWORD> -h <ENDPOINT>
-pの後にパスワードを指定する場合、半角スペースは不要です
項目 | 説明 |
---|---|
<USER> | RDSでデータベースを作成した際のマスターユーザー名 |
<PASSWORD> | RDSでデータベースを作成した際のマスターパスワード |
<ENDPOINT> | RDSコンソールで確認したエンドポイント(ホスト名) |
-pの後にパスワードを書かなくてもコマンド実行後にパスワードが求められます。
また、<ENDPOINT>は.zshrc等で環境変数に設定することで毎回の入力は不要にできます。
export MYSQL_HOST=xxxxxxxxxxxxxxxxxxxx.rds.amazonaws.com
ではEC2インスタンスから実際に接続してみます。<user>、<password>、<endpoint>は実際のものに置き換えて実行してください。
mysql --user=<user> --password=<password> --host=<endpoint>
Welcome to the MariaDB monitor. Commands end with ; or \g.
Your MySQL connection id is 5192
Server version: 8.0.30 Source distribution
Copyright (c) 2000, 2018, Oracle, MariaDB Corporation Ab and others.
Type 'help;' or '\h' for help. Type '\c' to clear the current input statement.
RDSに接続できました。RDSではSQLで操作します。試しにshow databases;してデータベースを確認してみましょう。exitやctrl + Dでログアウトします。
show databases;
+--------------------+
| Database |
+--------------------+
| information_schema |
| mysql |
| performance_schema |
| sys |
+--------------------+
4 rows in set (0.00 sec)
exit
最低限覚えたいSQL文
RDSにWordPress用データベースを作成する前に、予備知識として最低限覚えたSQL文を紹介します。
show文
データベースの一覧を表示する。
show databases;
そのデータベースのテーブル一覧を表示する。
use [データベース名]
show tables;
そのテーブルのカラム(フィールド)一覧を表示する。
show columns from [テーブル名];
create database文
データベースを作成する。(「tes_db」というデータベースを作成)
create database test_db;
ちなみに、データベースの削除は下記となります。
drop database test_db;
create user文
新しいユーザーを作成する。(「test_user」というユーザーを作成)
create user test_user;
ちなみに、ユーザーの削除は下記となります。
drop user test_db;
select文
select文はテーブルからレコードを取得するためのSQL文です。
下記はmysqlデータベースのuserテーブルから、userカラムとhostカラムを取得するSQL文です。
select user,host from mysql.user;
+------------------+-----------+
| user | host |
+------------------+-----------+
| mysql.infoschema | localhost |
| mysql.session | localhost |
| mysql.sys | localhost |
| rdsadmin | localhost |
+------------------+-----------+
4 rows in set (0.01 sec)
最初に買うSQLの本として「いちばんやさしい SQL 入門教室」がオススメです。
RDSにWordPress用データベースを作成する
それでは、上記の「最低限覚えたSQL文」をざっと覚えたら実際にRDSにWordPress用のデータベーズを作成していきます。
- STEP
EC2からRDSへ接続
mysql -u <user> -p<password> -h <endpoint> Welcome to the MariaDB monitor. Commands end with ; or \g. Your MySQL connection id is 5192 Server version: 8.0.30 Source distribution Copyright (c) 2000, 2018, Oracle, MariaDB Corporation Ab and others. Type 'help;' or '\h' for help. Type '\c' to clear the current input statement.
- STEP
WordPress用データベースの作成
ここではデータベース名をwordpress_dbとしています。
create database wordpress_db;
以上でRDSにwordpress用のデータベースが作成されました。この後はEC2インスタンス側でPHPのインストールや、WordPressを設定をしていきます。
EC2インスタンスにPHPをインストール
最初に買うPHPの本として最近発売された「確かな力が身につくPHP「超」入門 第2版」もオススメです。
今回インストールするphpのバージョンは少し古いですがphp7.4をインストールします。EC2のAmazon Linuxで簡単にインストールできるためです。継続的な本番環境ではphp7.4だけでなく最新版のphp8.1を検討するのが良いと思います。
php7.4からphp8.2へのアップデートを以下の記事で紹介しています。ぜひご覧ください。
php7.4のインストール
sudo amazon-linux-extras install php7.4 -y
WordPressに必要なphp関連のインストール
sudo yum install php php-gd php-mysqlnd php-xmlrpc -y
sudo yum install php-mbstring php-xml -y
sudo yum install php-intl -y
phpとapacheの再起動
sudo systemctl restart php-fpm.service
sudo systemctl restart httpd
php.iniの設定
php.iniの編集
最低限必要なphp.iniの設定を行います。設定ファイルは/etc/php.iniです。
sudo vi /etc/php.ini
post_max_size = 250M
upload_max_filesize = 200M
expose_php = Off
memory_limit = 256M
date.timezone = Asia/Tokyo
mbstring.language = Japanese
最低限必要なphp.iniの簡単な説明です。その他の設定や詳細はPHPの公式サイトなど確認してください。
項目 | 設定値 | 説明 |
---|---|---|
post_max_size | 250M | POSTデータの最大サイズ。「upload_max_filesize」より大きくする。 |
upload_max_filesize | 200M | アップロードされるファイルの最大サイズ。「post_max_size」より小さくする。 |
expose_php | Off | Onの場合、PHP のバージョンがHTTP ヘッダに含まれる (X-Powered-By: PHP/5.3.7 など)。 |
memory_limit | 256M | PHPスクリプトの使用可能メモリ最大値 |
date.timezone | Asia/Tokyo | 全ての日付/時刻関数で使用されるデフォルトのタイムゾーン。 |
mbstring.language | Japanese | mbstring で使用される言語設定(NLS)のデフォルト値。 |
Apacheの再起動
php.ini編集後はApacheを再起動しphp.iniの設定を反映させます。
sudo systemctl restart httpd
ApacheとPHPの動作確認
ドキュメントルート(/var/www/html/)にPHP動作確認用のテストファイルを作成して確認します。
cd /var/www/html/
sudo vi phptest.php
<?php phpinfo(); ?>
ブラウザでphptest.phpへアクセスし確認します。https://IPアドレス/phptest.phpですね。下図のように表示されていれば動作は正常です。

cd /var/www/html/
sudo rm phptest.php
ドキュメントルートのパーミッション設定
パーミッション設定
ドキュメントルート(/var/www/html/)のオーナーを「apacheユーザー:apacheグループ」にして、set gidを設定しておきます。
sudo chown -R apache /var/www
sudo chgrp -R apache /var/www
sudo chmod g+s /var/www
ドキュメントルート配下のパーミッションはディレクトリは775、ファイルは664にしておきます。
構築直後で/var/www/htmlに何もファイルがない場合は下のようにchmod 775します。
sudo chmod 775 /var/www/html
/var/www/html配下にディレクトリやファイルなど多くある場合は下のようにfindで対応します。
find /var/www -type d -exec sudo chmod 775 {} \;
find /var/www -type f -exec sudo chmod 664 {} \;
ドキュメントルートにファイルを更新するユーザーを追加する際は下記のようにします。例としてweb-userを作成し/var/www/html/への書き込みをテストしておきます。
sudo useradd web-user
sudo usermod -aG apache web-user
sudo su - web-user
touch /var/www/html/test.html
ls -l /var/www/html/test.html
-rw-rw-r-- 1 web-user apache 0 10月 1 14:18 test.html
rm /var/www/html/test.html
作成したweb-userは必要なければ削除しておきます。
sudo userdel web-user
ApacheのAllowOverrideを設定する
/etc/httpd/conf/httpd.confでAllowOverrideを設定しておきます。.htaccessは様々な便利な制御が可能で、またWordPressのセキュリティ系のプラグインが.htaccessを利用するので許可しておきます。
sudo vi /etc/httpd/conf/httpd.conf
<Directory "/var/www/html">内の
AllowOverrideをALLにします。(150行目前後)
EC2インスタンスでWordPressを設定する
最新版の日本語WordPressをダウンロードする
まずは最新版の日本語WordPressをホームディレクトリにダウンロードしunzipします。unzipするとそのディレクトリにwordpressというディレクトリとファイル群が作成されます。
cd
pwd
/home/user_name
wget https://ja.wordpress.org/latest-ja.zip
unzip latest-ja.zip
ls -l
drwxr-xr-x 5 user user 4096 8月 31 21:05 wordpress
-rw-rw-r-- 1 user user 23633505 8月 31 05:07 latest-ja.zip
WordPressをドキュメントルートに配置し設定する
先程unzipしたwordpressディレクトリの中身をドキュメントール(/var/www/html/)配下にコピーします。
cd
ls -l
drwxr-xr-x 5 user user 4096 8月 31 21:05 wordpress
-rw-rw-r-- 1 user user 23633505 8月 31 05:07 latest-ja.zip
cp -r wordpress/* /var/www/html/.
wp-config.phpの設定とセキュリティ対策
ドキュメントルートに配置したWordPressの設定ファイルを編集します。設定ファイルは/var/www/html/wp-config.phpです。wp-config-sample.phpをmvして使います。
cd /var/www/html/
sudo mv wp-config-sample.php wp-config.php
sudo vi wp-config.php
/** The name of the database for WordPress */
define( 'DB_NAME', '[WordPress用のデータベース名]' );
/** Database username */
define( 'DB_USER', '[RDSのマスターユーザー名]' );
/** Database password */
define( 'DB_PASSWORD', '[RDSのマスターパスワード]' );
/** Database hostname */
define( 'DB_HOST', '[エンドポイント]' );
設定後、/var/www/html/wp-config.phpのパーミッションを400にします。
cd /var/www/html/
sudo chown apache wp-config.php
sudo chmod 400 wp-config.php
さらに、.htaccessでwp-config.phpは外部からアクセス不可能に設定します。
cd /var/www/html/
sudo vi .htaccess
<files wp-config.php>
order allow,deny
deny from all
</files>
WordPressをinstall.phpへアクセスしインストールを完了させる
最後にブラウザからinstall.phpへアクセスし、サイト名の設定やWordPress用のログインユーザーを作成してインストールを完了させます。https://IPアドレス/install.phpです。
インストールが無事に完了するとログイン画面に遷移できます。
MFA(多要素認証)を有効にする
AWSで必ずやっておきたい多要素認証の設定方法を紹介します。
AWSではセキュリティ強化のために必ずMFA(多要素認証)を設定しましょう。AWSアカウントのルートユーザーとIAMユーザーでMFAを設定することができます。設定も簡単です。
ざっくりMFAとは?
MFAとは、一般的なログイン認証情報であるユーザー名とパスワードに加えて、もう1つ(1つ以上)の認証要素を加え、ユーザに対してこの2つ以上の認証要素を要求し認証する方法です。
今回は追加の認証要素としてワンタイムパスワード(OTP)を追加します。ワンタイムパスワードは6桁の数字となり、受信方法はSMSやメールといったケースも多いですが、私は1Password8で保存してワンタイムパスワードを管理しています。
2FAとの違いは?
ちなみに、2FAという単語もよく見かけますが2FAとは「2要素認証」です。2FAは2つの要素で認証する方法ですが、MFAは2つ以上の要素を設定し認証する方式です。
それではAWSのMFAを有効にしましょう。
AWSでワンタイムパスワードを追加する手順
以下のAWS公式ドキュメントを参考にMFAを有効にします。
https://docs.aws.amazon.com/ja_jp/IAM/latest/UserGuide/id_credentials_mfa_checking-status.html
- STEP
IAM コンソールにアクセス
AWS Management Console にサインインし、IAM コンソールにアクセスします。
IAMコンソール:https://console.aws.amazon.com/iam/
- STEP
セキュリティ認証情報をクリック
右上のナビゲーションバーでユーザー名を選択し、セキュリティ認証情報をクリックします。
- STEP
MFAが有効か無効かを確認
MFAが有効でない場合は下の画像のようにアラートが出ています。
- STEP
MFAを割り当てる
では実際にMFAを割り当て設定します。
- STEP
MFAデバイスを選択
今回は1Password8でワンタイムパスワードを管理するので「Authenticator app」を選択します。デバイス名にはわかりやすい名前をつけます。(なんでも構いません)
- STEP
デバイスの設定
- STEP
MFAコードを2つ入力しMFAを追加する
最後に
最後まで読んでいただきありがとうございます。今回の【AWS】EC2とRDSでwordpressをセットアップする【RDS編】はいかがでしたでしょうか。
次回はAWSのS3にWordPressをバックアップする方法を紹介します。
MacやLinux、Pythonなど技術系のkindle本も豊富にあります。詳しくはこちらから。
Amazonの電子書籍読み放題サービス「Kindle Unlimited」でプライム会員を対象に、最初の3か月間を無料体験できるキャンペーンを実施中。マンガ、小説、ビジネス書、雑誌など500万冊から、好きな本を何冊でも読めるキャンペーンです。
初めてkindle unlimited 読み放題をご利用の方は30日間の無料で体験できます。
期間終了後は月額980円で、いつでもキャンセルできます。
200万冊以上が読み放題。お好きな端末で利用可能です。
