想定読者
- AWS初心者の方
- EC2を作ったあと、何をすればWebサーバーとして見えるのか分からない方
- SSH接続やセキュリティグループでつまずいている方
所要時間
- 30分〜1時間
導入
AWSのEC2でWebサーバーを立てようとすると、インスタンスを作るだけでは終わりません。
実際にやってみると、「SSHでは入れたのにブラウザで見えない」、「Nginxを入れたのに表示されない」、「公開IPが変わって混乱する」 といったところで詰まりやすいです。
私も最初は「EC2を作ればすぐ見えるはず」と思って進めましたが、実際にはセキュリティグループの設定とWebサーバーの起動、そしてアクセス先IPの確認が必要でした。EC2のセキュリティグループはインスタンスへの通信を制御する仕組みで、HTTPを許可していないとブラウザでは表示できません。Public IPv4 が付与されているかも確認ポイントです。
この記事でできること
- EC2インスタンスを起動する
- EC2へ接続する
- Nginxをインストールする
- Nginxを起動して自動起動設定する
- ブラウザからEC2上のWebサーバーを確認する
- よくある詰まりポイントを回避する
前提条件
- AWSアカウントを持っている
- EC2を利用できる状態になっている
- リージョンは任意
- OSは Amazon Linux 2023
- 接続方法は EC2 Instance Connect または SSH
- 今回は独自ドメインやSSL化までは扱わず、まずは HTTPで表示確認するところまで
全体の流れ
- EC2インスタンスを作成する
- セキュリティグループでSSH/HTTPを許可する
- EC2へ接続する
- Nginxをインストールする
- Nginxを起動する
- ブラウザでPublic IPv4へアクセスする
- 表示されない場合は原因を切り分ける
手順
ステップ1:EC2インスタンスを作成する
やること
AWSマネジメントコンソールでEC2インスタンスを作成します。
操作手順
- AWSマネジメントコンソールを開く
EC2を開く- 左メニューから
インスタンスを開く インスタンスを起動をクリック- 以下のように設定する
例
- 名前:
web-server-test - Amazon マシンイメージ:
Amazon Linux 2023 - インスタンスタイプ:
t2.microまたはt3.micro - キーペア: 既存のものを選ぶ、または新規作成
- ネットワーク設定:
- 自動割り当てパブリックIP: 有効
- セキュリティグループを作成
- SSH(22): 自分のIPから許可
- HTTP(80):
0.0.0.0/0から許可
インスタンスを起動をクリック
なぜやるか
EC2は仮想サーバーです。ここでLinuxサーバー本体を用意します。
また、パブリックIPがないとインターネット側からアクセスできません。EC2の Public IPv4 はインスタンス詳細の Networking タブでも確認できます。
詰まりやすいポイント
- HTTP(80) を開け忘れる
これがかなり多いです。SSHで入れるのにブラウザで見えないときは、まずここを疑います。 - 自動割り当てパブリックIPを無効のまま作る
この場合、外部ブラウザから見えません。 - デフォルトセキュリティグループのまま進める
デフォルト設定ではSSHが開いていないことがあります。AWS公式でも、デフォルトセキュリティグループは SSH を受け付けないと案内されています。
ステップ2:インスタンスが起動したことを確認する
やること
インスタンス一覧から、状態が起動済みになっているか確認します。
操作手順
- EC2の
インスタンス一覧を開く - 作成したインスタンスを選択する
インスタンスの状態がrunningになっていることを確認するステータスチェックが2/2 チェックに合格になるまで待つパブリック IPv4 アドレスを控える
なぜやるか
起動直後はまだOS側の準備が終わっていないことがあります。
この状態で接続しようとすると、SSH接続やEC2 Instance Connectがうまくいかないことがあります。
詰まりやすいポイント
- インスタンス作成直後にすぐ接続しようとして失敗する
- Public IPv4 を見ずに Private IP へアクセスしようとする
ステップ3:EC2へ接続する
やること
EC2 Instance Connect か SSH でサーバーへログインします。AWS公式では、EC2 Instance Connect を使った接続方法も案内されています。
方法A:EC2 Instance Connect を使う
- インスタンス一覧から対象インスタンスを選択
接続をクリックEC2 Instance Connectタブを開く接続をクリック
方法B:ローカルPCからSSH接続する
キーペアを使って接続します。
chmod 400 your-key.pem
ssh -i your-key.pem ec2-user@<パブリックIPv4アドレス>
なぜやるか
Webサーバーソフトのインストールや起動は、サーバーへログインして実行する必要があるためです。
詰まりやすいポイント
.pemファイルの権限が緩すぎてSSH接続できない- ユーザー名を間違える
Amazon Linux 2023 なら通常はec2-userを使います - SSH(22) を自分のIPから許可していない
- インスタンスにPublic IPv4がない
体験ベース補足
最初は「インスタンス作成までできたから半分終わり」と思いがちですが、
実際にはここで接続できないと何も始まらないです。
私も最初はサーバーの設定ミスだと思っていましたが、原因がセキュリティグループだった、という流れになりやすいです。
ステップ4:パッケージを更新する
やること
ログイン後、パッケージ情報を更新します。Amazon Linux 2023 の標準パッケージ管理ツールは dnf です。
実行コマンド
sudo dnf update -y
なぜやるか
古いパッケージ情報のままだと、インストール時に不整合が出ることがあります。
先に更新しておくと、後の作業で詰まりにくくなります。
詰まりやすいポイント
- 古い記事を見て
yumを打つ
Amazon Linux 2 ではyumが一般的でしたが、Amazon Linux 2023 ではdnfが標準です。
ステップ5:Nginxをインストールする
やること
WebサーバーソフトとしてNginxを入れます。Amazon Linux 2023 のパッケージ一覧には NGINX 系パッケージが含まれています。
実行コマンド
sudo dnf install -y nginx
インストール確認
nginx -v
なぜやるか
EC2はただのLinuxサーバーなので、そのままではHTMLを配信できません。
Nginxを入れることで、ブラウザからアクセスされたときにWebページを返せるようになります。
詰まりやすいポイント
- Nginxを入れただけで公開されたと思ってしまう
実際にはインストール後に起動が必要です - パッケージの更新前に進めて依存関係で戸惑う
ステップ6:Nginxを起動して自動起動を設定する
やること
Nginxを起動し、EC2再起動後も自動で立ち上がるようにします。
実行コマンド
sudo systemctl start nginx
sudo systemctl enable nginx
sudo systemctl status nginx
status の確認ポイント
active (running) と表示されていればOKです。
なぜやるか
インストールしただけではNginxは動いていません。start で起動し、enable で再起動後も有効にします。
詰まりやすいポイント
systemctl status nginxを見ずに進める- エラーが出ているのにブラウザ確認へ進んでしまう
体験ベース補足
ここは地味ですが重要です。
「インストールしたのに見えない」と感じたとき、実際はサービスが起動していないだけというのはかなりありがちです。
ステップ7:テストページを置く
やること
ちゃんと自分のサーバーが応答しているか分かるように、簡単なHTMLを置きます。
実行コマンド
echo '<h1>EC2 Web Server OK</h1><p>Nginx is running.</p>' | sudo tee /usr/share/nginx/html/index.html
なぜやるか
初期ページのままだと、設定が反映されたのか判断しにくいことがあります。
自分で書いた文字が見えれば、今アクセスしているのが自分のEC2 だと分かります。
詰まりやすいポイント
- ファイルの置き場所を間違える
- 別ディレクトリに保存してしまい、表示が変わらない
ステップ8:ブラウザで確認する
やること
EC2のPublic IPv4へブラウザでアクセスします。
アクセス例
http://<パブリックIPv4アドレス>/
なぜやるか
ここで外部から実際にページが見えれば、Webサーバーの構築は成功です。
詰まりやすいポイント
https://で開いてしまう
今回はSSL設定をしていないので http:// で確認します- セキュリティグループでHTTP(80)を開けていない
- 間違ったIPへアクセスしている
- Nginxが起動していない
実行結果(成功状態)
以下の状態になっていれば成功です。
- EC2に接続できる
sudo systemctl status nginxでactive (running)と表示される- ブラウザで
http://パブリックIPv4/を開くと、作成したHTMLが表示される
表示確認に使うIPは、EC2コンソールのインスタンス詳細から確認できます。Public IPv4 はインスタンス停止・再起動の扱いによって変わることがあるため、接続先を毎回確認するのが安全です。
よくあるエラーと対処法
1. ブラウザで開いても表示されない
原因
- セキュリティグループでHTTP(80)が許可されていない
- Nginxが起動していない
- Public IPv4 ではなく Private IP を見ている
対処
以下を順番に確認します。
sudo systemctl status nginx
EC2コンソールでも確認します。
- セキュリティグループのインバウンドルールに
HTTP / TCP / 80 / 0.0.0.0/0 - アクセス先が
Public IPv4 - URLが
http://になっている
EC2のセキュリティグループはインスタンスへの通信を制御する仕組みなので、HTTPルールがないとWebアクセスは通りません。
2. SSH接続できない
原因
- SSH(22)が自分のIPから許可されていない
- キーペアを間違えた
.pemの権限が適切でない- インスタンスがまだ起動準備中
対処
- セキュリティグループに
SSH / TCP / 22 / 自分のIP - キーペア名がインスタンス作成時と一致しているか確認
- 以下を実行
chmod 400 your-key.pem
- EC2のステータスチェック完了後に再接続
AWS公式のトラブルシューティングでも、SSH接続不可のときはまずセキュリティグループのSSH許可を確認するよう案内されています。
3. yum コマンドの記事を見ていて混乱する
原因
Amazon Linux 2 と Amazon Linux 2023 の情報が混ざっている
対処
Amazon Linux 2023 では dnf を使います。
sudo dnf update -y
sudo dnf install -y nginx
Amazon Linux 2023 の標準パッケージ管理ツールは dnf です。
4. EC2 Instance Connect が使えない
原因
- 接続条件が満たせていない
- ネットワークやインスタンス側設定が不足している
対処
まずはEC2コンソールの 接続 から EC2 Instance Connect を試し、難しい場合は通常のSSH接続へ切り替えます。AWS公式ではEC2 Instance Connectの接続方法と前提条件が整理されています。
まとめ
EC2でWebサーバーを立てる作業は、流れだけ見ると単純です。
- インスタンスを作る
- 接続する
- Nginxを入れる
- 起動する
- ブラウザで確認する
ただ、実際に詰まりやすいのは次の3点です。
- セキュリティグループでHTTP/SSHを開けること
- Public IPv4 を使ってアクセスすること
- Nginxをインストールしたあとに起動すること
特に初心者のうちは、
「EC2を作った = すぐ公開される」ではない
というところで引っかかりやすいです。
私も最初はサーバーソフトの問題だと思って遠回りしましたが、実際には通信許可の設定と確認不足が原因になりやすいと分かりました。
このあたりを順番に確認すれば、EC2でのWebサーバー構築は十分再現できます。

コメントを残す