DS243100 岡田修門
本ドキュメントは、Amazon Web Services (AWS) の EC2 インスタンス上に Apache HTTP Server を導入し、Webサーバーとして完全に自律駆動させるまでの全インフラ構築プロセスを客観的に記録したものを参照しながら、別のインスタンスを構築した記録である。
最初に構築したサーバーはこちら。
起動時のインスタンス構成パラメータは以下の通りである。
名前 (Name): ALT AirChecker for Shonan Beach FM
インスタンス数: 1
AMI名: Amazon Linux 2023 kernel-6.18 AMI
インスタンス ID: i-0a80ca609a27eb285
アーキテクチャ: 64 ビット (x86)
デフォルトユーザー名: ec2-user
インスタンスタイプ: t3.micro(2 vCPU, 1 GiB メモリ / 無料利用枠対象)
ストレージ (ルートボリューム): 12 GiB(gp3, 3000 IOPS, 暗号化なし)
キーペア名: AirChecker for Shonan Beach FM
VPC: vpc-00c3fd9db7176625b
プライベート IP アドレス: 172.31.42.213
パブリック IP の自動割り当て: 有効化
セキュリティグループ: セキュリティグループを選択 (launch-wizard-1)
インバウンドルール:
0.0.0.0/0 / 任意のIPアドレス)HTTPS化の為にドメインとIPアドレスの固定化を行う。通常パブリック IP は再起動の度に再割り当てとなるが、Elastic IPを使用することで、サーバー再起動時もIPが変わらず、DNS設定やSSL/TLS証明書の自動更新エラーを防ぎます。
割り振られた IPv4 アドレス: 16.76.20.243
ネットワークインターフェース ID: eni-05f8f8817569d2011
ネットワークボーダーグループ: ap-northeast-1
AWS Route 53 を用いて、以下を設定する。
ドメインは既存のサブドメインを流用。
レコードタイプ: A
値: 16.76.20.243
エイリアス: いいえ
TTL (秒): 86,400
ルーティングポリシー: Simple
macのターミナルからSSHクライアントとダウンロードした秘密鍵を用いて、以下のコマンドでインスタンスへ接続を行う。
Bash
ssh -i "Downloads/AirChecker for Shonan Beach FM-2.pem" ec2-user@demo20260719.develop.azm.ne.jp
パッケージメタデータの更新確認およびシステム全体のパッケージを最新バージョンに引き上げる。
時間帯を調整する。
Bash
# パッケージメタデータの更新とキャッシュチェック
sudo dnf check-update
# システム全体のパッケージを最新バージョンに引き上げ
sudo dnf update -y
# OSのタイムゾーンをアジア/東京に設定
sudo timedatectl set-timezone Asia/Tokyo
# 時計が日本時間(現在11:41など)になったか確認
date
Amazon Linux 2023 の公式リポジトリより、コアパッケージである httpd(Apache)のインストールを実施する。
Bash
# Apache本体および関連依存パッケージのインストール
sudo dnf install -y httpd
インストール直後の Apache サービスは停止状態(Inactive)であるため、明示的にプロセスを起動し、その稼働ステータスを客観的に検証する。
Bash
# Apache サービス(httpd)の起動
sudo systemctl start httpd
# 稼働状態(ステータス)の確認
sudo systemctl status httpd
コマンド執行後、出力ログの Active: 項目が以下のように active (running) と緑色で表示され、Webサーバーとして正常にプロセスがメモリ上に展開されたことを示す。
Plaintext
● httpd.service - The Apache HTTP Server
Loaded: loaded (/usr/lib/systemd/system/httpd.service; enabled; preset: disabled)
Active: active (running) since Sat 2026-07-11 16:50:00 JST; 1min ago
EC2インスタンスの停止・再起動や予期せぬ瞬断が発生した場合でも、Webサーバーが人間の手を介さずに自動で復旧・常駐するように、OSのシステム管理(systemd)へ自動起動設定を登録する。
Bash
# OS起動時の自動有効化を永続化登録
sudo systemctl enable httpd
外部ブラウザからアクセスされた際に、コンテンツが正常に読み込めるよう、既定のWeb公開ルートディレクトリの権限を確認し、本ドキュメントを index.html として設置する。
URL
http://demo20260719.develop.azm.ne.jp/
Let’s Encrypt が公式に提供している自動化ツール Certbot を利用することで、証明書の取得から Apache の設定更新、さらには有効期限(90日間)の自動更新の設定までを実装する。
/etc/httpd/conf.d/ 配下に新しく設定ファイル(例: airchecker.conf)を作成します。
Bash
sudo vi /etc/httpd/conf.d/airchecker.conf
ファイルの中に以下の内容を記述して保存します。
※ ServerName に指定したドメイン名を正確に記述するのが一番のポイントです。
※ 先ほど変更した index.html を初期画面にする設定(DirectoryIndex)もここに綺麗に統合しておきます。
Plaintext
<VirtualHost *:80>
ServerName demo20260712.develop.azm.ne.jp
DocumentRoot /var/www/html
<Directory "/var/www/html">
AllowOverride None
Require all granted
DirectoryIndex index.html
</Directory>
</VirtualHost>
構文チェックを行い、Apache を再起動して設定を反映させます。
Bash
# 構文チェック(Syntax OK と出れば正常)
sudo httpd -t
# Apache の再起動
sudo systemctl restart httpd
下準備が整ったので、Let’s Encrypt のコマンドを実行します。
Bash
sudo dnf install python3-certbot-apache -y
sudo certbot --apache
Apache を再起動して確認する。
Bash
# Apache の再起動
sudo systemctl restart httpd
以下のURLを開く。
URL
https://demo20260719.develop.azm.ne.jp/