PR

【初心者向け】AWS EC2を使ったモダンなWebサーバー構築入門

記事内に広告が含まれています。

「AWSのEC2を使ってWebサーバーを立ち上げてみたいけれど、設定項目が多くて難しそう……」 「自分で作ったWebサイトやWebアプリを、レンタルサーバーではなくAWS上で動かしてみたい」

インフラやクラウドの知識は、Web制作やプログラミングを学ぶ上で必須のステップになりつつあります。しかし、AWSマネジメントコンソールを開いてみると、専門用語や設定項目の多さに圧倒されてしまう初心者は少なくありません。

そこで本記事では、AWSの無料利用枠を活用し、最新のAmazon Linux 2023環境でWebサーバー(Apache)を構築してブラウザでWebページを表示するまでの全手順を、初心者向けに分かりやすく解説します。

コマンドはすべてコピペで動作するようにまとめていますので、ぜひ一緒に手を動かしながら進めてみてください。

本格的にWeb開発・インフラを学びたい方へ バックエンド開発からサーバー構築まで、実務で役立つスキルを体系的に身につけたいならプログラミングスクールの活用もおすすめです。現場で求められるPHP・Linux・Webサーバーの知識を最短で習得したい方は、ぜひチェックしてみてください。

1. はじめに:EC2でWebサーバーを構築する全体像と前提

今回のゴールと作成する構成(EC2 + Apache)

本記事で作成するWebサーバーの全体像は以下のとおりです。

  1. Amazon EC2(仮想サーバー) を東京リージョンで1台立ち上げる
  2. セキュリティグループ(仮想ファイアウォール) でWeb通信用のポート(HTTP: 80)を開放する
  3. ブラウザからEC2に接続し、Webサーバーソフトである Apache(httpd) をインストール・起動する
  4. パブリックIPアドレス宛にブラウザからアクセスし、自作の HTMLページ を表示させる

従来のレンタルサーバーでは管理画面からボタン操作だけでサイトを公開できますが、AWS EC2を利用することで「サーバーの起動」「ファイアウォールの設定」「ミドルウェアの導入」というWebシステム本来の仕組みをハンズオンで理解できます。

AWSの無料利用枠と事前準備

今回のハンズオンは、AWS新規登録から12ヶ月間提供される AWS無料利用枠(Free Tier) の範囲内で実施できます。

  • インスタンスタイプ: t2.micro または t3.micro(月間750時間まで無料)
  • OS(AMI): Amazon Linux 2023 AMI(無料利用枠の対象)
  • ストレージ(EBS): 汎用SSD(gp3)8GB(30GBまで無料)

作業を始める前に、あらかじめ「AWSアカウント」の作成を完了させておいてください。AWSマネジメントコンソールにサインインし、画面右上のリージョン選択で 「東京(ap-northeast-1)」 が選ばれていることを確認したら準備完了です。

【STEP 1】EC2インスタンスを作成・起動する

AWSマネジメントコンソールから、仮想サーバーであるEC2インスタンスを作成・起動していきます。

まずは検索バーに「EC2」と入力し、EC2ダッシュボードを開きます。画面内にあるオレンジ色の「インスタンスを起動」ボタンをクリックしてください。

AMI(OS)の選択:Amazon Linux 2023

インスタンスの設定画面が開いたら、サーバーの基本情報を設定します。

  1. 名前とタグ:
    • サーバーの名前を自由に入力します(例: my-web-server)。
  2. アプリケーションおよび OS イメージ (Amazon マシンイメージ):
    • 「Amazon Linux」 を選択します。
    • AMIのドロップダウンで 「Amazon Linux 2023 AMI」(無料利用枠の対象)が選択されていることを確認します。
    • アーキテクチャは 「64 ビット (x86)」 のままで問題ありません。

Tips: 以前の主流だった「Amazon Linux 2」はパッケージ管理に yum を使用していましたが、最新の「Amazon Linux 2023」ではより高速な dnf コマンドが標準採用されています。

インスタンスタイプとキーペアの設定

続いて、サーバーのスペックと接続用の認証キーを設定します。

  1. インスタンスタイプ:
    • 無料利用枠の対象である t2.micro(または t3.micro)を選択します。
  2. キーペア (ログイン):
    • SSH接続時に使用する暗号鍵です。
    • まだキーペアを持っていない場合は、右側の 「新しいキーペアの作成」 をクリックします。
    • キーペア名: 任意の名前(例: ec2-key)を入力。
    • キーペアのタイプ: RSA を選択。
    • プライベートキーファイル形式: Mac/LinuxのターミナルやOpenSSHを使う場合は .pem を選択。
    • 「キーペアを作成」 をクリックすると、PCに鍵ファイル(例: ec2-key.pem)がダウンロードされます。このファイルは再発行できないため、大切に保管してください。

