Ubuntu 22.04にNginxをインストールする方法

はじめに

Nginxは世界で最も人気のあるWebサーバーの1つであり、インターネット上の最大および最高トラフィックのサイトのホスティングを担当しています。軽量な選択肢であり、Webサーバーまたはリバースプロキシとして使用できます。

このガイドでは、Ubuntu 22.04サーバーにNginxをインストールし、ファイアウォールを調整し、Nginxプロセスを管理し、単一のサーバーから複数のドメインをホストするためのサーバーブロックを設定する方法について説明します。

GitHubからアプリケーションをデプロイするには、DigitalOcean App Platformを使用します。DigitalOceanにアプリのスケーリングを任せましょう。

前提条件

このガイドを開始する前に、サーバーに構成されたsudo特権を持つ通常の非ルートユーザーが必要です。Ubuntu 22.04の初期サーバー設定ガイドに従って、通常のユーザーアカウントの設定方法を学ぶことができます。

このチュートリアルの最後の手順を完了する前に、オプションでドメイン名を登録することをお勧めします。DigitalOceanでドメイン名を設定する詳細については、当社のIntroduction to DigitalOcean DNSを参照してください。

アカウントが利用可能な場合は、非ルートユーザーとしてログインして開始してください。

ステップ1 – Nginxのインストール

UbuntuのデフォルトリポジトリでNginxが利用可能なため、aptパッケージングシステムを使用してこれらのリポジトリからインストールすることが可能です。

今回がこのセッションでaptパッケージングシステムとの最初のやり取りであるため、ローカルパッケージインデックスを更新して最新のパッケージリストにアクセスできるようにします。その後、nginxをインストールできます:

  1. sudo apt update
  2. sudo apt install nginx

インストールを確認するよう求められた場合は、Yを押します。サービスの再起動を促された場合は、デフォルトを受け入れて継続するためにENTERを押します。aptはNginxとサーバーに必要な依存関係をインストールします。

ステップ2 – ファイアウォールの調整

Nginxをテストする前に、ファイアウォールソフトウェアを設定して、サービスへのアクセスを許可する必要があります。Nginxはインストール時にufwとして自己をサービスに登録するため、Nginxへのアクセスを許可するのは簡単です。

以下のコマンドを入力して、ufwがどのアプリケーション設定を扱えるかをリストします:

  1. sudo ufw app list

次のようなアプリケーションプロファイルのリストが表示されます:

Output
Available applications: Nginx Full Nginx HTTP Nginx HTTPS OpenSSH

出力に示されているように、Nginxには3つのプロファイルがあります:

  • Nginx Full:ポート80(通常の、暗号化されていないWebトラフィック)とポート443(TLS/SSLで暗号化されたトラフィック)を開きます。
  • Nginx HTTP:ポート80のみを開きます(通常の、暗号化されていないWebトラフィック)
  • Nginx HTTPS:ポート443のみを開きます(TLS/SSLで暗号化されたトラフィック)

構成したトラフィックを許可する最も制限の多いプロファイルを有効にすることが推奨されています。今の段階では、ポート80上のトラフィックのみを許可する必要があります。

次のコマンドを入力してこれを有効にできます:

  1. sudo ufw allow 'Nginx HTTP'

変更を確認するには、次のコマンドを入力してください:

  1. sudo ufw status

出力には、許可されているHTTPトラフィックが表示されます:

Output
Status: active To Action From -- ------ ---- OpenSSH ALLOW Anywhere Nginx HTTP ALLOW Anywhere OpenSSH (v6) ALLOW Anywhere (v6) Nginx HTTP (v6) ALLOW Anywhere (v6)

Step 3 – Webサーバーの確認

インストールプロセスの最後に、Ubuntu 22.04はNginxを起動します。Webサーバーはすでに稼働しているはずです。

systemd イニシャルシステムでサービスが実行されていることを確認するには、次のように入力します:

  1. systemctl status nginx
Output
● nginx.service - A high performance web server and a reverse proxy server Loaded: loaded (/lib/systemd/system/nginx.service; enabled; vendor preset: enabled) Active: active (running) since Fri 2022-03-01 16:08:19 UTC; 3 days ago Docs: man:nginx(8) Main PID: 2369 (nginx) Tasks: 2 (limit: 1153) Memory: 3.5M CGroup: /system.slice/nginx.service ├─2369 nginx: master process /usr/sbin/nginx -g daemon on; master_process on; └─2380 nginx: worker process

この出力で確認されたように、サービスは正常に起動しました。 ただし、これをテストする最良の方法は、実際に Nginx からページをリクエストすることです。

