前書き

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

このガイドでは、Debian 10サーバーにNginxをインストールする方法について説明します。

前提条件

このガイドを開始する前に、サーバーとアクティブなファイアウォールでsudo特権を設定した通常の非rootユーザーが必要です。 これらの設定方法については、https://www.digitalocean.com/community/tutorials/initial-server-setup-with-debian-10 [Debian 10の初期サーバーセットアップガイド]をご覧ください。

アカウントを使用できるようになったら、非rootユーザーとしてログインして開始します。

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

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

これは、このセッションでの `+ apt +`パッケージングシステムとの最初のやり取りであるため、最初にローカルパッケージインデックスを更新して、最新のパッケージ一覧にアクセスできるようにします。

sudo apt update

これで、 `+ nginx`をインストールできます。

sudo apt install nginx

インストールの確認を求められたら、「+ Enter」を押して続行します。 その後、 `+ apt +`はNginxと必要な依存関係をサーバーにインストールします。

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

Nginxをテストする前に、ファイアウォールソフトウェアを調整して、サービスへのアクセスを許可する必要があります。

次のように入力して、 `+ ufw +`が処理方法を認識しているアプリケーション構成を一覧表示します。

sudo ufw app list

アプリケーションプロファイルのリストを取得する必要があります。

OutputAvailable applications:
...
 Nginx Full
 Nginx HTTP
 Nginx HTTPS
...

ご覧のとおり、Nginxには3つのプロファイルがあります。

  • * Nginx Full *:このプロファイルは、ポート + 80 +(通常の暗号化されていないWebトラフィック)とポート + 443 +(TLS / SSL暗号化トラフィック)の両方を開きます

  • * Nginx HTTP *:このプロファイルはポート `+ 80 +`のみを開きます(通常の暗号化されていないWebトラフィック)

  • * Nginx HTTPS *:このプロファイルはポート + 443 +(TLS / SSL暗号化トラフィック)のみを開きます

設定したトラフィックを引き続き許可する最も制限の厳しいプロファイルを有効にすることをお勧めします。 このガイドではまだサーバーのSSLを設定していないため、ポート「80」でHTTPのトラフィックのみを許可する必要があります。

これを有効にするには、次のように入力します。

sudo ufw allow 'Nginx HTTP'

次のように入力して、変更を確認できます。

sudo ufw status

表示された出力で許可されたHTTPトラフィックが表示されるはずです。

OutputStatus: active

To                         Action      From
--                         ------      ----
OpenSSH                    ALLOW       Anywhere
Nginx HTTP                 ALLOW       Anywhere
OpenSSH (v6)               ALLOW       Anywhere (v6)
Nginx HTTP (v6)            ALLOW       Anywhere (v6)

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

インストールプロセスの最後に、Debian 10はNginxを起動します。 Webサーバーは既に稼働している必要があります。

次のように入力して、 + systemd + initシステムでサービスが実行されていることを確認できます。

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 Wed 2019-07-03 12:52:54 UTC; 4min 23s ago
    Docs: man:nginx(8)
Main PID: 3942 (nginx)
   Tasks: 3 (limit: 4719)
  Memory: 6.1M
  CGroup: /system.slice/nginx.service
          ├─3942 nginx: master process /usr/sbin/nginx -g daemon on; master_process on;
          ├─3943 nginx: worker process
          └─3944 nginx: worker process

上記を見るとわかるように、サービスは正常に開始されているようです。 ただし、これをテストする最良の方法は、実際にNginxからページをリクエストすることです。

デフォルトのNginxランディングページにアクセスして、サーバーのIPアドレスに移動することにより、ソフトウェアが適切に実行されていることを確認できます。 サーバーのIPアドレスがわからない場合は、サーバーのコマンドプロンプトで次のように入力してみてください。

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

数行戻ります。 Webブラウザでそれぞれ試して、動作するかどうかを確認できます。

サーバーのIPアドレスがわかったら、ブラウザのアドレスバーに入力します。

http://

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

image:https://assets.digitalocean.com/articles/nginx_1604/default_page.png [Nginxデフォルトページ]

このページは、サーバーが正常に実行されていることを示すためにNginxに含まれています。

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

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

Webサーバーを停止するには、次を入力します。

sudo systemctl stop nginx

Webサーバーが停止したときに起動するには、次のように入力します。

sudo systemctl start nginx

サービスを停止してから再び開始するには、次のように入力します。

sudo systemctl restart nginx

単に設定を変更するだけの場合、Nginxは接続を切断せずにリロードできます。 これを行うには、次を入力します。

sudo systemctl reload nginx

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

