###序章
Nginxは、あらゆるサイズのWebサイトやアプリケーションをホストするために使用される無料のオープンソースWebサーバーです。 このソフトウェアは、メモリリソースへの影響が少なく、スケーラビリティが高く、安全で予測可能なパフォーマンスを提供できるモジュール式のイベント駆動型アーキテクチャで知られています。 Nginxは、単なるWebサーバーではなく、ロードバランサー、HTTPキャッシュ、およびリバースプロキシとしても機能します。
他の複雑なソフトウェアツールと同様に、Nginxサーバーを管理したり、発生する可能性のある問題をトラブルシューティングしたりするための特定のコマンドとベストプラクティスを覚えておくのは難しい場合があります。 このチートシートスタイルのガイドは、Nginxを使用するすべての人のクイックリファレンスとして役立つことを目的としています。 いくつかの基本的なサービス管理コマンドと、いくつかの一般的な問題を診断および解決するためのヒントについて説明します。
このガイドの使用方法:
- 各セクションは他のセクションとは独立して使用できるため、ニーズに関連するセクションにスキップしてください。
- このガイドの各セクションのコマンドは自己完結型であるため、コマンド例の赤い値を独自の値に置き換える必要があります。
- 関連する場合、このガイドのセクションには、詳細について参照できる他のリソースへのリンクが含まれています。
- このガイドは、DebianベースのディストリビューションのデフォルトリポジトリからインストールされたバージョンのNginxを使用していることを前提としています。 このガイドで説明されている規則の一部は、他のディストリビューションや他のソースのNginxのバージョンには存在しないことに注意してください。
##Nginxのインストール
sudo apt-get
を使用して、パッケージインデックスを更新してから、サービスをインストールします。
- sudo apt-get update
- sudo apt-get install nginx
インストールとセットアッププロセスの詳細については、 Ubuntu16.04にNginxをインストールする方法に関するチュートリアルに従ってください。
##Nginxのステータスを確認する
コマンドプロンプトに次のように入力すると、マシンでNginxが実行されているかどうかを確認できます。
- sudo systemctl status nginx
##Nginxを有効にする
デフォルトでは、Nginxはサーバーの起動時に自動的に起動するように構成されています。 必要に応じて、次のように入力してこの動作を無効にすることができます。
- sudo systemctl disable nginx
起動時にサービスを再度有効にするには、次のように入力します。
- sudo systemctl enable nginx
## Nginxの停止、開始、再読み込み
すでに実行中のNginxサーバーを停止するには:
- sudo systemctl stop nginx
サーバーが停止したら、次のように入力してサーバーを再起動できます。
- sudo systemctl start nginx
Nginxを停止してから再開するには、次のように入力します。
- sudo systemctl restart nginx
接続を中断せずにNginxをリロードすることもできます。
- sudo systemctl reload nginx
systemd
およびsystemctl
コマンドの詳細については、この systemdEssentialsの概要を確認してください。
##静的サイトのドキュメントルートの作成
Nginx Webサーバーを使用する場合、サーバーブロック(Apacheの仮想ホストと同様)を使用して、単一のサーバーで複数のドメインをホストします。 各サーバーブロックには独自のドキュメントルートがあります。これは、ドメインのコンテンツを提供する前にNginxがチェックする必要のある特別なディレクトリです。
以下のブロックのコマンドは、新しいドキュメントルートを作成し、root以外のユーザーに対するドキュメントルートの所有権を変更し、/var/www/
内の各サブディレクトリのアクセス許可を変更します。
- sudo mkdir -p /var/www/example.com/html
- sudo chown -R $USER:$USER /var/www/example.com/html
- find /var/www -type d -exec chmod 775 {} \;
この例では、ドキュメントのルートディレクトリにグローバルな読み取りおよび実行権限があることを確認していますが、特定のニーズを反映するために、775
を別の値に置き換える必要があります。
##動的に処理されるサイトのドキュメントルートを作成する
特定のプログラム(PHP-FPMなど)でNginxを使用して動的に処理されるサイトを作成する場合、特に必要な場合は、www-data
グループへのアクセスまたは所有権を許可するために、一部のファイルのアクセス許可を調整する必要があります。ディレクトリに書き込むことができます。
以下のブロックのコマンドは、新しいドキュメントルートを作成し、ドキュメントルートの所有権をwww-data
グループに変更し、/var/www
内の各サブディレクトリのアクセス許可を変更します。
- sudo mkdir -p /var/www/example.com/html
- sudo chown -R www-data:www-data /var/www/example.com
- sudo find /var/www -type d -exec chmod 775 {} \;
パーミッションの詳細については、Linuxパーミッションの概要を参照してください。 Ubuntu 16.04 でNginxサーバーブロック(仮想ホスト)を設定する方法に関するチュートリアルを確認することも役立つ場合があります。このチュートリアルでは、ドキュメントルートを作成および変更するための詳細なアプローチが提供されています。
##構成ファイルの有効化
sites-available
ディレクトリからsites-enabled
ディレクトリへのシンボリックリンクを作成することで、サーバーブロックの構成ファイルを有効にできます。このリンクは、Nginxが起動時に読み取ります。
これを行うには、次のコマンドを入力します。
- sudo ln -s /etc/nginx/sites-available/example.com /etc/nginx/sites-enabled/
ファイルをリンクした後、Nginxをリロードして変更を反映し、サーバーブロックの構成ファイルを有効にします。
- sudo systemctl reload nginx
##ハッシュバケットメモリの問題の解決
Nginxは、ハッシュテーブル(「バケット」に編成されている)を使用して、サーバー名やMIMEタイプなどの静的データをすばやく処理します。 したがって、複数のサーバー名を追加した場合、サーバー名のハッシュバケットのサイズが十分でなくなり、変更を加えるとserver_names_hash_bucket_size
エラーが発生する可能性があります。 これは、/etc/nginx/nginx.conf
ファイル内の単一の値を調整することで対処できます。
この構成ファイルを開くには、次のように入力します。
- sudo nano /etc/nginx/nginx.conf
ファイル内で、server_names_hash_bucket_size
ディレクティブを見つけます。 #
記号を削除して行のコメントを解除し、ディレクティブの値を2の次の累乗で増やします。
http {
. . .
server_names_hash_bucket_size 64;
. . .
}
これを行うと、Nginxのサーバー名ハッシュテーブルのバケットサイズが増加し、サービスが追加したすべてのサーバー名を処理できるようになります。 終了したらファイルを保存して閉じ、Nginxを再起動して変更を反映します。
##構成ファイルの確認
Nginx構成ファイルに変更を加えるときは常に、構文エラーが残っていないかどうかを確認することが重要です。 これは、次のコマンドを発行することで実行できます。
- sudo nginx -t
構成ファイルにエラーがある場合、コマンドの出力は、ファイル内のどこでエラーが見つかったかを正確に示します。 逆に、nginx構成ファイルのいずれにも構文エラーがない場合は、次のような出力が表示されます。
Outputnginx: the configuration file /etc/nginx/nginx.conf syntax is ok
nginx: configuration file /etc/nginx/nginx.conf test is successful
エラーが見つからず、変更をすぐに適用する場合は、サービスを再起動します。
- sudo systemctl restart nginx
##重要なNginxファイルとディレクトリ
Nginxでの作業に時間を費やすと、次のファイルやディレクトリに頻繁にアクセスすることに気付く場合があります。
###コンテンツ
/var/www/html
:これは、実際のWebコンテンツが提供されるデフォルトのドキュメントルートの場所です。 ドキュメントルートは、Nginx構成ファイルを変更することで変更できます。
###サーバー構成
/etc/nginx/
:すべてのNginx構成ファイルを見つけることができるデフォルトのNginx構成ディレクトリ。/etc/nginx/nginx.conf
:プライマリNginx構成ファイル。 これは、Nginxの構成にグローバルな変更を加えるように指示できます。/etc/nginx/sites-available/default
:Nginxのデフォルトのサーバーブロックファイル。 他のサイトごとのサーバーブロックもsites-available
ディレクトリ内に保存されますが、sites-enabled
ディレクトリにリンクされていない限りこれらは使用されません。/etc/nginx/sites-enabled/
:有効なサイトごとの「サーバーブロック」が保存されているディレクトリ。 通常、これらはsites-available
ディレクトリにある構成ファイルにリンクすることによって作成されます。
###サーバーログ
/var/log/nginx/access.log
:Nginxが別の方法で構成されていない限り、Webサーバーへのすべてのリクエストはこのログファイルに記録されます。/var/log/nginx/error.log
:Nginxエラーはすべてこのログに記録されます。- Nginxプロセスのsystemdログにアクセスするには、次のコマンドを実行します。
- sudo journalctl -u nginx
##結論
このガイドでは、Nginxサーバーを管理するための基本的なコマンドとプラクティスについて説明します。これには、Nginxの起動、停止、ステータスの確認方法、Webサイトのドキュメントルートの検索方法、Nginx構成ファイルの構文の確認方法が含まれます。 Nginxの操作の詳細については、次のチュートリアルを確認することをお勧めします。