紹介
Nginxは世界で最も人気のあるWebサーバーの1つであり、インターネット上で最大かつ最高のトラフィックを持つサイトのホスティングを担当しています。軽量な選択肢であり、Webサーバーまたはリバースプロキシとして使用できます。
このガイドでは、Ubuntu 20.04サーバーにNginxをインストールし、ファイアウォールを調整し、Nginxプロセスを管理し、単一のサーバーから複数のドメインをホスティングするためのサーバーブロックを設定する方法について説明します。
デジタルオーシャンのアプリプラットフォームを使用して、アプリケーションの展開を簡素化します。DigitalOcean App Platform。数分でGitHubから直接展開できます。
前提条件
このガイドを開始する前に、サーバーにsudo権限を持つ通常の非ルートユーザーアカウントが設定されている必要があります。Ubuntu 20.04の初期サーバー設定ガイドに従って、通常のユーザーアカウントの設定方法を学ぶことができます。
このチュートリアルの最後の手順を完了する前に、オプションでドメイン名を登録することもお勧めします。DigitalOceanでドメイン名を設定する詳細については、当社の「DigitalOcean DNS入門」を参照してください。
アカウントが利用可能な場合は、非ルートユーザーとしてログインして開始してください。
ステップ1 – Nginxのインストール
UbuntuのデフォルトリポジトリにNginxがあるため、apt
パッケージングシステムを使用してこれらのリポジトリからインストールすることが可能です。
今回がこのセッションでapt
パッケージングシステムとの最初のやり取りなので、最新のパッケージリストにアクセスできるように、ローカルのパッケージインデックスを更新します。その後、nginx
をインストールできます:
手順を承認した後、apt
はNginxとサーバーに必要な依存関係をインストールします。
ステップ2 – ファイアウォールの調整
Nginxをテストする前に、ファイアウォールソフトウェアを調整して、サービスへのアクセスを許可する必要があります。Nginxはインストール時にufw
として自身をサービスとして登録しますので、Nginxへのアクセスを許可するのは簡単です。
ufw
がどのように動作するかを知っているアプリケーション構成をリストアップするには、次のように入力します:
アプリケーションプロファイルのリストが表示されます:
OutputAvailable 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で暗号化されたトラフィック)のみを開きます。
構成したトラフィックを許可する最も制限されたプロファイルを有効にすることが推奨されています。現時点では、ポート80のトラフィックのみを許可する必要があります。
次のように入力してこれを有効にできます:
変更を確認するには、次のように入力します:
出力には、許可されている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サーバーの確認
インストールプロセスの最後に、Ubuntu 20.04は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 Fri 2020-04-20 16:08:19 UTC; 3 days ago
Docs: man:nginx(8)
Main PID: 2369 (nginx)
Tasks: 2 (limit: 1153)
Memory: 3.5M
CGroup: /system.slice/nginx.service
├─2369 nginx: master process /usr/sbin/nginx -g daemon on; master_process on;
└─2380 nginx: worker process
この出力で確認されたように、サービスは正常に起動しました。ただし、これをテストする最良の方法は、実際にNginxからページをリクエストすることです。
ソフトウェアが正常に実行されていることを確認するために、デフォルトのNginxランディングページにアクセスできます。サーバーのIPアドレスがわからない場合は、icanhazip.comツールを使用して見つけることができます。これにより、インターネット上の別の場所から受信した公開IPアドレスが表示されます:
サーバーのIPアドレスを取得したら、それをブラウザのアドレスバーに入力します:
http://your_server_ip
デフォルトのNginxランディングページが表示されるはずです:
このページにアクセスできる場合、サーバーは正常に実行され、管理の準備が整っています。
ステップ4 – Nginxプロセスの管理
Webサーバーが稼働しているので、基本的な管理コマンドを見てみましょう。
Webサーバーを停止するには、次のように入力します:
停止しているWebサーバーを開始するには、次のように入力します:
サービスを停止してから再起動するには、次のように入力します:
構成の変更のみを行う場合、Nginxは接続を切断せずに再読み込みすることができることがよくあります。これを行うには、次のように入力します:
デフォルトでは、サーバーが起動するときにNginxは自動的に起動するように構成されています。これが望ましくない場合は、次のように入力してこの動作を無効にできます:
サービスを起動時に再度有効にするには、次のように入力します:
これで、基本的な管理コマンドを学び、サイトを複数のドメインでホストする準備が整いました。
ステップ5 – サーバーブロックの設定(推奨)
Nginxウェブサーバーを使用する場合、サーバーブロック(Apacheの仮想ホストに類似)を使用して構成の詳細をカプセル化し、単一のサーバーから複数のドメインをホストできます。 your_domainというドメインを設定しますが、これは独自のドメイン名に置き換えてください。
Ubuntu 20.04のNginxには、デフォルトで1つのサーバーブロックが有効になっており、/var/www/html
ディレクトリからドキュメントを提供するように構成されています。これは単一のサイトではうまく機能しますが、複数のサイトをホストする場合は扱いにくくなる場合があります。 /var/www/html
を変更する代わりに、/var/www
内にyour_domainサイトのディレクトリ構造を作成し、クライアントリクエストが他のサイトと一致しない場合に提供されるデフォルトのディレクトリとして/var/www/html
をそのままにします。
次のようにyour_domainのディレクトリを作成します。必要な親ディレクトリを作成するために-p
フラグを使用します:
次に、ディレクトリの所有権を$USER
環境変数に割り当てます:
Webルートのパーミッションは、umask
値を変更していない場合、正しいはずです。所有者にファイルを読み取り、書き込み、実行する権限を許可し、グループとその他には読み取りと実行の権限のみを許可するために、次のコマンドを入力してください:
次に、nano
またはお好きなエディタを使用して、サンプルのindex.html
ページを作成します:
以下のサンプルHTMLを追加してください:
ファイルを保存して閉じるには、Ctrl+X
を押して終了し、保存するよう求められたらY
、そしてEnter
を押してください。
Nginxがこのコンテンツを提供できるようにするには、正しいディレクティブを持つサーバーブロックを作成する必要があります。デフォルトの設定ファイルを直接変更する代わりに、新しいファイルを/etc/nginx/sites-available/your_domain
に作成しましょう:
次に、次の構成ブロックを貼り付けます。これはデフォルトと似ていますが、新しいディレクトリとドメイン名に更新されています:
root
構成を新しいディレクトリに、server_name
をドメイン名に更新したことに注意してください。
次に、Nginxが起動時に読み込むsites-enabled
ディレクトリへのリンクを作成して、ファイルを有効にします。
注意: Nginxは、サーバーブロックが有効かどうかを追跡するために、シンボリックリンクまたはシンリンクと呼ばれる一般的な方法を使用します。シンボリックリンクを作成することは、ディスク上にショートカットを作成することと同じです。つまり、後でsites-enabled
ディレクトリからショートカットを削除しても、sites-available
にあるサーバーブロックを有効にしたい場合は、それを保持できます。
現在、2つのサーバーブロックが有効になっており、listen
およびserver_name
ディレクティブに基づいてリクエストに応答するように構成されています(これらのディレクティブのNginxがどのように処理するかについての詳細はこちらで読むことができます):
your_domain
:your_domain
およびwww.your_domain
のリクエストに応答します。default
: 他の2つのブロックと一致しないポート80の任意のリクエストに応答します。
追加のサーバー名を追加することによって発生する可能性があるハッシュバケットメモリの問題を回避するために、/etc/nginx/nginx.conf
ファイル内の単一の値を調整する必要があります。 ファイルを開きます:
server_names_hash_bucket_size
ディレクティブを見つけ、行の先頭の#
シンボルを削除して、その行のコメントを解除します。 nanoを使用している場合は、ファイル内の単語を素早く検索するには、CTRL
とw
を押します。
注意: コード行をコメントアウトすることは、実際に削除する必要がないまま、それらを無効にする別の方法です。多くの構成ファイルには、有効なコードとドキュメントの間を切り替えることで、有効または無効にできるように複数のオプションがコメントアウトされています。
...
http {
...
server_names_hash_bucket_size 64;
...
}
...
変更が完了したら、ファイルを保存して閉じます。
次に、Nginxファイルに構文エラーがないことを確認するためにテストしてください。
問題がなければ、変更を有効にするためにNginxを再起動してください。
これでNginxがドメイン名を提供しているはずです。これを確認するには、http://your_domain
に移動して、次のようなものが表示されるかどうかを確認してください。
ステップ6 – 重要なNginxファイルとディレクトリに慣れる
これでNginxサービス自体の管理方法を知っているので、重要なディレクトリとファイルをいくつか把握するために数分を割くべきです。
内容
/var/www/html
:実際のウェブコンテンツは、デフォルトでは前述のデフォルトの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が別の方法を設定していない限り、ウェブサーバーへのすべてのリクエストがこのログファイルに記録されます。/var/log/nginx/error.log
:Nginxのエラーはこのログに記録されます。
結論
ウェブサーバーをインストールしたので、提供するコンテンツの種類やより豊かなエクスペリエンスを作成するために使用する技術には多くのオプションがあります。
より完全なアプリケーションスタックを構築したい場合は、記事「Ubuntu 20.04にLinux、Nginx、MySQL、PHP(LEMPスタック)をインストールする方法」をチェックしてください。
無料のSSL証明書を使用してドメイン名のHTTPSを設定するには、Let’s Encryptを使用してNginxをセキュリティで保護する方法を確認してください。Ubuntu 20.04でLet’s Encryptを使用してNginxをセキュアにする方法。
Source:
https://www.digitalocean.com/community/tutorials/how-to-install-nginx-on-ubuntu-20-04