最重要!ネットワーク・セキュリティグループの設定(ポート80/22の開放)

初心者が「Webページが開かない」「サーバーに繋がらない」と最もつまずきやすいのが、このセキュリティグループ(仮想ファイアウォール)の設定です。

「ネットワーク設定」の項目で 「編集」(またはチェックボックス)を使い、以下の2つのルールを設定します。

プロトコルポート番号ソース(アクセス元)用途・説明
SSH22自分のIP(または 0.0.0.0/0)ターミナル等からサーバーへログインして作業するため
HTTP800.0.0.0/0(すべての場所)ブラウザから一般ユーザーがWebページを閲覧できるようにするため
  • 設定画面上に「インターネットからの HTTP トラフィックを許可」というチェックボックスがある場合は、そこにチェックを入れるだけでポート80が自動開放されます。
  • SSH(ポート22)はセキュリティを高めるため、可能であればソースを「自分のIP」にしておくのが推奨されます。

「ストレージを設定」はデフォルト(1x 8 GiB gp3)のままで問題ありません。

すべての設定を確認したら、画面右下の 「インスタンスを起動」 ボタンをクリックします。数分待つと、インスタンスのステータスが「実行中」に変わります。

【STEP 2】EC2インスタンスに接続する

EC2インスタンスが起動したら、サーバーの内部に入って初期設定やWebサーバーのインストールを行うために接続します。

接続方法にはいくつか種類がありますが、今回は最も手軽でトラブルが少ない 「EC2 Instance Connect(ブラウザ接続)」 をメインに解説します。

ブラウザから一発接続!「EC2 Instance Connect」の使い方

EC2 Instance Connectを使えば、専用のSSHクライアントソフトや複雑な鍵設定を行わずに、ブラウザ上の画面から1クリックでサーバーにログインできます。

  1. EC2ダッシュボードから、左メニューの「インスタンス」をクリックします。
  2. 先ほど作成したインスタンス(例: my-web-server)のチェックボックスにチェックを入れます。
  3. 画面右上にある 「接続」 ボタンをクリックします。
  4. 「EC2 Instance Connect」タブが選択されていることを確認します。
    • ユーザー名:ec2-user(デフォルトのままでOK)
  5. 画面右下の 「接続」 ボタンをクリックします。

新しいブラウザタブが開き、黒いコンソール画面(ターミナル)が表示されれば、EC2サーバーへの接続は成功です。