sudo systemctl disable nginx

ブート時に起動するサービスを再度有効にするには、次を入力できます。

sudo systemctl enable nginx

ステップ5 –サーバーブロックの設定

Nginx Webサーバーを使用する場合、server blocks(Apacheの仮想ホストに類似)を使用して、構成の詳細をカプセル化し、単一のサーバーで複数のドメインをホストできます。 * your_domain *というドメインを設定します。 DigitalOceanを使用したドメイン名の設定の詳細については、https://www.digitalocean.com/docs/networking/dns/ [DigitalOcean DNSの紹介]をご覧ください。

Debian 10のNginxには、デフォルトで有効になっているサーバーブロックが1つあり、 `+ / var / www / html `のディレクトリからドキュメントを提供するように設定されています。 これは単一のサイトではうまく機能しますが、複数のサイトをホストしている場合は管理不能になる可能性があります。 ` / var / www / html `を変更する代わりに、* your_domain * Webサイトの ` / var / www `内にディレクトリ構造を作成し、デフォルトのディレクトリとして ` / var / www / html +`を残します。クライアントリクエストが他のサイトと一致しない場合に提供されます。

`+ -p +`フラグを使用して必要な親ディレクトリを作成し、次のように* your_domain *のディレクトリを作成します。

sudo mkdir -p /var/www//html

次に、 `+ $ USER +`環境変数を使用してディレクトリの所有権を割り当てます。これは現在のシステムユーザーを参照する必要があります。

sudo chown -R $USER:$USER /var/www//html

`+ umask +`の値を変更していない場合、Webルートの権限は正しいはずですが、次のように入力して確認できます。

sudo chmod -R 755 /var/www/

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

nano /var/www//html/index.html

内部に、次のサンプルHTMLを追加します。

/var/www/your_domain/html/index.html

<html>
   <head>
       <title>Welcome to </title>
   </head>
   <body>
       <h1>Success! Your Nginx server is successfully configured for <em></em>. </h1>
<p>This is a sample page.</p>
   </body>
</html>

完了したら、ファイルを保存して閉じます。

Nginxがこのコンテンツを提供するには、カスタムWebルートを指す正しいディレクティブを使用してサーバーブロックを作成する必要があります。 デフォルトの設定ファイルを直接変更する代わりに、 `+ / etc / nginx / sites-available / +`で新しい設定ファイルを作成しましょう:

sudo nano /etc/nginx/sites-available/

次の構成ブロックに貼り付けます。これはデフォルトに似ていますが、新しいディレクトリとドメイン名に合わせて更新されています。

/ etc / nginx / sites-available / your_domain

server {
       listen 80;
       listen [::]:80;

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

       server_name  www.;

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

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

次に、Nginxが起動時に読み取る「+ sites-enabled +」ディレクトリ内にカスタム構成ファイルへのシンボリックリンクを作成して、このサーバーブロックを有効にします。

sudo ln -s /etc/nginx/sites-available/ /etc/nginx/sites-enabled/

2つのサーバーブロックが有効になり、 `+ listen `および ` server_name +`ディレクティブに基づいてリクエストに応答するように構成されました(Nginxがこれらのディレクティブを処理する方法の詳細については、https://www.digitalocean.com/community/tutorials/ nginx-server-and-location-block-selection-algorithmsの理解[こちら]):

  • “: “および `+ www。+`のリクエストに応答します。

  • ++:他の2つのブロックと一致しないポート `+ 80 +`のリクエストに応答します。

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

sudo nano /etc/nginx/nginx.conf

`+ server_names_hash_bucket_size `ディレクティブを見つけ、 `#+`シンボルを削除して行のコメントを外します:

/etc/nginx/nginx.conf

...
http {
   ...
   server_names_hash_bucket_size 64;
   ...
}
...

完了したら、ファイルを保存して閉じます。

次に、Nginxファイルに構文エラーがないことをテストして確認します。

sudo nginx -t

問題がなければ、次の出力が表示されます。

Outputnginx: the configuration file /etc/nginx/nginx.conf syntax is ok
nginx: configuration file /etc/nginx/nginx.conf test is successful

構成テストに合格したら、Nginxを再起動して変更を有効にします。

sudo systemctl restart nginx

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

image:https://assets.digitalocean.com/articles/nginx_debian10/nginx_serverblock.png [Nginxサーバーブロック]

ステップ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 +:Webサーバーへのすべてのリクエストは、Nginxが別の方法で設定されていない限り、このログファイルに記録されます。

  • + / var / log / nginx / error.log +:Nginxエラーはすべてこのログに記録されます。

結論

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