ソフトウェアが正常に実行されていることを確認するために、デフォルトの Nginx ランディングページにアクセスできます。サーバーの IP アドレスがわからない場合は、他の場所から受信した公開 IP アドレスを提供するicanhazip.comツールを使用して見つけることができます。

  1. curl -4 icanhazip.com

サーバーの IP アドレスを取得したら、ブラウザーのアドレスバーに入力します:

http://your_server_ip

デフォルトの Nginx ランディングページを受け取るはずです:

このページにいる場合、サーバーは正常に実行され、管理の準備ができています。

ステップ 4 – Nginx プロセスの管理

Web サーバーが起動しているので、いくつかの基本的な管理コマンドを見てみましょう。

Web サーバーを停止するには、次のように入力します:

  1. sudo systemctl stop nginx

停止されているときに Web サーバーを起動するには、次のように入力します:

  1. sudo systemctl start nginx

サービスを停止してから再起動するには、次のように入力します:

  1. sudo systemctl restart nginx

構成変更のみを行う場合、Nginx は接続を切断せずに再読み込みすることができる場合があります。 これを行うには、次のように入力します:

  1. sudo systemctl reload nginx

デフォルトでは、サーバーの起動時にNginxが自動的に起動するように設定されています。これが望ましくない場合は、次のように入力してこの動作を無効にできます。

  1. sudo systemctl disable nginx

ブート時にサービスを再度有効にするには、次のように入力します。

  1. sudo systemctl enable nginx

これで、基本的な管理コマンドを学び、サイトを複数のドメインでホストする準備が整いました。

Nginxウェブサーバーを使用する場合、サーバーブロック(Apacheの仮想ホストに類似)を使用して、構成の詳細をカプセル化し、単一のサーバーから複数のドメインをホストできます。ここではyour_domainというドメインを設定しますが、これを独自のドメイン名に置き換えてください

Ubuntu 22.04のNginxには、デフォルトで1つのサーバーブロックが有効になっており、ディレクトリ/var/www/htmlからドキュメントを提供するように構成されています。これは単一のサイトには適していますが、複数のサイトをホストする場合は扱いづらくなる場合があります。/var/www/htmlを修正する代わりに、クライアントのリクエストが他のサイトに一致しない場合はデフォルトのディレクトリとして/var/www/htmlを残したまま、/var/www内にyour_domainサイトのディレクトリ構造を作成しましょう。

次のように、必要な親ディレクトリを作成するために-pフラグを使用してyour_domainのディレクトリを作成します:

  1. sudo mkdir -p /var/www/your_domain/html

次に、ディレクトリの所有権を$USER環境変数に割り当てます:

  1. sudo chown -R $USER:$USER /var/www/your_domain/html

Webルートの権限は、umask値を変更していない場合は正しいはずです。デフォルトのファイル権限を設定するumask値を変更していない場合は、次のコマンドを入力して権限が正しいことを確認し、所有者にファイルの読み取り、書き込み、実行を許可し、グループとその他のユーザーには読み取りと実行の権限のみを付与します:

  1. sudo chmod -R 755 /var/www/your_domain

次に、nanoまたはお気に入りのエディタを使用して、サンプルのindex.htmlページを作成します:

  1. nano /var/www/your_domain/html/index.html

その中に、次のサンプルHTMLを追加します:

/var/www/your_domain/html/index.html
<html>
    <head>
        <title>Welcome to your_domain!</title>
    </head>
    <body>
        <h1>Success!  The your_domain server block is working!</h1>
    </body>
</html>

ファイルを保存して閉じるには、Ctrl+Xを押して終了し、保存するように求められたらY、その後Enterを押します。

Nginxがこのコンテンツを提供するためには、正しいディレクティブを持つサーバーブロックを作成する必要があります。デフォルトの設定ファイルを直接変更する代わりに、新しい設定ファイルを/etc/nginx/sites-available/your_domainに作成しましょう:

  1. sudo nano /etc/nginx/sites-available/your_domain

次に、デフォルトと類似していますが、新しいディレクトリとドメイン名に更新された設定ブロックを貼り付けます:

/etc/nginx/sites-available/your_domain
server {
        listen 80;
        listen [::]:80;

        root /var/www/your_domain/html;
        index index.html index.htm index.nginx-debian.html;

        server_name your_domain www.your_domain;

        location / {
                try_files $uri $uri/ =404;
        }
}

root構成を新しいディレクトリに、server_nameをドメイン名に更新したことに注意してください。

次に、ファイルを有効にするために、それをsites-enabledディレクトリへのリンクとして作成します。Nginxは起動時にこのディレクトリから読み込みます。

  1. sudo ln -s /etc/nginx/sites-available/your_domain /etc/nginx/sites-enabled/

