0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

LightSail + CloudFrontでWordPressを構築し、高速かつセキュアな環境を目指す

Last updated at Posted at 2025-12-16

はじめに

CYBIRD Advent Calendar 2025 の17日目担当、@cy_yusuke_itoです。
16日目は@cy-naullさんのJMeterで直前のサンプラーが成功したか確認する方法でした。
JMeterでの負荷試験で特定パターンのみの結果抽出ができるようになってました。

概要

AWS Lightsailとは

AWS Lightsailは、手軽にWordPressをデプロイできる便利なサービスです。しかし、本番環境として利用する際には、パフォーマンスとセキュリティの強化が不可欠です。
本記事では、Lightsailインスタンスを オリジン(コンテンツの源泉) とし、Amazon CloudFrontを CDN(コンテンツデリバリーネットワーク) として組み合わせることで、以下のメリットを享受する環境を構築する具体的な手順を、インフラエンジニアの視点から解説します。

高速化と負荷軽減: CloudFrontのエッジキャッシュ機能により、ユーザーのアクセスを分散・処理し、Lightsailインスタンスへの負荷を大幅に軽減し、表示を高速化します。

セキュリティ強化: LightsailのIPアドレスをユーザーから直接見えないように隠蔽し、WAF連携(オプション)などの基盤を整えます。

1. LightSailでWordPressインスタンスを構築

今回は、WordPressがプリインストールされたLightsailでWebサーバーを立ち上げます。

  • プラットフォームの選択: Linux/Unix
  • 設計図の選択: アプリ+OS WordPress
  • SSHキー: 新規作成または既存のキーをアップロード
  • インスタンスプランを選択
    • ネットワークタイプを選択: デュアルスタック (IPv4/IPv6 両対応)
    • サイズを選択: 要件にあったものを選択
  • 静的IPをセット
    • インスタンス作成後、必ず静的IPを割り当てます。IP名は「インスタンス名-IP」といった形でわかりやすい名称にします。

2. Route53とCloudFrontの連携設定

最終的なドメインアクセスをCloudFront経由にするための、重要なステップです。

2-1. Route53に間接的なオリジンドメインを設定

LightSailインスタンスを直接指すための、間接的なドメイン名(例: wp-dev.あなたのドメイン名)を設定します。

  1. Lightsailインスタンスの詳細画面から、IPv4とIPv6の両方の静的IPアドレスをコピーします。
  2. Route53の対象ホストゾーンにて、以下のレコードを作成します。
    • Aレコード: 間接ドメイン名に、コピーしたIPv4アドレスを設定。
    • AAAAレコード: 間接ドメイン名に、コピーしたIPv6アドレスを設定。

2-2. ACM (AWS Certificate Manager)で証明書を取得

HTTPS通信を実現するため、ユーザーがアクセスする最終ドメイン(例: www.あなたのドメイン名)のSSL/TLS証明書をACMで取得します。
この時、必ずバージニア北部リージョン (us-east-1)で取得してください。
CloudFrontで使用するためには、バージニア北部リージョンではないと使用できません!

2-3. CloudFrontディストリビューションの構築

CloudFrontでのCDN設定を行います。

  • オリジンドメイン: 間接的なドメイン名wp-dev.あなたのドメイン名)を設定します。
  • プロトコルポリシー: Redirect HTTP to HTTPS を選択。
  • 代替ドメイン名 (CNAME): 最終ドメイン名(例: www.あなたのドメイン名)を設定します。
  • カスタムSSL証明書: ACMで取得した証明書をセットします。

2-4. Route53にて最終ドメインをCloudFrontに紐付け

ユーザーがアクセスする最終ドメイン(例: あなたのドメイン名)を、CloudFrontにエイリアスとして紐付けます。

  1. Route53のホストゾーンに戻ります。
  2. 以下のエイリアスレコードを作成します。
    • Aレコード: エイリアスを有効化し、値としてCloudFront ディストリビューションのドメイン名(例: d1234abc.cloudfront.net)を指定。
    • AAAAレコード: エイリアスを有効化し、値としてCloudFront ディストリビューションのドメイン名(例: d1234abc.cloudfront.net)を指定。