Plaintext

       __|  __|_  )
       _|  (     /   Amazon Linux 2023
      ___|\___|___|

[ec2-user@ip-172-31-xx-xx ~]$

このようにプロンプトが表示され、コマンドの入力待ち状態になります。

(参考)ターミナル / SSHコマンドで接続する場合

Macの「ターミナル」やWindowsの「PowerShell」「Git Bash」など、手元のパソコンからSSH接続したい場合は、STEP 1でダウンロードしたキーペア(.pemファイル)を使用します。

  1. ターミナルを開き、.pem ファイルが保存されているディレクトリに移動します。
  2. 秘密鍵のパーミッション(権限)を自分のみ読み取り可能に変更します(※この設定を忘れると接続エラーになります)。Bashchmod 400 ec2-key.pem
  3. 以下のSSHコマンドを実行してログインします。Bashssh -i "ec2-key.pem" ec2-user@[あなたのパブリックIPv4アドレス]
    • 初回接続時は Are you sure you want to continue connecting (yes/no/[fingerprint])? と聞かれるので、yes と入力してEnterキーを押します。

Linux環境の基本操作やコマンドラインの扱いに慣れておくと、Webサーバーの運用や保守、デプロイ自動化の理解がスムーズになります。

【STEP 3】Webサーバー(Apache)のインストールと起動

EC2サーバーにログインできたら、Webブラウザからのリクエストを受け付けるためのWebサーバーソフトウェア(今回は Apache)をインストールしていきます。

Webサーバーソフトには「Apache」と「Nginx」の2大巨頭がありますが、今回は初期設定がシンプルで歴史と実績が豊富なApache(パッケージ名: httpd)を採用します。

パッケージ更新とApacheのインストール(dnfコマンド)

まずはサーバー内のパッケージ情報を最新の状態に更新し、その後にApacheをインストールします。コンソール画面に以下のコマンドをコピー&ペーストしてEnterキーを押してください。

  1. パッケージリストの更新Bashsudo dnf update -y
    • sudo は管理者権限で実行するコマンド、-y はすべての確認に「yes」と自動回答するオプションです。
  2. Apache(httpd)のインストールBashsudo dnf install -y httpd
    • 処理が走り、画面の最後に Complete! と表示されればインストール完了です。

Apacheの起動と自動起動(systemctl)の有効化

インストールした直後は、Apacheはまだ停止状態になっています。サービスを起動し、さらに「サーバー再起動時にも自動で立ち上がる設定」を行います。

  1. Apacheの起動Bashsudo systemctl start httpd
  2. OS起動時の自動起動を有効化Bashsudo systemctl enable httpd
    • Created symlink ... と表示されれば、サーバーを再起動しても自動でApacheが立ち上がるようになります。
  3. Apacheの動作ステータス確認Bashsudo systemctl status httpd
    • 実行後、緑色の文字で Active: active (running) と表示されていれば、Webサーバーは正常に稼働しています。
    • ※ステータス画面からプロンプトに戻るには、キーボードの q キーを押してください。

Webサーバーとバックエンド(PHP)の連携について 静的なWebサーバーが立ち上がったら、次はPHPなどを導入してWordPressや動的なWebアプリケーションを動かしていくのが開発の標準的な流れです。インフラ構築からバックエンド開発までを一気通貫で学びたい方は、体系的な学習環境の活用も検討してみてください。

【STEP 4】ブラウザで表示確認&Webページを作成する

Apacheの起動が完了したら、実際にパソコンやスマートフォンのWebブラウザからEC2サーバーへアクセスし、Webページが表示されるか確認しましょう。

パブリックIPアドレスでアクセス確認する手順

まずは、アクセス先となるEC2サーバーの「パブリックIPv4アドレス」を確認します。

  1. AWSマネジメントコンソールの「EC2」→「インスタンス」画面を開きます。
  2. 起動したインスタンスをクリックして詳細パネルを開きます。
  3. 詳細タブの中にある 「パブリック IPv4 アドレス」(例: 54.xxx.xxx.xxx)の横にあるコピーアイコンをクリックします。
  4. Google ChromeやSafariなどの新しいブラウザタブを開き、アドレスバーに以下のように入力してEnterキーを押します。

Plaintext

http://[コピーしたパブリックIPv4アドレス]

注意!「https://」ではなく「http://」で開く 最近のブラウザは自動的に https:// で通信しようとする場合があります。現段階ではSSL設定を行っていないため、https:// でアクセスすると「接続できません」とタイムアウトしてしまいます。必ず http:// から始まるURL を手動で入力してください。

It works!」または「Amazon Linux 2023 Test Page」といったデフォルトのテスト画面が表示されれば、EC2上のWebサーバーが正常にインターネットへ公開されています。

オリジナルのHTMLページ(index.html)を配置してみる

デフォルトのテストページが表示されたら、次は自作のHTMLファイルを配置して、オリジナルのWebページを表示させてみましょう。

Apacheのデフォルトのドキュメントルート(公開ディレクトリ)は /var/www/html/ です。この中に index.html という名前でファイルを作成します。

EC2のコンソール画面(ターミナル)に戻り、以下のコマンドを実行してください。

echo "<h1>Hello from AWS EC2 Web Server!</h1><p>Amazon Linux 2023 + Apache is running successfully.</p>" | sudo tee /var/www/html/index.html
  1. テスト用のHTMLファイルを作成・書き込み
    • このコマンドで、/var/www/html/index.html に簡単なHTMLコードが書き込まれます。
  2. ブラウザを再読み込み(リロード)
    • 先ほど開いたブラウザのタブに戻り、ページを再読み込み(F5 または Ctrl/Cmd + R)します。
    • 画面が切り替わり、「Hello from AWS EC2 Web Server!」と表示されれば、Webサイトの公開テストは完了です。

作業後の後片付け:想定外の課金を防ぐインスタンスの停止・削除

ハンズオン作業が一通り完了し、検証用のサーバーを使い終わったら、インスタンスの停止または削除(終了)を行っておきましょう。

無料利用枠の範囲内であっても、放置したままにしておくと意図しないリソースの課金が発生するリスクがあります。

「停止(Stop)」と「終了(Terminate / 削除)」の違い

AWS EC2には、サーバーを片付ける際に「停止」と「終了」の2種類のアクションが用意されています。用途に合わせて使い分けることが大切です。

操作状態・データ保持課金の発生有無推奨されるケース
停止(Stop)サーバーの電源をOFFにする状態。ストレージ(EBS)のデータや設定内容はそのまま保持される。EC2コンピューティング料金は停止。ただし、EBSストレージ容量やパブリックIPv4に応じた費用が発生する場合がある。後日もう一度同じ設定・データを使って作業を再開したい場合
終了(Terminate)サーバーを完全に破棄(削除)する状態。関連付けられたEBSボリュームも一緒に削除される。以降の課金は完全にゼロになる(復旧は不可)。今回のテスト・練習が完了し、今後このサーバーを使う予定がない場合

注意点:

「停止」にしておけばEC2の稼働料金は止まりますが、ディスク(EBSストレージ)は保持され続けるため、無料枠のストレージ上限(30GB)を超えていると課金対象になります。練習で作っただけのサーバーであれば、「終了(Terminate)」して完全に削除するのが最も安全です。

インスタンスの終了(削除)手順

不要になったEC2インスタンスを完全に削除する手順は以下のとおりです。

  1. AWSマネジメントコンソールの「EC2」→「インスタンス」画面を開きます。
  2. 削除したいインスタンスのチェックボックスにチェックを入れます。
  3. 画面右上の 「インスタンスの状態」 ドロップダウンメニューをクリックします。
  4. メニューから 「インスタンスを終了」 を選択します。
  5. 確認ダイアログが表示されるので、「終了」 をクリックします。

ステータスが「シャットダウン中」から「終了済み(Terminated)」に変われば、サーバーの削除は完了です。

※「終了済み」になったインスタンスは、一定時間(数時間〜数日)コンソール一覧にグレーアウトして残りますが、すでに課金は停止していますので心配ありません。時間が経つと自動的に一覧からも消去されます。

次のステップ:さらに実践的なWebサーバーへステップアップ

EC2上でApacheを起動し、HTMLページを表示させることができたら、Webサーバー構築の第一歩はクリアです。

実務やポートフォリオで使える本格的なWebサイト・Webアプリケーションに仕上げるためには、ここからさらに以下のステップへ拡張していきます。

独自ドメインの紐付けとDNS設定

現在は

(http://54.xxx.xxx.xxx) というIPアドレス直打ちでアクセスしていますが、実際のWebサービスでは example.com のような独自ドメインでアクセスできるように設定します。

  1. お名前.comやAWSの「Route 53」などで独自ドメインを取得する
  2. EC2インスタンスに「Elastic IP(固定IPアドレス)」を割り当てる
  3. DNSレコード(Aレコード)にElastic IPを設定し、ドメインとサーバーを紐付ける

ドメイン名からIPアドレスを割り出す「DNS(ネームサーバー)」の仕組みを理解しておくと、ドメイン設定時のトラブルにもスムーズに対応できます。

常時SSL化(HTTPS対応)の導入

現在のWebサイトは、暗号化されていない「HTTP通信(ポート80)」です。安全なWebサイトとして運用するには、通信を暗号化する「HTTPS(ポート443)」への対応が欠かせません。

  • 無料で利用できる「Let’s Encrypt(Certbot)」をEC2に導入する
  • セキュリティグループに「HTTPS(ポート443)」のインバウンドルールを追加する
  • Apacheの設定でHTTPへのアクセスをHTTPSへ自動リダイレクトさせる

SSL/TLS証明書の発行手順やサーバーへの組み込み方については、以下の記事で詳しく解説しています。

自作WebアプリやWordPressのデプロイへ

静的なHTMLページの表示ができたら、次は動的なプログラム(バックエンド言語やデータベース)を導入してみましょう。

  • PHP / Node.js / Python / Ruby などの実行環境をインストールする
  • MySQL / MariaDB などのデータベース管理システムをセットアップする
  • 自作のWebアプリケーションやWordPressを配置し、本番公開する

実際のWeb開発現場では、サーバー構築とアプリケーションコードのデプロイをセットで行うスキルが求められます。

まとめ:AWS EC2でWebサーバーを立ち上げる最初の一歩を踏み出そう

本記事では、AWSの無料枠と最新のAmazon Linux 2023を活用し、EC2上にApache Webサーバーを構築する手順を解説しました。

  • インスタンス作成: 無料枠の t2.micro / t3.micro と Amazon Linux 2023 を選択
  • ファイアウォール設定: セキュリティグループで HTTP(ポート80)を確実に開放
  • Webサーバー導入: dnf コマンドで Apache をインストール&起動
  • 後片付け: 検証後はインスタンスを「終了(削除)」して不要な課金を防止

最初は難しく感じるAWSのインフラ設定も、ひとつひとつの役割を理解しながら手を動かせば、確実に形にすることができます。

インフラからバックエンド開発まで本気でマスターしたい方へ 「Webサーバーは立てられたけれど、PHPやデータベースと連携させたWebアプリケーション開発も学びたい」「独学のエラー解決に限界を感じている」という方は、プロのサポートを受けられるプログラミングスクールの活用が近道です。 基礎から実務レベルのWeb開発・サーバー構築スキルを効率的に身につけたい方は、ぜひチェックしてみてください。