導入
Nginx は、すべてのサイズのウェブサイトやアプリケーションをホストするために使用される無料でオープンソースのウェブサーバーです。このソフトウェアは、メモリリソースへの影響が少ないこと、高いスケーラビリティを持っており、セキュアで予測可能なパフォーマンスを提供できるモジュラーでイベント駆動のアーキテクチャで知られています。単なるウェブサーバー以上に、Nginxはロードバランサー、HTTPキャッシュ、逆プロキシとしても機能します。
このガイドでは、Debian 10 サーバーに Nginx をインストールします。
前提条件
このガイドを開始する前に、サーバーに sudo 権限を持つ通常の非ルートユーザーが設定されている必要があります。また、アクティブなファイアウォールも必要です。Debian 10 の 初期サーバー設定ガイドに従ってこれを設定する方法について学ぶことができます。
ステップ 1 – Nginx のインストール
Nginx は、Debian のデフォルトのソフトウェアリポジトリで利用可能であり、従来のパッケージ管理ツールからインストールすることが可能です。
まず、最新のアップストリームの変更を反映するためにローカルのパッケージインデックスを更新します:
次に、nginx
パッケージをインストールします:
インストールを確認するには、Y
を入力し、その後 Enter
を押して続行します。apt
はその後、Nginx とサーバーに必要な依存関係をインストールします。
ステップ2 – ファイアウォールの調整
Nginx をテストする前に、デフォルトのウェブポートへの外部アクセスを許可するようにファイアウォールの設定を変更する必要があります。前提条件の手順に従った場合、サーバーへのアクセスを制限するために UFW ファイアウォールが構成されているはずです。
インストール中、Nginx は UFW に登録され、ファイアウォールを介して Nginx へのアクセスを有効または無効にするために使用できるいくつかのアプリケーションプロファイルを提供します。
次のコマンドを入力して ufw
アプリケーションプロファイルをリストアップします:
アプリケーションプロファイルのリストが表示されます:
OutputAvailable 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トラフィックのみを許可する必要があります。
次のように入力してこれを有効にできます:
変更を確認するには、次のように入力します:
出力に表示されるのは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
イニシャライザシステムを使用して確認できます。次のように入力してください:
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アドレスがわからない場合は、次のコマンドをサーバーのコマンドプロンプトで入力できます:
数行が返されます。それぞれをWebブラウザーで試して動作するかどうかを確認できます。
サーバーのIPアドレスを取得したら、それをブラウザーのアドレスバーに入力してください。
http://your_server_ip
デフォルトのNginxランディングページがウェブブラウザーに表示されるはずです:
このページは、サーバーが正しく稼働していることを示すためにNginxと一緒に含まれています。
ステップ4 – Nginxプロセスの管理
ウェブサーバーが稼働しているので、基本的な管理コマンドを確認できます。
ウェブサーバーを停止するには、次のように入力します:
サービスを停止した状態からウェブサーバーを起動するには、次のように入力します:
サービスを停止してから再起動するには、次のように入力します:
構成の変更を行っている場合、Nginxは接続を切断せずに再読み込みできることがよくあります。これを行うには、次のように入力します:
デフォルトでは、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
のディレクトリを作成します:
次に、$USER
環境変数を使用してディレクトリの所有権を割り当てます。これは現在のシステムユーザーを参照する必要があります:
あなたのウェブルートの権限は、umask
値を変更していない場合、正しくなるはずですが、次のように入力して確認できます:
次に、nano
または好きなテキストエディタを使用して、サンプルのindex.html
ページを作成します:
以下のサンプル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
に新しいファイルを作成してください:
次の設定ブロックを追加してください。これはデフォルトと類似していますが、新しいディレクトリとドメイン名に更新されています:
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は起動時にこれを読み込みます:
サーバーには現在、listen
およびserver_name
ディレクティブに基づいてリクエストに応答するために構成された2つのサーバーブロックが有効になっています(これらのディレクティブのNginxがどのように処理されるかについてはこちらで詳細を読むことができます):
your_domain
:your_domain
とwww.your_domain
のリクエストに応答します。default
: 他の2つのブロックに一致しないポート80
のリクエストに応答します。
潜在的なハッシュバケットメモリの問題を回避するために、構成に追加のサーバー名を追加するときに必要な単一の値を/etc/nginx/nginx.conf
ファイルで調整する必要があります。ファイルを開きます:
server_names_hash_bucket_size
ディレクティブを見つけ、#
シンボルを削除して行をコメント解除します:
...
http {
...
server_names_hash_bucket_size 64;
...
}
...
編集が完了したら、ファイルを保存して閉じます。
次に、Nginxファイルに構文エラーがないことを確認するためにテストします:
問題がない場合、以下の出力が表示されます:
Outputnginx: the configuration file /etc/nginx/nginx.conf syntax is ok
nginx: configuration file /etc/nginx/nginx.conf test is successful
構成テストが合格したら、変更を有効にするために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