序章

Nginxは、世界で最も人気のあるWebサーバーの1つであり、インターネット上で最大かつ最もトラフィックの多いサイトのいくつかをホストする責任があります。 ほとんどの場合、Apacheよりもリソースに優しく、Webサーバーまたはリバースプロキシとして使用できます。

このガイドでは、Ubuntu 18.04サーバーにNginxをインストールする方法と、重要なNginxファイルとディレクトリについて学習します。

前提条件

このガイドを開始する前に、sudo権限を持つ通常の非rootユーザーと、サーバーに構成された基本的なファイアウォールが必要です。 Ubuntu 18.04 初期サーバーセットアップガイドに従って、通常のユーザーアカウントを構成する方法を学ぶことができます。

利用可能なアカウントがある場合は、root以外のユーザーとしてログインして開始します。

ステップ1-Nginxをインストールする

NginxはUbuntuのデフォルトのリポジトリで利用できるため、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暗号化トラフィック)のみを開きます

構成したトラフィックを引き続き許可する最も制限の厳しいプロファイルを有効にすることをお勧めします。 このガイドではまだサーバーの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)

適切なファイアウォールルールを追加したので、Webサーバーが実行されており、コンテンツを正しく提供できることを確認できます。

ステップ3–Webサーバーを確認する

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

systemd initシステムで、サービスが実行されていることを確認してください。

  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: en Active: active (running) since Fri 2021-10-01 21:36:15 UTC; 35s ago Docs: man:nginx(8) Main PID: 9039 (nginx) Tasks: 2 (limit: 1151) CGroup: /system.slice/nginx.service ├─9039 nginx: master process /usr/sbin/nginx -g daemon on; master_pro └─9041 nginx: worker process

この出力は、サービスが正常に開始されたことを示しています。 ただし、これをテストする最良の方法は、実際にNginxにページをリクエストすることです。

サーバーのIPアドレスに移動すると、デフォルトのNginxランディングページにアクセスして、ソフトウェアが正しく実行されていることを確認できます。 サーバーのIPアドレスがわからない場合は、いくつかの方法で取得できます。

サーバーのコマンドプロンプトで次のように入力してみてください。

  1. ip addr show eth0 | grep inet | awk '{ print $2; }' | sed 's/\/.*$//'

あなたは数行を受け取ります。 Webブラウザーでそれぞれを試して、機能するかどうかを確認できます。

別の方法として、次のコマンドを実行します。これにより、インターネット上の別の場所から識別されたパブリックIPアドレスが生成されます。

  1. curl -4 icanhazip.com

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

http://your_server_ip

デフォルトのNginxランディングページが表示されます。

Nginx default page

このページは、サーバーが正しく実行されていることを確認するために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が自動的に起動するようになりました。

Nginx Webサーバーを使用する場合、サーバーブロック(Apacheの仮想ホストと同様)を使用して、構成の詳細をカプセル化し、単一のサーバーから複数のドメインをホストできます。 your_domain というドメインを設定しますが、これを独自のドメイン名に置き換える必要があります。 DigitalOceanを使用したドメイン名の設定の詳細については、DigitalOceanDNSの概要を参照してください。

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

umaskの値を変更していない場合は、Webルートのアクセス許可は正しいはずですが、次のように入力することで確認できます。

  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>

終了したら、ファイルを保存して閉じます。 nanoを使用した場合は、CTRL + XYENTERの順に押すと終了できます。

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.com 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/

これで、2つのサーバーブロックが有効になり、listenおよびserver_nameディレクティブに基づいてリクエストに応答するように構成されました(Nginxがこれらのディレクティブを処理する方法について詳しくは、こちらをご覧ください)。

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

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

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

server_names_hash_bucket_sizeディレクティブを見つけ、#記号を削除して、行のコメントを解除します。

/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に移動すると、これをテストできます。次のように表示されます。

Nginx first server block

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

Nginxサービス自体を管理する方法がわかったので、いくつかの重要なディレクトリとファイルに慣れるために数分かかる必要があります。

コンテンツ

  • /var/www/html:実際のWebコンテンツは、デフォルトでは前に見たデフォルトの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が別の方法で構成されていない限り、Webサーバーへのすべてのリクエストはこのログファイルに記録されます。
  • /var/log/nginx/error.log:Nginxエラーはすべてこのログに記録されます。

結論

Webサーバーがインストールされたので、提供するコンテンツのタイプと、より豊かなエクスペリエンスを作成するために使用するテクノロジーについて、多くのオプションがあります。

より完全なアプリケーションスタックを構築したい場合は、 Ubuntu18.04でLEMPスタックを構成する方法に関するこの記事を確認してください。