注意: Nginxはシンボリックリンクまたはsymlinkと呼ばれる一般的な手法を使用して、サーバーブロックのうちどれが有効になっているかを追跡します。シンボリックリンクを作成することは、ディスク上にショートカットを作成することと同じです。つまり、後でsites-enabledディレクトリからショートカットを削除できますが、サーバーブロックをsites-availableに保持して有効にすることもできます。

現在、2つのサーバーブロックが有効になっており、listenおよびserver_nameディレクティブに基づいてリクエストに応答するように構成されています(これらのディレクティブがNginxでどのように処理されるかについてはこちらを参照してください):

  • your_domain: your_domainおよびwww.your_domainのリクエストに応答します。
  • default: 他の2つのブロックに一致しないポート80のすべてのリクエストに応答します。

追加のサーバー名を追加することによって発生する可能性のあるハッシュバケットメモリ問題を回避するために、/etc/nginx/nginx.confファイルの単一の値を調整する必要があります。ファイルを開きます:

  1. sudo nano /etc/nginx/nginx.conf

server_names_hash_bucket_sizeディレクティブを見つけ、#記号を削除して行のコメントを解除します。nanoを使用している場合は、CTRLキーとwキーを押してファイル内の単語をすばやく検索できます。

注意: コードの行をコメントアウトすること(通常、行の先頭に # を置くこと)は、実際に削除する必要なく、それらを無効にする別の方法です。多くの設定ファイルには、有効なコードとドキュメントの間を切り替えることで、有効または無効にできるように、複数のオプションがコメントアウトされています。

/etc/nginx/nginx.conf
...
http {
    ...
    server_names_hash_bucket_size 64;
    ...
}
...

ファイルを保存して閉じるときは、操作が完了したことを確認してください。

次に、Nginx ファイルに構文エラーがないかどうかをテストします:

  1. sudo nginx -t

問題がなければ、変更内容を有効にするために Nginx を再起動してください:

  1. sudo systemctl restart nginx

Nginx は今、ドメイン名を提供しています。これをテストするには、http://your_domain に移動すると、次のようなものが表示されるはずです:

ステップ 6 – 重要な Nginx ファイルとディレクトリに慣れる

今、Nginx サービス自体の管理方法を知っているので、重要なディレクトリとファイルをいくつか把握するために数分を割くべきです。

内容

  • /var/www/html:実際のウェブコンテンツは、デフォルトでは/var/www/htmlディレクトリから提供されます。これは、Nginxの設定ファイルを変更することで変更できます。

サーバーの構成

  • /etc/nginx:Nginxの設定ディレクトリ。すべてのNginxの設定ファイルはここにあります。
  • /etc/nginx/nginx.conf:メインのNginx設定ファイル。これを変更することで、Nginxのグローバル設定を変更できます。
  • /etc/nginx/sites-available/:サイトごとのサーバーブロックを保存できるディレクトリ。Nginxは、このディレクトリにある設定ファイルをsites-enabledディレクトリにリンクしない限り、このディレクトリにある設定ファイルを使用しません。通常、すべてのサーバーブロックの設定はこのディレクトリで行われ、その後他のディレクトリにリンクして有効にされます。
  • /etc/nginx/sites-enabled/:有効になったサイトごとのサーバーブロックが保存されるディレクトリ。通常、これらはsites-availableディレクトリにある設定ファイルにリンクして作成されます。
  • /etc/nginx/snippets:このディレクトリには、Nginxの設定の他の場所で含めることができる構成フラグメントが含まれています。繰り返し可能な構成セグメントは、スニペットにリファクタリングするのに適した候補です。

サーバーログ

  • /var/log/nginx/access.log:Nginxが別のように構成されていない限り、ウェブサーバーへのすべてのリクエストがこのログファイルに記録されます。
  • /var/log/nginx/error.log:Nginxのエラーがこのログに記録されます。

結論

ウェブサーバーがインストールされたので、より豊かな体験を作成するために使用するコンテンツの種類や技術のオプションがたくさんあります。

より完全なアプリケーションスタックを構築したい場合は、記事Ubuntu 22.04にLinux、Nginx、MySQL、PHP(LEMPスタック)をインストールする方法をチェックしてください。

無料のSSL証明書を使用してドメイン名のHTTPSを設定するには、Let’s Encryptを使用してNginxをセキュリティで保護する方法に進んでください。Ubuntu 22.04でLet’s EncryptでNginxをセキュアにする方法

Source:
https://www.digitalocean.com/community/tutorials/how-to-install-nginx-on-ubuntu-22-04