3. LightSail側でのWordPress設定(SSL対応)

LightSailの管理機能を使って、WordPress自体に正しいドメイン情報SSLを認識させます。

  1. Lightsailインスタンスの詳細画面から、「WordPress ウェブサイトをセットアップする」セクションに進みます。
  2. 設定内容を確認・変更します。
    • ドメイン: 最終的に使用するドメイン(例: あなたのドメイン名)を設定します。
    • DNSゾーン: サードパーティ
    • 静的IP: 既に割り当たっているものが選択されていることを確認
    • SSL/TLS 証明書: 間接的なドメイン名wp-dev.あなたのドメイン名)を設定し、LightSail独自のSSL証明書を作成します。これはCloudFrontからLightSailへの通信を暗号化するために使用します。

4. WordPressとDBのクリーンアップ

デフォルトのDBユーザーではなく、専用のユーザーを設定し、セキュリティと運用性を高めます。

4-1. DBのrootユーザーのパスワードを確認

SSHでLightsailインスタンスに接続し、bitnamiユーザーのデフォルトパスワードを確認します。

cat /home/bitnami/bitnami_application_password

4-2. DBに接続し専用ユーザーを作成

MySQLにrootユーザーでログインし、WordPress専用のデータベースとユーザーを作成します。

sudo mysql -u root -p # パスワードは4-1で確認したものを入力

ログイン後、以下のSQLコマンドを順次実行します。

-- 1. 新しいデータベースを作成
CREATE DATABASE wordpress_db;

-- 2. WordPress専用のユーザーを作成し、任意の強力なパスワードを設定
CREATE USER 'wp_user'@'localhost' IDENTIFIED BY 'your_strong_password_here';
-- 3. 作成したデータベースに対して、ユーザーに全ての権限を付与
GRANT ALL PRIVILEGES ON wordpress_db.* TO 'wp_user'@'localhost';

-- 4. 権限を反映
FLUSH PRIVILEGES;

-- 5. MySQLから退出
EXIT;

4-3. WordPress設定ファイル(wp-config.php)の更新

データベースの接続情報を、新しく作成したユーザー情報に書き換えます。

sudo vi /opt/bitnami/wordpress/wp-config.php

以下の行を編集します。

// ... 中略 ...

// ** MySQL 設定 - この下にある二行を変更します ** //
/** WordPress のデータベース名 */
define('DB_NAME', 'wordpress_db'); // 新しいDB名

/** MySQL データベースのユーザー名 */
define('DB_USER', 'wp_user'); // 新しいユーザー名

/** MySQL データベースのパスワード */
define('DB_PASSWORD', 'your_strong_password_here'); // 新しいパスワード

// ... 以下略 ...
ファイルを保存して閉じます

5. 動作確認と最終調整

5-1.ブラウザで確認

最終ドメインにアクセスし、CloudFrontを経由してサイトが表示され、HTTPSで通信されていることを確認します。

5-2.WordPress管理画面

最終ドメインからログインし、「設定」->「一般」のURLが https://あなたのドメイン名 となっていることを確認します。

5-3.キャッシュプラグイン

CloudFrontのキャッシュ効率を最大化するため、キャッシュ系プラグイン(例: W3 Total Cache, WP Rocket)を導入し、CloudFrontを意識した設定(HTTPヘッダーの調整など)を行います。

5-4.セキュリティ対策

デフォルトのbitnamiユーザーを無効化し、新しい管理者ユーザーを作成するなど、運用上のセキュリティ対策を施します。

まとめ

この構成により、Lightsailの手軽な運用性はそのままに!
CloudFrontによる高いパフォーマンスとACMによる堅牢なセキュリティが追加されます。
本番運用に耐えうるモダンなWordPress環境として活用してみてください~。

最後に

明日のCYBIRD Advent Calendar 2025@pinkoroさんのApp Store Connect上のアプリ審査や配信状況の把握をSlack通知で効率化させた話です。
こちらもよろしければ是非!

0
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?