前書き
Nginxは、世界で最も人気のあるWebサーバーの1つであり、インターネット上で最大かつ最もトラフィックの多いサイトのホストを担当しています。 ほとんどの場合、Apacheよりもリソースにやさしく、Webサーバーまたはリバースプロキシとして使用できます。
このガイドでは、Ubuntu 18.04サーバーにNginxをインストールする方法について説明します。
前提条件
このガイドを開始する前に、サーバーにsudo特権を持つ通常の非rootユーザーが設定されている必要があります。 initial server setup guide for Ubuntu 18.04をフォローすることで、通常のユーザーアカウントを構成する方法を学ぶことができます。
アカウントを使用できるようになったら、非rootユーザーとしてログインして開始します。
[[step-1 -–- installing-nginx]] ==ステップ1-Nginxのインストール
NginxはUbuntuのデフォルトのリポジトリで利用できるため、apt
パッケージシステムを使用してこれらのリポジトリからインストールできます。
これは、このセッションでのapt
パッケージングシステムとの最初のやり取りであるため、ローカルパッケージインデックスを更新して、最新のパッケージリストにアクセスできるようにします。 その後、nginx
をインストールできます。
sudo apt update
sudo apt install nginx
手順を受け入れた後、apt
はNginxと必要な依存関係をサーバーにインストールします。
[[ステップ2––ファイアウォールの調整]] ==ステップ2–ファイアウォールの調整
Nginxをテストする前に、ファイアウォールソフトウェアを調整して、サービスへのアクセスを許可する必要があります。 Nginxは、インストール時にufw
を使用してサービスとして登録するため、Nginxアクセスを簡単に許可できます。
次のように入力して、ufw
が操作方法を知っているアプリケーション構成を一覧表示します。
sudo ufw app list
アプリケーションプロファイルのリストを取得する必要があります。
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暗号化トラフィック)のみを開きます
設定したトラフィックを引き続き許可する最も制限の厳しいプロファイルを有効にすることをお勧めします。 このガイドではまだサーバーのSSLを設定していないため、ポート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)
[[step-3 -–- checking-your-web-server]] ==ステップ3–Webサーバーをチェックする
インストールプロセスの最後に、Ubuntu 18.04が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 Fri 2018-04-20 16:08:19 UTC; 3 days ago
Docs: man:nginx(8)
Main PID: 2369 (nginx)
Tasks: 2 (limit: 1153)
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アドレスに移動することで、ソフトウェアが適切に実行されていることを確認できます。 サーバーのIPアドレスがわからない場合は、いくつかの方法で取得できます。
サーバーのコマンドプロンプトでこれを入力してみてください。
ip addr show eth0 | grep inet | awk '{ print $2; }' | sed 's/\/.*$//'
数行戻ります。 Webブラウザでそれぞれ試して、動作するかどうかを確認できます。
別の方法として、これを入力します。これにより、インターネット上の別の場所から見たパブリックIPアドレスが得られます。
curl -4 icanhazip.com
サーバーのIPアドレスがわかったら、ブラウザのアドレスバーに入力します。
http://your_server_ip
デフォルトのNginxランディングページが表示されます。
このページは、サーバーが正しく実行されていることを示すためにNginxに含まれています。
[[step-4 -–- managing-the-nginx-process]] ==ステップ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
[[step-5 -–- setting-up-server-blocks-recommended]] ==ステップ5–サーバーブロックの設定(推奨)
Nginx Webサーバーを使用する場合、server blocks(Apacheの仮想ホストと同様)を使用して、構成の詳細をカプセル化し、単一のサーバーから複数のドメインをホストできます。 example.comというドメインを設定しますが、replace this with your own domain nameを設定する必要があります。 DigitalOceanを使用したドメイン名の設定の詳細については、Introduction to DigitalOcean DNSを参照してください。
Ubuntu 18.04のNginxでは、デフォルトで1つのサーバーブロックが有効になっており、/var/www/html
のディレクトリからドキュメントを提供するように構成されています。 これは単一のサイトではうまく機能しますが、複数のサイトをホストしている場合は扱いにくい場合があります。 /var/www/html
を変更する代わりに、example.comサイトの/var/www
内にディレクトリ構造を作成し、クライアントの要求がない場合に提供されるデフォルトのディレクトリとして/var/www/html
を残します。 t他のサイトと一致します。
-p
フラグを使用して必要な親ディレクトリを作成し、次のようにexample.comのディレクトリを作成します。
sudo mkdir -p /var/www/example.com/html
次に、$USER
環境変数を使用してディレクトリの所有権を割り当てます。
sudo chown -R $USER:$USER /var/www/example.com/html
umask
値を変更していない場合は、Webルートのアクセス許可が正しいはずですが、次のように入力して確認できます。
sudo chmod -R 755 /var/www/example.com
次に、nano
またはお気に入りのエディターを使用してサンプルのindex.html
ページを作成します。
nano /var/www/example.com/html/index.html
内部に、次のサンプルHTMLを追加します。
/var/www/example.com/html/index.html
Welcome to Example.com!
Success! The example.com server block is working!
完了したら、ファイルを保存して閉じます。
Nginxがこのコンテンツを提供するには、正しいディレクティブを使用してサーバーブロックを作成する必要があります。 デフォルトの構成ファイルを直接変更する代わりに、/etc/nginx/sites-available/example.com
で新しい構成ファイルを作成しましょう。
sudo nano /etc/nginx/sites-available/example.com
次の構成ブロックに貼り付けます。これはデフォルトに似ていますが、新しいディレクトリとドメイン名に合わせて更新されています。
/etc/nginx/sites-available/example.com
server {
listen 80;
listen [::]:80;
root /var/www/example.com/html;
index index.html index.htm index.nginx-debian.html;
server_name example.com www.example.com;
location / {
try_files $uri $uri/ =404;
}
}
root
構成を新しいディレクトリに更新し、server_name
をドメイン名に更新したことに注意してください。
次に、起動時にNginxが読み取るsites-enabled
ディレクトリへのリンクを作成して、ファイルを有効にします。
sudo ln -s /etc/nginx/sites-available/example.com /etc/nginx/sites-enabled/
2つのサーバーブロックが有効になり、listen
およびserver_name
ディレクティブに基づいてリクエストに応答するように構成されました(Nginxがこれらのディレクティブhereを処理する方法の詳細を読むことができます):
-
example.com
:example.com
およびwww.example.com
の要求に応答します。 -
default
:他の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
完了したら、ファイルを保存して閉じます。
問題がなければ、Nginxを再起動して変更を有効にします。
sudo systemctl restart nginx
これで、Nginxがドメイン名を提供しているはずです。 これをテストするには、http://example.com
に移動します。ここで、次のようなものが表示されます。
[[step-6 -–- getting-familiar-with-important-nginx-files-and-directories]] ==ステップ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サーバーがインストールされたので、提供するコンテンツの種類と、より豊かなエクスペリエンスを作成するために使用するテクノロジに関する多くのオプションがあります。
より完全なアプリケーションスタックを構築したい場合は、how to configure a LEMP stack on Ubuntu 18.04に関するこの記事を確認してください。