Debian10にNginxをインストールする方法
序章
Nginx は、あらゆるサイズのWebサイトとアプリケーションをホストするために使用される無料のオープンソースWebサーバーです。 このソフトウェアは、メモリリソースへの影響が少なく、スケーラビリティが高く、安全で予測可能なパフォーマンスを提供できるモジュール式のイベント駆動型アーキテクチャで知られています。 Nginxは、単なるWebサーバーではなく、ロードバランサー、HTTPキャッシュ、およびリバースプロキシとしても機能します。
このガイドでは、Debian10サーバーにNginxをインストールします。
前提条件
このガイドを開始する前に、サーバーにsudo権限を持つ通常の非rootユーザーが設定されている必要があります。 また、アクティブなファイアウォールが必要です。 これを設定する方法については、Debian10の初期サーバー設定ガイドに従ってください。
ステップ1-Nginxをインストールする
NginxはDebianのデフォルトのソフトウェアリポジトリで利用可能であり、従来のパッケージ管理ツールからインストールすることができます。
まず、ローカルパッケージインデックスを更新して、最新のアップストリームの変更を反映します。
- sudo apt update
次に、をインストールします nginx
パッケージ:
- sudo apt install nginx
インストールを確認し、次のように入力します Y
、次にを押します Enter
続行します。 apt
次に、Nginxと必要な依存関係をサーバーにインストールします。
ステップ2–ファイアウォールの調整
Nginxをテストする前に、ファイアウォール設定を変更して、デフォルトのWebポートへの外部アクセスを許可する必要があります。 前提条件の指示に従ったと仮定すると、サーバーへのアクセスを制限するようにUFWファイアウォールを構成する必要があります。
インストール中に、NginxはUFWに登録して、ファイアウォールを介した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暗号化トラフィック)
構成したトラフィックを引き続き許可する最も制限の厳しいプロファイルを有効にすることをお勧めします。 このガイドではまだサーバーのTLS/SSLを構成していないため、ポートでHTTPのトラフィックのみを許可する必要があります。 80
.
これを有効にするには、次のように入力します。
- 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サーバーを確認する
インストールプロセスの最後に、Debian10はNginxを起動します。 Webサーバーはすでに稼働しているはずです。
で確認できます systemd
次のように入力して、サービスが実行されていることを確認するinitsystem。
- 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にページをリクエストすることです。
サーバーのIPアドレスに移動すると、デフォルトのNginxランディングページにアクセスして、ソフトウェアが正しく実行されていることを確認できます。 サーバーのIPアドレスがわからない場合は、サーバーのコマンドプロンプトで次のように入力できます。
- ip addr show eth0 | grep inet | awk '{ print $2; }' | sed 's/\/.*$//'
数行戻ります。 Webブラウザーでそれぞれを試して、機能するかどうかを確認できます。
サーバーのIPアドレスを取得したら、それをブラウザのアドレスバーに入力します。
http://your_server_ip
デフォルトのNginxランディングページがWebブラウザに表示されます。
このページは、サーバーが正しく実行されていることを示すために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サーバーを使用する場合、サーバーブロック(Apacheの仮想ホストと同様)を使用して、構成の詳細をカプセル化し、単一のサーバーで複数のドメインをホストできます。 次のコマンドで、 your_domain
あなた自身のドメイン名で。 DigitalOceanを使用したドメイン名の設定の詳細については、 DigitalOceanDNSの概要を参照してください。
Debian 10のNginxでは、デフォルトで1つのサーバーブロックが有効になっており、次のディレクトリからドキュメントを提供するように構成されています。 /var/www/html
. これは単一のサイトではうまく機能しますが、複数のサイトをホストしている場合は管理できなくなる可能性があります。 変更する代わりに /var/www/html
、内にディレクトリ構造を作成します /var/www
のために your_domain
ウェブサイト、去る /var/www/html
クライアント要求が他のサイトと一致しない場合に提供されるデフォルトのディレクトリとして配置されます。
のディレクトリを作成します your_domain
次のように、 -p
必要な親ディレクトリを作成するためのフラグ:
- sudo mkdir -p /var/www/your_domain/html
次に、ディレクトリの所有権を $USER
現在のシステムユーザーを参照する必要がある環境変数:
- sudo chown -R $USER:$USER /var/www/your_domain/html
変更していない場合は、Webルートの権限が正しいはずです。 umask
値ですが、次のように入力して確認できます。
- sudo chmod -R 755 /var/www/your_domain
次に、サンプルを作成します index.html
使用するページ nano
またはお好みのテキストエディタ:
- nano /var/www/your_domain/html/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
:
- sudo nano /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が起動時に読み取るディレクトリ:
- sudo ln -s /etc/nginx/sites-available/your_domain /etc/nginx/sites-enabled/
これで、サーバーで2つのサーバーブロックが有効になり、それらに基づいて要求に応答するように構成されました。 listen
と server_name
ディレクティブ(Nginxがこれらのディレクティブを処理する方法ここについて詳しく読むことができます):
your_domain
:のリクエストに対応しますyour_domain
とwww.your_domain
.default
:ポート上のすべての要求に応答します80
他の2つのブロックと一致しません。
構成にサーバー名を追加することで発生する可能性のあるハッシュバケットメモリの問題を回避するには、 /etc/nginx/nginx.conf
ファイル。 ファイルを開きます。
- sudo nano /etc/nginx/nginx.conf
を見つける server_names_hash_bucket_size
ディレクティブを削除し、 #
行のコメントを解除する記号:
...
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://your_domain
. で作成したカスタムHTML /var/www/your_domain/html/index.html
フォルダはここにレンダリングする必要があります:
ステップ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サーバーがインストールされたので、提供できるコンテンツの種類と、ユーザーにより豊かなエクスペリエンスを作成するために使用できるテクノロジーについて、多くのオプションがあります。