AWS上にWordPressサーバを構築しよう

概要

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ユーザにスイッチしておきます。

Bash
sudo su -

Apacheについては、以下のコマンドで実行します。

Bash
dnf install httpd

インストールできたら、設定ファイルを書き換えます。
まず /etc/httpd/conf/httpd.conf のバックアップを取り、vimで編集します。

Bash
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 NoneAllowOverride All

    #
    # Controls who can get stuff from this server.
    #
    Require all granted
</Directory> vim /etc/httpd/conf/httpd.conf

差分が以下のようになっていればOK。

Diff
# 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となっていることを確認します。

Bash
apachectl configtest
Syntax OK

ここで、apacheを起動しておきます。

Bash
systemctl start httpd

起動ができたら、ステータスのActive:行を確認して「active」になっていれば起動完了です。

PHPのインストール

次にPHPをインストールします。以下のコマンドを実行します。

Bash
dnf install php php-devel php-mysqlnd php-mbstring php-pdo php-gd

/etc/php.iniのバックアップを取って、編集します。

Bash
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
# 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を再起動します。

Bash
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をインストールします。

Bash
sudo dnf install mariadb105

こちらについては以下のページにも記載があるので、ご確認ください。

https://docs.aws.amazon.com/ja_jp/AmazonRDS/latest/UserGuide/mysql-install-cli.html

インストールが終われば、以下のコマンドで作成したRDSにログインします。
コマンド内のエンドポイント名は、作成したRDSをコンソール上でクリックすると確認できます。

Bash
mysql -u admin -p -h ${作成したRDSのエンドポイント}

以下のように、ログインできればOKです。

Bash
[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にログインした状態で、以下のコマンドを実行します。

データベースの作成

SQL
CREATE DATABASE wordpress;

ユーザの作成と権限付与

SQL
CREATE USER 'wpadmin'@'${VPCのIP範囲}' IDENTIFIED BY '${設定したいパスワード}';
GRANT ALL ON wordpress.* TO 'wpadmin'@'${VPCのIP範囲}';

以上でデータベース側の設定が終わったので、ログアウトします。

SQL
exit;

最後に、作ったwpadminユーザでRDSインスタンスに接続できることを確認します。

Bash
# 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ユーザになっておいてください。

Bash
cd /var/www

今回はwordpress 6.8.2をインストールします。まず以下のコマンドを実行して、パッケージファイルをダウンロードして、展開します。

Bash
curl -sOL https://ja.wordpress.org/wordpress-6.8.2-ja.tar.gz
tar -zxf wordpress-6.8.2-ja.tar.gz

無事にダウンロード・展開できたら、lsをすると以下のようになっています。

Bash
# ls
cgi-bin  html  wordpress  wordpress-6.8.2-ja.tar.gz

WordPressサイトを公開するために、wordpressディレクトリ内のファイルをすべてドキュメントルートである /var/www/html配下に移動させます。

Bash
mv wordpress/* html/

また、apacheユーザが中身を参照できるように、所有者と権限をそれぞれ変更します。

Bash
chown -R apache:apache html/
chmod -R 755 html/

wp-config.php の作成

以下の手順で、wp-config.phpを作成します。

まず/var/www/html/配下に移動します。

Bash
cd /var/www/html

wp-config-sample.phpがあると思うので、これをコピーします。

Bash
cp -p wp-config-sample.php wp-config.php

次にコピーしたwp-config.phpの中身を変更します。

Bash
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_herewordpress
username_herewpadmin
password_herewpadminに設定したパスワード
localhostRDSのエンドポイント名

差分が以下のようになっていればOKです。

Diff
# 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インフラをコードとして管理して、誰が実行しても同じ結果になるようにする技術のことです。今度、今回の内容に関してコード化する方法なども記事としてまとめれたらなと考えています。

それでは、ここまで読んでいただきありがとうございました!