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?

【AWS初心者向け】EC2インスタンスにNginxをインストールして動かすまでの手順

Posted at

AWS EC2インスタンスにNginxをインストールして、Webサーバーを立ち上げる手順を初心者向けに解説します。EC2を触り始めたばかりの方でも迷わずにセットアップできるよう、実際のコマンドとその出力結果、発生した問題と解決策を含めて説明します。

前提条件

  • AWS EC2インスタンスが起動済み(Amazon Linux 2を使用)
  • SSHで接続できる状態
  • 基本的なLinuxコマンドの知識

1. Nginxのインストール

まずはNginxをインストールしてみましょう。Amazon Linux 2では以下のようにインストールできます。

# DNFコマンドを試みるが、Amazon Linux 2では使えない
[ec2-user@ip-xx-xx-xx-xxx ~]$ sudo dnf install nginx
sudo: dnf: command not found

Amazon Linux 2では、dnfではなくyumまたはamazon-linux-extrasを使用します。今回はamazon-linux-extrasを使用してインストールしてみます。

# 権限なしで実行してみる
[ec2-user@ip-xx-xx-xx-xxx ~]$ amazon-linux-extras install nginx1
You lack permissions to write to system configuration.  /etc/yum.repos.d/amzn2-extras.repo

# sudoを付けて再実行
[ec2-user@ip-xx-xx-xx-xxx ~]$ sudo amazon-linux-extras install nginx1
Installing nginx

Point: Amazon Linux 2では、多くのパッケージはamazon-linux-extrasコマンドでインストールします。システム設定を変更するコマンドはsudoを付けて実行する必要があります。

2. Nginxの起動と状態確認

インストールが完了したら、Nginxを起動して状態を確認しましょう。

# サービスの状態確認(まだ起動していない)
[ec2-user@ip-xx-xx-xx-xxx ~]$ systemctl status nginx.service
● nginx.service - The nginx HTTP and reverse proxy server
   Loaded: loaded (/usr/lib/systemd/system/nginx.service; disabled; vendor preset: disabled)
   Active: inactive (dead)

# サービスの起動
[ec2-user@ip-xx-xx-xx-xxx ~]$ sudo systemctl start nginx.service 

起動したら、実際にポート80で待ち受けているか確認します。

# ポート80を使用しているプロセスの確認
[ec2-user@ip-xx-xx-xx-xxx ~]$ sudo lsof -i:80
COMMAND  PID  USER   FD   TYPE DEVICE SIZE/OFF NODE NAME
nginx   3399  root    6u  IPv4  21920      0t0  TCP *:http (LISTEN)
nginx   3399  root    7u  IPv6  21921      0t0  TCP *:http (LISTEN)
nginx   3400 nginx    6u  IPv4  21920      0t0  TCP *:http (LISTEN)
nginx   3400 nginx    7u  IPv6  21921      0t0  TCP *:http (LISTEN)

この出力から、Nginxが正常に起動していることが確認できます。

  • Nginxは通常、rootユーザーで実行されるマスタープロセスと、nginxユーザーで実行されるワーカープロセスで動作しています
  • IPv4とIPv6の両方でポート80(http)をリッスンしています

3. 自動起動の設定

サーバーを再起動してもNginxが自動的に起動するように設定します。

[ec2-user@ip-xx-xx-xx-xxx ~]$ sudo systemctl enable nginx.service
Created symlink from /etc/systemd/system/multi-user.target.wants/nginx.service to /usr/lib/systemd/system/nginx.service.

これにより、システム起動時にNginxが自動的に起動するようになります。

4. EC2セキュリティグループの設定

ここで重要なポイントです。Nginxが起動していても、EC2のセキュリティグループでポート80への接続を許可していないとウェブページにアクセスできません。

以下の手順でセキュリティグループを設定します:

  1. AWSマネジメントコンソールで、該当するEC2インスタンスを選択
  2. 「セキュリティ」タブをクリック
  3. セキュリティグループをクリック
  4. 「インバウンドルールの編集」をクリック
  5. 「ルールの追加」をクリック
  6. 以下の設定を行う:
    • タイプ: HTTP
    • ソース: マイIP(開発中・テスト中)または0.0.0.0/0(公開時)

image.png

Point: セキュリティの観点から、開発中はソースを「マイIP」のみに制限し、本番公開時に必要に応じて「0.0.0.0/0」(すべてのIPアドレス)に開放するのがベストプラクティスです。

5. 動作確認

ブラウザでEC2インスタンスのパブリックIPアドレスにアクセスします。
http://あなたのEC2のパブリックIP/

正常に設定できていれば、以下のようなNginxのデフォルトページが表示されます。

Welcome to nginx!
...

注意: 最初はアクセスできなくても、セキュリティグループの設定変更後、少し時間をおいて再度アクセスすると表示されることがあります。設定の反映には多少時間がかかる場合があります。

トラブルシューティング

1. Nginxが起動しない場合

sudo systemctl status nginx.service

エラーメッセージを確認し、必要に応じて以下のログを調査します。

sudo tail -f /var/log/nginx/error.log

2. ブラウザでアクセスできない場合

  • セキュリティグループの設定を確認
  • ファイアウォールの状態確認
sudo iptables -L
  • ポート80が使用可能か確認
sudo lsof -i:80

3. Welcome to Nginx! が表示されない場合

デフォルトのindex.htmlが存在するか確認します。

ls -l /usr/share/nginx/html/

次のステップ

Nginxが正常に動作することを確認できたら、以下のような作業に進むことができます:

  1. 自分のウェブコンテンツのデプロイ
  2. Nginxの設定カスタマイズ
  3. SSL/HTTPS設定
  4. ドメイン名の設定とDNS構成

まとめ

この記事では、EC2インスタンス(Amazon Linux 2)にNginxをインストールし、動作確認するまでの基本的な手順を解説しました。EC2初心者でも迷わずにWebサーバーを立ち上げられるよう、コマンドの実行結果や、発生しうる問題と解決策を含めました。

これでウェブアプリケーションの公開に向けた第一歩を踏み出すことができます。引き続き、自分のウェブサイトをデプロイして楽しんでください!


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?