こんにちは、25卒新卒の辻野です。
7月からOJT(On the Job Training)と模擬案件(営業~開発までの実際の案件の流れを1人で担当するもの)が始まり、本格的にAWSに触れる機会が増えてきて入社前よりもAWSに魅力を感じるようになりました。
今回は、模擬案件で躓いたWordPressインストールについて記事で取り上げようと思います。
チュートリアル: AL2023 で WordPress ブログをホストする - Amazon Linux 2023ではApache向けの手順となっているため、本記事ではNginxを使いたい方のためのWordPressのインストール手順を説明します!
前提条件
今回作成するものは以下の構成図の通りです。
最終的にWordPressのインストール画面が表示されるまでの流れを説明していきます。

VPCやサブネット、ルートテーブル、Internet Gateway、NAT Gatewayについてはすでに作成されているものとします。 また、ドメインの取得とRoute53やACMの設定は既に完了しているものとします。
セキュリティグループの作成
ALBセキュリティグループ(scg-test-alb)
インバウンドルール
| プロトコル | ポート | ソース |
|---|---|---|
| tcp | 443 | 0.0.0.0/0 |
アウトバウンドルール
| プロトコル | ポート | 送信先 |
|---|---|---|
| すべて | すべて | 0.0.0.0/0 |
EC2セキュリティグループ(scg-test-ec2)
インバウンドルール
| プロトコル | ポート | ソース |
|---|---|---|
| tcp | 80 | scg-test-alb |
アウトバウンドルール
| プロトコル | ポート | 送信先 |
|---|---|---|
| すべて | すべて | 0.0.0.0/0 |
RDSセキュリティグループ(scg-test-rds)
インバウンドルール
| プロトコル | ポート | ソース |
|---|---|---|
| tcp | 3306 | scg-test-ec2 |
アウトバウンドルール
| プロトコル | ポート | 送信先 |
|---|---|---|
| すべて | すべて | 0.0.0.0/0 |
DBインスタンスの作成
| 設定 | 値 |
|---|---|
| DBエンジン | MySQL |
| エンジンバージョン | MySQL 8.4.6 |
| デプロイオプション | シングルAZ DB インスタンスデプロイ |
| DB インスタンス識別子 | test-db |
| マスターユーザー名 | admin |
| DBインスタンスクラス | db.t3.micro |
| ストレージタイプ | 汎用 SSD(gp3) |
| ストレージ割り当て | 20GiB |
| セキュリティグループ | scg-test-rds |
EC2インスタンスの作成
IAMロールの作成(EC2_SSM_Role)
SSM接続を行うため、事前にIAMロールを作成します。
【参考資料】Session Manager を使用して Amazon EC2 インスタンスに接続 - AWS 規範ガイダンス
| 設定 | 値 |
|---|---|
| 信頼されたエンティティタイプ | AWSのサービス |
| ユースケース | EC2 |
| 許可ポリシー | AmazonSSMManagedInstanceCore |
EC2インスタンス
| 設定 | 値 |
|---|---|
| OS | Amazon Linux2023 |
| インスタンスタイプ | t2.micro |
| セキュリティグループ | scg-test-ec2 |
| ストレージタイプ | gp3 |
| ボリュームサイズ | 8Gib |
IAMロールの追加
インスタンス起動後に作成したIAMロールを追加します。
アクション→セキュリティ→IAMロールを変更EC2_SSM_Role→IAMロールの更新

