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

紹介

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

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

デジタルオーシャンのアプリプラットフォームを使用して、アプリケーションの展開を簡素化します。DigitalOcean App Platform。数分でGitHubから直接展開できます。

前提条件

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

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

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

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

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

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

  1. sudo apt update
  2. sudo apt install nginx

手順を承認した後、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)

ステップ3 – Webサーバーの確認

インストールプロセスの最後に、Ubuntu 20.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 2020-04-20 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アドレスがわからない場合は、icanhazip.comツールを使用して見つけることができます。これにより、インターネット上の別の場所から受信した公開IPアドレスが表示されます:

  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 20.04のNginxには、デフォルトで1つのサーバーブロックが有効になっており、/var/www/htmlディレクトリからドキュメントを提供するように構成されています。これは単一のサイトではうまく機能しますが、複数のサイトをホストする場合は扱いにくくなる場合があります。 /var/www/htmlを変更する代わりに、/var/www内にyour_domainサイトのディレクトリ構造を作成し、クライアントリクエストが他のサイトと一致しない場合に提供されるデフォルトのディレクトリとして/var/www/htmlをそのままにします。

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

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

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

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

Webルートのパーミッションは、umask値を変更していない場合、正しいはずです。所有者にファイルを読み取り、書き込み、実行する権限を許可し、グループとその他には読み取りと実行の権限のみを許可するために、次のコマンドを入力してください:

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

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

  1. sudo 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をドメイン名に更新したことに注意してください。

次に、Nginxが起動時に読み込むsites-enabledディレクトリへのリンクを作成して、ファイルを有効にします。

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

注意: Nginxは、サーバーブロックが有効かどうかを追跡するために、シンボリックリンクまたはシンリンクと呼ばれる一般的な方法を使用します。シンボリックリンクを作成することは、ディスク上にショートカットを作成することと同じです。つまり、後で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を使用している場合は、ファイル内の単語を素早く検索するには、CTRLwを押します。

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

/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:実際のウェブコンテンツは、デフォルトでは前述のデフォルトのNginxページのみが含まれる/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 20.04にLinux、Nginx、MySQL、PHP(LEMPスタック)をインストールする方法」をチェックしてください。

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

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