Debian 10 に Nginx をインストールする方法

導入

Nginx は、すべてのサイズのウェブサイトやアプリケーションをホストするために使用される無料でオープンソースのウェブサーバーです。このソフトウェアは、メモリリソースへの影響が少ないこと、高いスケーラビリティを持っており、セキュアで予測可能なパフォーマンスを提供できるモジュラーでイベント駆動のアーキテクチャで知られています。単なるウェブサーバー以上に、Nginxはロードバランサー、HTTPキャッシュ、逆プロキシとしても機能します。

このガイドでは、Debian 10 サーバーに Nginx をインストールします。

前提条件

このガイドを開始する前に、サーバーに sudo 権限を持つ通常の非ルートユーザーが設定されている必要があります。また、アクティブなファイアウォールも必要です。Debian 10 の 初期サーバー設定ガイドに従ってこれを設定する方法について学ぶことができます。

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

Nginx は、Debian のデフォルトのソフトウェアリポジトリで利用可能であり、従来のパッケージ管理ツールからインストールすることが可能です。

まず、最新のアップストリームの変更を反映するためにローカルのパッケージインデックスを更新します:

  1. sudo apt update

次に、nginx パッケージをインストールします:

  1. sudo apt install nginx

インストールを確認するには、Y を入力し、その後 Enter を押して続行します。apt はその後、Nginx とサーバーに必要な依存関係をインストールします。

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

Nginx をテストする前に、デフォルトのウェブポートへの外部アクセスを許可するようにファイアウォールの設定を変更する必要があります。前提条件の手順に従った場合、サーバーへのアクセスを制限するために UFW ファイアウォールが構成されているはずです。

インストール中、Nginx は UFW に登録され、ファイアウォールを介して Nginx へのアクセスを有効または無効にするために使用できるいくつかのアプリケーションプロファイルを提供します。

次のコマンドを入力して ufw アプリケーションプロファイルをリストアップします:

  1. sudo ufw app list

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

Output
Available applications: ... Nginx Full Nginx HTTP Nginx HTTPS ...

ご覧のように、Nginx 用に3つのプロファイルが用意されています:

  • Nginx Full: このプロファイルはポート 80(通常の、暗号化されていないウェブトラフィック)およびポート 443(TLS/SSL 暗号化トラフィック)を開きます。
  • Nginx HTTP: このプロファイルはポート 80(通常の、暗号化されていないウェブトラフィック)を開きます。
  • Nginx HTTPS:このプロファイルは、ポート443(TLS/SSLで暗号化されたトラフィック)のみを開きます。

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

次のように入力してこれを有効にできます:

  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サーバーの確認

インストールプロセスの最後に、Debian 10は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 Tue 2022-06-28 18:42:58 UTC; 49s ago Docs: man:nginx(8) Main PID: 2729 (nginx) Tasks: 2 (limit: 1167) Memory: 7.2M CGroup: /system.slice/nginx.service ├─2729 nginx: master process /usr/sbin/nginx -g daemon on; master_process on; └─2730 nginx: worker process

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

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

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

数行が返されます。それぞれをWebブラウザーで試して動作するかどうかを確認できます。

サーバーのIPアドレスを取得したら、それをブラウザーのアドレスバーに入力してください。

http://your_server_ip

デフォルトのNginxランディングページがウェブブラウザーに表示されるはずです:

このページは、サーバーが正しく稼働していることを示すためにNginxと一緒に含まれています。

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

ウェブサーバーが稼働しているので、基本的な管理コマンドを確認できます。

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

  1. sudo systemctl stop nginx

サービスを停止した状態からウェブサーバーを起動するには、次のように入力します:

  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

ステップ5 – サーバーブロックの設定(オプション)

Nginxウェブサーバーを使用する場合、サーバーブロック(Apacheの仮想ホストに類似)を使用して構成の詳細をカプセル化し、単一のサーバーで複数のドメインをホストすることができます。次のコマンドでは、your_domainを独自のドメイン名に置き換えます。DigitalOceanでドメイン名を設定する方法について詳しくは、当社のDigitalOcean DNSの紹介を参照してください。

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

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

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

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

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

あなたのウェブルートの権限は、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! Your Nginx server is successfully configured for <em>your_domain</em>. </h1>
<p>This is a sample page.</p>
    </body>
</html>

ファイルを保存して閉じるには、nanoを開いた状態でCTRL + Xを押し、次にYを押し、最後にENTERを押します。

Nginxがこのコンテンツを提供するためには、カスタムのWebルートを指す正しいディレクティブを持つサーバーブロックを作成する必要があります。デフォルトの設定ファイルを直接変更する代わりに、/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をご注意ください。実際のドメイン名でyour_domainを置き換えてください。

次に、このサーバーブロックを有効にするために、sites-enabledディレクトリ内にカスタムの設定ファイルへのシンボリックリンクを作成してください。Nginxは起動時にこれを読み込みます:

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

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

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

潜在的なハッシュバケットメモリの問題を回避するために、構成に追加のサーバー名を追加するときに必要な単一の値を/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

問題がない場合、以下の出力が表示されます:

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

構成テストが合格したら、変更を有効にするためにNginxを再起動します:

  1. sudo systemctl restart nginx

Nginxは今、ドメイン名を提供しています。これをテストするには、http://your_domainに移動します。 /var/www/your_domain/html/index.htmlフォルダーに作成したカスタムHTMLがここにレンダリングされます:

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

今、Nginxサービスそのものを管理する方法を知っているので、いくつかの重要なディレクトリとファイルに慣れる時間を取ることができます。

コンテンツ

  • /var/www/html:実際のウェブコンテンツは、デフォルトでは/var/www/htmlディレクトリにあるデフォルトのNginxページのみで構成されています。これは、Nginxの構成ファイルを変更することで変更できます。

サーバーの構成

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

サーバーログ

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

結論

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

Source:
https://www.digitalocean.com/community/tutorials/how-to-install-nginx-on-debian-10