ALBの作成
Target Group (tg-test)
| 設定 | 値 |
|---|---|
| ターゲットタイプ | インスタンス |
| プロトコル | HTTP |
| ポート | 80 |
| プロトコルバージョン | HTTP1 |
| ヘルスチェックプロトコル | HTTP |
| ヘルスチェックパス | / |
ALB
| 設定 | 値 |
|---|---|
| ロードバランサータイプ | Application Load Balancer |
| スキーム | インターネット向け |
| IPアドレスタイプ | IPv4 |
| サブネット | パブリックサブネット |
| セキュリティグループ | scg-test-alb |
| リスナー | HTTPS/443 |
| ターゲットグループ | tg-test |
インストール作業
今回は、SSMのセッションマネージャーから接続して行います。
各種インストール(Nginx/Maria DB/PHP)
# パッケージの最新化 sudo dnf update -y # Nginxのインストール sudo dnf -y install nginx # Maria DBパッケージインストール sudo dnf install mariadb105 -y # PHPインストール sudo dnf install -y php-fpm php-mysqli php-json php php-devel
server箇所の変更
NginxはApachと違い、PHPを実行するためにNginxの設定ファイルを修正する必要があります。
私はApach同様にここの設定を修正をせずに、WordPressをインストールしてしまい上手く表示されず躓いてしまいました。こちらの設定の修正作業をを必ず行いましょう!
# Nginxの設定編集 sudo vim /etc/nginx/nginx.conf
修正前
server {
listen 80;
listen [::]:80;
server_name _;
root /usr/share/nginx/html;
# Load configuration files for the default server block.
include /etc/nginx/default.d/*.conf;
error_page 404 /404.html;
location = /404.html {
}
error_page 500 502 503 504 /50x.html;
location = /50x.html {
}
}
修正後
server {
listen 80;
listen [::]:80;
server_name _;
root /usr/share/nginx/html;
# Load configuration files for the default server block.
include /etc/nginx/default.d/*.conf;
location ~ \.php$ {
root /usr/share/nginx/html;
fastcgi_pass 127.0.0.1:9000;
fastcgi_index index.php;
fastcgi_param SCRIPT_FILENAME /usr/share/nginx/html$fastcgi_script_name;
include fastcgi_params;
}
}
Nginxの起動,自動起動設定
sudo systemctl start nginx sudo systemctl enable nginx
WordPressインストール
cd /home/ssm-user/ wget https://wordpress.org/latest.tar.gz tar -xzf latest.tar.gz
wp-includes/load.phpファイル編集
httpsでアクセスしたときにページが崩れるのを防ぐためにfunction is_ssl()内に以下を追加します。
【参考資料】Amazon Linux 2でWordPressブログのホストチュートリアルをやってみた - サーバーワークスエンジニアブログ
if ( isset( $_SERVER['HTTP_X_FORWARDED_PROTO'] ) && $_SERVER['HTTP_X_FORWARDED_PROTO'] == 'https' ) {
$_SERVER['HTTPS']='on';
}
追加後
function is_ssl() {
if ( isset( $_SERVER['HTTP_X_FORWARDED_PROTO'] ) && $_SERVER['HTTP_X_FORWARDED_PROTO'] == 'https' ) {
$_SERVER['HTTPS']='on';
}
if ( isset( $_SERVER['HTTPS'] ) ) {
if ( 'on' === strtolower( $_SERVER['HTTPS'] ) ) {
return true;
}
if ( '1' === (string) $_SERVER['HTTPS'] ) {
return true;
}
} elseif ( isset( $_SERVER['SERVER_PORT'] ) && ( '443' === (string) $_SERVER['SERVER_PORT'] ) ) {
return true;
}
return false;
}
DB設定
wordpress-user、wordpress-db、your_strong_passwordを任意の値に変更してください。
# 接続 mysql -h <RDSエンドポイント> -P 3306 -u admin -p # DBユーザー作成 CREATE USER 'wordpress-user' IDENTIFIED BY 'your_strong_password'; # DB作成 CREATE DATABASE `wordpress-db`; # DBに対してユーザーの権限を付与 GRANT ALL PRIVILEGES ON `wordpress-db`.* TO "wordpress-user"; # 変更を有効にする FLUSH PRIVILEGES; # 終了 exit
WordPressの設定
wp-config.phpファイルの編集をします。
# wp-config.phpファイルの作成 (コピー) cp wordpress/wp-config-sample.php wordpress/wp-config.php # 編集 sudo vim wordpress/wp-config.php
先ほどのDB設定で設定した内容に書き換えます。 また、Datebase hostnameはRDSエンドポイントに書き換えます。
define( 'DB_NAME', 'wordpress-db' ); /** Database username */ define( 'DB_USER', 'wordpress-user' ); /** Database password */ define( 'DB_PASSWORD', 'your_strong_password' ); /** Database hostname */ define( 'DB_HOST', 'RDSのエンドポイント' );
/user/share/nginx/htmlへ移動
sudo mv wordpress/* /usr/share/nginx/html/
ファイルの許可設定
# Nginxユーザーとグループに所有権を設定
sudo chown -R nginx:nginx /usr/share/nginx/html
# /usr/share/nginx/htmlとサブディレクトリ、ファイルの書き込み許可設定
sudo chmod 2775 /usr/share/nginx/html
sudo find /usr/share/nginx/html -type d -exec chmod 2755 {} \;
sudo find /usr/share/nginx/html -type f -exec chmod 0644 {} \;
# Nginx再起動
sudo systemctl restart nginx
動作確認
https://<ドメイン名>/wp-login.phpでインストール画面にアクセスできれば成功です!

辻野 美紗(執筆記事の一覧)
2025年度新卒入社。最近の悩みは運動不足