概要
AWS上にWordPressサーバを構築する方法を解説します。EC2上にDBをインストールするのではなく、RDSインスタンスを作成し、EC2と通信をさせて構築をするようにしたので、AWSに慣れたい人に実践していただきたいと考えています。
本記事は、WordPressサーバを立ててAWSの使い方を学ぶことが目的なので、立てたサーバ上で記事を書いて運用していくことは考えていません。運用も視野にいれる場合には、本記事で紹介した以外の設定が必要なため、ご注意ください。
前提
- 自身のAWSアカウントを持っている
- シェルの操作にある程度慣れている
EC2インスタンスの設定
WordPressをインストールするサーバを作成します。作成方法は以下の記事をご覧ください。
上記記事はSSH接続できるようにセキュリティグループを設定していますが、今回は以下の許可設定を同じセキュリティグループに追加します。
- 自身のグローバルIPからのHTTP、HTTPS通信
グローバルIPについては、例えば以下のサイトにアクセスするとわかります。
https://www.cman.jp/network/support/go_access.cgi
また、RDSインスタンスに設定するセキュリティグループを作っておきます。名前は何でもOKですが、以下のような条件を設定しておきます。
- タイプ: MYSQL/Aurora
- ソース: test-sg
ここで、ソースにtest-sgを入れる理由は、RDSへの通信はtest-sgを設定したリソース(つまりec2-test)にしたいからです。
Apacheのインストール
後に必要となるため、ApacheとPHPもインストールしておきます。
まず、rootユーザにスイッチしておきます。
sudo su -
Apacheについては、以下のコマンドで実行します。
dnf install httpd
インストールできたら、設定ファイルを書き換えます。
まず /etc/httpd/conf/httpd.conf
のバックアップを取り、vimで編集します。
cp -p /etc/httpd/conf/httpd.conf{,.org}
vim /etc/httpd/conf/httpd.conf
変更点は、以下の太字の部分です。
<Directory "/var/www/html">
#
# Possible values for the Options directive are "None", "All",
# or any combination of:
# Indexes Includes FollowSymLinks SymLinksifOwnerMatch ExecCGI MultiViews
#
# Note that "MultiViews" must be named *explicitly* --- "Options All"
# doesn't give it to you.
#
# The Options directive is both complicated and important. Please see
# http://httpd.apache.org/docs/2.4/mod/core.html#options
# for more information.
#
Options Indexes FollowSymLinks
#
# AllowOverride controls what directives may be placed in .htaccess files.
# It can be "All", "None", or any combination of the keywords:
#
# AllowOverride controls what directives may be placed in .htaccess files.
# It can be "All", "None", or any combination of the keywords:
# AllowOverride FileInfo AuthConfig Limit
#
AllowOverride None
↓
AllowOverride All
#
# Controls who can get stuff from this server.
#
Require all granted
</Directory> vim /etc/httpd/conf/httpd.conf
差分が以下のようになっていればOK。
# diff -U0 /etc/httpd/conf/httpd.conf.org /etc/httpd/conf/httpd.conf
--- /etc/httpd/conf/httpd.conf.org 2025-07-21 15:00:36.000000000 +0000
+++ /etc/httpd/conf/httpd.conf 2025-09-12 14:01:07.092062759 +0000
@@ -156 +156 @@
- AllowOverride None
+ AllowOverride All
念の為configtestを実施して、Syntax OKとなっていることを確認します。
apachectl configtest
Syntax OK
ここで、apacheを起動しておきます。
systemctl start httpd
起動ができたら、ステータスのActive:行を確認して「active」になっていれば起動完了です。
PHPのインストール
次にPHPをインストールします。以下のコマンドを実行します。
dnf install php php-devel php-mysqlnd php-mbstring php-pdo php-gd
/etc/php.ini
のバックアップを取って、編集します。
cp -p /etc/php.ini{,.org}
vim /etc/php.ini
編集箇所は、以下の部分になります。
post_max_size = 8M
↓
post_max_size = 128M
upload_max_filesize = 2M
↓
upload_max_filesize = 128M
編集後、差分が以下のようになっていればOKです。
# diff -U0 /etc/php.ini.org /etc/php.ini
--- /etc/php.ini.org 2025-07-12 03:31:50.000000000 +0000
+++ /etc/php.ini 2025-09-12 14:06:18.116256439 +0000
@@ -698 +698 @@
-post_max_size = 8M
+post_max_size = 128M
@@ -850 +850 @@
-upload_max_filesize = 2M
+upload_max_filesize = 128M
また、編集したphp.iniを読み込むために、apacheを再起動します。
systemctl restart httpd
以上で、EC2インスタンスの設定は終わりになります。
RDSの作成
ここではWordpressで使うデータベース(DB)を作成します。別のEC2を立てて、そこにDBをインストールしてもよいのですが、せっかくAWSを使ってるのでRDSを使ってみましょう。
RDSは、正式にはAmazon Relational Database Serviceと呼び、AWSが提供するマネージドサービスです。EC2を立ててDBをインストールする場合、そのDB自体のアップデートなどは自身で管理する必要がありますが、RDSはマネージドサービスなのでAWSが管理してくれてます。そのため、DBを「使う」という目的であれば、RDSを使ったほうがいろいろ楽です。
まず、上部検索窓に「RDS」と入力すると「Aurora and RDS」と表示されるので、これを選択します。左ペインに[データベース]とあるので、これをクリック。すると以下の画面に遷移するため、右上の[データベースの作成]をクリックします。

