投稿者: SOSI

  • AWSにおけるWordPress環境構築および独自ドメイン・HTTPS(SSL)化 完了報告書

    1. 概要

    AWSのEC2(Amazon Linux)およびRDS(MySQL)を用いてWordPressのWebシステム環境を構築し、Elastic IP、Route 53を用いた独自ドメイン設定、およびCertbot(Let’s Encrypt)による全面HTTPS化(SSL化)までの一連のインフラ構築作業が完了いたしました。

    • 対象ドメイン: awsbookexample.click
    • 構成インフラ: AWS EC2 (Apache, PHP, Certbot) + RDS (MySQL) + Route 53
    • セキュリティ仕様: HTTP(80) ➔ HTTPS(443) 自動リダイレクト、SSL証明書自動更新有効化

    2. 実施工程(1〜5)

    1. AWSインフラ準備 & LAMP環境構築

    • EC2(Amazon Linux)インスタンスの起動およびWebサーバー(Apache)、PHP、MySQLクライアントパッケージの導入。
    • systemctl によるApacheの起動および自動起動設定の完了。
    • EC2ローカル環境にてPHP動作およびWebサーバー応答の正常確認。

    2. WordPressの導入 & RDSデータベース移行

    • 最新版WordPressの取得・展開および所有権/パーミッションの適切な設定。
    • データベースの可用性・保守性を確保するため、Amazon RDS(MySQL)インスタンスを作成。
    • EC2からRDSへのネットワーク疎通の確立(セキュリティグループの調整)と、ローカルDBからRDSへのデータ移行作業。
    • wp-config.php にRDSエンドポイントおよびDB認証情報を設定し、初期セットアップを完了。

    3. 固定IP設定 & 独自ドメイン(Route 53)紐付け

    • EC2インスタンスの再起動によるIPアドレス変動を防ぐため、Elastic IPを取得してEC2へバインド。
    • Route 53にてパブリックホストゾーン(awsbookexample.click)を作成し、Elastic IPを指定した Aレコード を追加。
    • DNSの浸透確認を行い、ドメイン名でのWebアクセスを疎通。

    4. Apache VirtualHost & SSL化準備

    • AWSセキュリティグループのインバウンドルールに HTTPS (443) を追加許可。
    • Apache用のSSLモジュール(mod_ssl)を導入し、SSL通信に必要な環境を整備。
    • Apacheの仮想ホスト設定ファイル(/etc/httpd/conf.d/awsbookexample.conf)を新規作成し、ServerName として対象ドメインを明記。

    5. CertbotによるSSL証明書取得 & HTTPS化完了

    • CertbotおよびApache用プラグインを用いて Let’s Encrypt よりSSL証明書を発行・適用。
    • HTTPアクセスを自動でHTTPSへと昇格させるリダイレクトルール(Redirect)を適用。
    • wp-config.php 内の WP_HOME および WP_SITEURLhttps:// へ書き換え。
    • ブラウザでの接続テストを実施し、正常な暗号化通信(🔒鍵マーク)とWebサイト全体の崩れがないことを確認。

    3. 構築過程で発生した課題・詰まった点(トラブルシューティング)

    構築の際、特に証明書発行(SSL化)のフェーズにおいていくつかの設定上の課題が発生しましたが、原因を特定し迅速に対処いたしました。

    ① Apache用SSLモジュール(mod_ssl)の未導入によるCertbotエラー

    • 課題: Certbot実行時にApache設定の読み込み段階でエラーが発生。
    • 原因: Amazon Linux環境において、標準状態ではApacheのSSL用モジュール(mod_ssl)がインストールされておらず、証明書の適用準備が整っていなかったため。
    • 対処: sudo dnf install -y mod_ssl により追加パッケージを導入し、設定を再読み込みすることで解決。

    ② VirtualHost(ServerName)未定義による証明書発行の失敗

    • 課題: Certbot実行時に Unable to find a virtual host listening on port 80... というエラーが表示され、証明書が発行できなかった。
    • 原因: Apache側でデフォルトのHTTP設定しか存在せず、CertbotがどのWebサイト(ドメイン)に対してSSL証明書を適用すべきか識別できなかったため。
    • 対処: /etc/httpd/conf.d/awsbookexample.conf を作成し、<VirtualHost *:80> 内に ServerName awsbookexample.clickDocumentRoot /var/www/html を明示的に記述・反映。これによりCertbotが正しくドメインを認知し発行に成功。

    ③ WHOIS情報に関する仕様確認

    • 課題: 取得したドメインのIPアドレスに対してWHOIS照会を行った際、所有者情報が表示されず不整合を懸念。
    • 原因: IPアドレスに対するWHOISはインフラ提供元(Amazon.com)の情報が返される点、およびRoute 53等のレジストラでは個人情報保護(Privacy Protection/GDPR対応)が標準適用されているため。
    • 対処: 仕様であることを確認し、正規のドメイン所有確認はAWSコンソール(Route 53 登録済みドメイン)にて管理を行う運用といたしました。

    4. 今回の構築における重要ポイント・成果

    1. 構成の分離によるスケーラビリティと可用性の確保
      • Webサーバー(EC2)とデータベース(RDS)を切り離した構成としたことで、今後のトラフィック増加時のスケーリングやDBのバックアップ・リカバリが容易な構成となっています。
    2. 完全なセキュリティ(HTTPS化)対応
      • トラフィックを全面的に暗号化(SSL化)し、HTTPアクセスを自動でHTTPSへ引き込むリダイレクト設定を行いました。また、Certbotのスケジューラーにより、今後はSSL証明書の更新もバックグラウンドで自動的に行われます。
    3. 適切なDNS・インフラ設定
      • Elastic IPによる固定化とRoute 53によるDNS管理を行うことで、インフラ変更に強く安定したドメイン運用基盤を確立しました。
  • 星のブログ

    AWS(EC2/RDS)WordPress環境構築 & 独自ドメインSSL化 作業ログ

    1.AWSインフラ準備 & LAMP環境構築

    2.WordPressの導入 & RDSデータベース移行

    3.固定IP設定 & 独自ドメイン(Route 53)紐付け

    4.Apache VirtualHost & SSL化準備

    5.CertbotによるSSL証明書取得 & HTTPS化完了