遷移した画面において「標準作成」を選択し、エンジンのタイプを「MySQL」にします。

また、今回はテストでWordpressサーバを立てるだけなので、テンプレートについては「無料利用枠」を選択します。

次にインスタンスの設定についてですが、今回名前は「wordpress-db」にしました。あとは以下の画像のように選択・入力します。
パスワード自動生成にチェックをいれると、RDSインスタンスを立ち上げたあとに画面上部に[接続の詳細を確認]と現れるので、そこからパスワードを確認します。

次に、接続関連の設定をします。基本的にはデフォルトで選択されているもので大丈夫ですが、VPCの部分だけ事前に作成しておいたテスト用のVPCを選択しておきます。

そして、セキュリティグループについては、事前に作成しておいた「test-db」を選択します。
test-dbはソースに「test-sg」を選択していました。AWSの動きとして、ソースにセキュリティグループを設定しておくと、そのセキュリティグループが設定されているリソースからの通信を許可します。test-sgは、ec2-testインスタンスに設定されているセキュリティグループなので、ec2-testからのMySQL接続を許可するという動きになります。

以上の設定ができれば、画面下部にある[データベースの作成]をクリックします。
RDSインスタンスの立ち上がりは少し遅いですが、無事作成できれば以下のような画面になります。

この右上をクリックすると、自動生成されたパスワードが表示されるため、控えておきます。
以上でRDSインスタンスの立ち上げが終わったので、次はいよいよWordpressのインストールに入ります。
EC2にWordpressをインストール
さて、EC2にSSH接続をして、Wordpressのインストールを行いましょう。まず、先ほど作成したRDSに接続するために、mysql-clientをインストールします。
MySQL Clientのインストール
Amazon Linux 2023では、以下のコマンドでmysql-clientをインストールします。
sudo dnf install mariadb105
こちらについては以下のページにも記載があるので、ご確認ください。
https://docs.aws.amazon.com/ja_jp/AmazonRDS/latest/UserGuide/mysql-install-cli.html
インストールが終われば、以下のコマンドで作成したRDSにログインします。
コマンド内のエンドポイント名は、作成したRDSをコンソール上でクリックすると確認できます。
mysql -u admin -p -h ${作成したRDSのエンドポイント}
以下のように、ログインできればOKです。
[ec2-user@ip-10-0-0-4 ~]$ mysql -u admin -p -h ${作成したRDSのエンドポイント}
Enter password:
Welcome to the MariaDB monitor. Commands end with ; or \g.
Your MySQL connection id is 27
Server version: 8.0.42 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.
MySQL [(none)]>
データベースの設定
WordPressで利用するデータベースと、接続用のユーザを作成します。
RDSにログインした状態で、以下のコマンドを実行します。
データベースの作成
CREATE DATABASE wordpress;
ユーザの作成と権限付与
CREATE USER 'wpadmin'@'${VPCのIP範囲}' IDENTIFIED BY '${設定したいパスワード}';
GRANT ALL ON wordpress.* TO 'wpadmin'@'${VPCのIP範囲}';
以上でデータベース側の設定が終わったので、ログアウトします。
exit;
最後に、作ったwpadminユーザでRDSインスタンスに接続できることを確認します。
# mysql -u wpadmin -p -h ${RDSのエンドポイント名}
Enter password:
Welcome to the MariaDB monitor. Commands end with ; or \g.
Your MySQL connection id is 28
Server version: 8.0.42 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.
MySQL [(none)]>
WordPressパッケージファイルのダウンロード
ここからは実際にWordpressをインストールしてみます。
まず、インストールするために必要なパッケージファイルをダウンロードします。
httpdをインストールしたときに作られた /var/www
配下に移動します。このとき、rootユーザになっておいてください。
cd /var/www
今回はwordpress 6.8.2をインストールします。まず以下のコマンドを実行して、パッケージファイルをダウンロードして、展開します。
curl -sOL https://ja.wordpress.org/wordpress-6.8.2-ja.tar.gz
tar -zxf wordpress-6.8.2-ja.tar.gz
無事にダウンロード・展開できたら、lsをすると以下のようになっています。
# ls
cgi-bin html wordpress wordpress-6.8.2-ja.tar.gz
WordPressサイトを公開するために、wordpressディレクトリ内のファイルをすべてドキュメントルートである /var/www/html
配下に移動させます。
mv wordpress/* html/
また、apacheユーザが中身を参照できるように、所有者と権限をそれぞれ変更します。
chown -R apache:apache html/
chmod -R 755 html/
wp-config.php の作成
以下の手順で、wp-config.phpを作成します。
まず/var/www/html/
配下に移動します。
cd /var/www/html
wp-config-sample.phpがあると思うので、これをコピーします。
cp -p wp-config-sample.php wp-config.php
次にコピーしたwp-config.phpの中身を変更します。
vim wp-config.php
以下の太字かつ斜体の部分を編集します。
// ** Database settings - You can get this info from your web host ** //
/** The name of the database for WordPress */
define( 'DB_NAME', 'database_name_here' );
/** Database username */
define( 'DB_USER', 'username_here' );
/** Database password */
define( 'DB_PASSWORD', 'password_here' );
/** Database hostname */
define( 'DB_HOST', 'localhost' );
database_name_here | wordpress |
username_here | wpadmin |
password_here | wpadminに設定したパスワード |
localhost | RDSのエンドポイント名 |
差分が以下のようになっていればOKです。
# diff -U0 wp-config{-sample,}.php
--- wp-config-sample.php 2024-10-15 15:24:17.000000000 +0000
+++ wp-config.php 2025-09-13 12:04:36.946250997 +0000
@@ -23 +23 @@
-define( 'DB_NAME', 'database_name_here' );
+define( 'DB_NAME', 'wordpress' );
@@ -26 +26 @@
-define( 'DB_USER', 'username_here' );
+define( 'DB_USER', 'wpadmin' );
@@ -29 +29 @@
-define( 'DB_PASSWORD', 'password_here' );
+define( 'DB_PASSWORD', '${wpadminに設定したパスワード}' );
@@ -32 +32 @@
-define( 'DB_HOST', 'localhost' );
+define( 'DB_HOST', '${RDSのエンドポイント名}' );
動作確認
ここまでくれば、あとはもうすぐです。最後に、以下のアドレスをブラウザに打ち込み、アクセスします。
http://${EC2のパブリックIPアドレス}/wp-admin/install.php
以下のような画面が現れたら成功です!!
必要があれば各項目を埋めて、一番下の[WordPressをインストール]をクリックしてください。ここまでお疲れ様でした。

まとめ
今回はいろいろやることが多くて大変だったと思います。特に、EC2とRDSとを連携させる部分については、初学者にとってとっつきにくい部分と思うので、今回の記事を参考にしていただければ幸いです。
今回はWebコンソール上をクリックしながら作りましたが、このやり方だと人によっては手順と違うことを行ったりして最終的に出来上がるものに個人差が生じる可能性があります。このような問題を回避するために、インフラのコード化 (Infrastructure as Code, IaC) という考え方があります。これは、構築するITインフラをコードとして管理して、誰が実行しても同じ結果になるようにする技術のことです。今度、今回の内容に関してコード化する方法なども記事としてまとめれたらなと考えています。
それでは、ここまで読んでいただきありがとうございました!