開発者ドキュメント

Nginx Essentials:インストールと構成のトラブルシューティング

###序章

Nginxは、あらゆるサイズのWebサイトやアプリケーションをホストするために使用される無料のオープンソースWebサーバーです。 このソフトウェアは、メモリリソースへの影響が少なく、スケーラビリティが高く、安全で予測可能なパフォーマンスを提供できるモジュール式のイベント駆動型アーキテクチャで知られています。 Nginxは、単なるWebサーバーではなく、ロードバランサー、HTTPキャッシュ、およびリバースプロキシとしても機能します。

他の複雑なソフトウェアツールと同様に、Nginxサーバーを管理したり、発生する可能性のある問題をトラブルシューティングしたりするための特定のコマンドとベストプラクティスを覚えておくのは難しい場合があります。 このチートシートスタイルのガイドは、Nginxを使用するすべての人のクイックリファレンスとして役立つことを目的としています。 いくつかの基本的なサービス管理コマンドと、いくつかの一般的な問題を診断および解決するためのヒントについて説明します。

このガイドの使用方法:

##Nginxのインストール

sudo apt-getを使用して、パッケージインデックスを更新してから、サービスをインストールします。

  1. sudo apt-get update
  2. sudo apt-get install nginx

インストールとセットアッププロセスの詳細については、 Ubuntu16.04にNginxをインストールする方法に関するチュートリアルに従ってください。

##Nginxのステータスを確認する

コマンドプロンプトに次のように入力すると、マシンでNginxが実行されているかどうかを確認できます。

  1. sudo systemctl status nginx

##Nginxを有効にする

デフォルトでは、Nginxはサーバーの起動時に自動的に起動するように構成されています。 必要に応じて、次のように入力してこの動作を無効にすることができます。

  1. sudo systemctl disable nginx

起動時にサービスを再度有効にするには、次のように入力します。

  1. sudo systemctl enable nginx

## Nginxの停止、開始、再読み込み

すでに実行中のNginxサーバーを停止するには:

  1. sudo systemctl stop nginx

サーバーが停止したら、次のように入力してサーバーを再起動できます。

  1. sudo systemctl start nginx

Nginxを停止してから再開するには、次のように入力します。

  1. sudo systemctl restart nginx

接続を中断せずにNginxをリロードすることもできます。

  1. sudo systemctl reload nginx

systemdおよびsystemctlコマンドの詳細については、この systemdEssentialsの概要を確認してください。

##静的サイトのドキュメントルートの作成

Nginx Webサーバーを使用する場合、サーバーブロック(Apacheの仮想ホストと同様)を使用して、単一のサーバーで複数のドメインをホストします。 各サーバーブロックには独自のドキュメントルートがあります。これは、ドメインのコンテンツを提供する前にNginxがチェックする必要のある特別なディレクトリです。

以下のブロックのコマンドは、新しいドキュメントルートを作成し、root以外のユーザーに対するドキュメントルートの所有権を変更し、/var/www/内の各サブディレクトリのアクセス許可を変更します。

  1. sudo mkdir -p /var/www/example.com/html
  2. sudo chown -R $USER:$USER /var/www/example.com/html
  3. find /var/www -type d -exec chmod 775 {} \;

この例では、ドキュメントのルートディレクトリにグローバルな読み取りおよび実行権限があることを確認していますが、特定のニーズを反映するために、775を別の値に置き換える必要があります。

##動的に処理されるサイトのドキュメントルートを作成する

特定のプログラム(PHP-FPMなど)でNginxを使用して動的に処理されるサイトを作成する場合、特に必要な場合は、www-dataグループへのアクセスまたは所有権を許可するために、一部のファイルのアクセス許可を調整する必要があります。ディレクトリに書き込むことができます。

以下のブロックのコマンドは、新しいドキュメントルートを作成し、ドキュメントルートの所有権をwww-dataグループに変更し、/var/www内の各サブディレクトリのアクセス許可を変更します。

  1. sudo mkdir -p /var/www/example.com/html
  2. sudo chown -R www-data:www-data /var/www/example.com
  3. sudo find /var/www -type d -exec chmod 775 {} \;

パーミッションの詳細については、Linuxパーミッションの概要を参照してください。 Ubuntu 16.04 でNginxサーバーブロック(仮想ホスト)を設定する方法に関するチュートリアルを確認することも役立つ場合があります。このチュートリアルでは、ドキュメントルートを作成および変更するための詳細なアプローチが提供されています。

##構成ファイルの有効化

sites-availableディレクトリからsites-enabledディレクトリへのシンボリックリンクを作成することで、サーバーブロックの構成ファイルを有効にできます。このリンクは、Nginxが起動時に読み取ります。

これを行うには、次のコマンドを入力します。

  1. sudo ln -s /etc/nginx/sites-available/example.com /etc/nginx/sites-enabled/

ファイルをリンクした後、Nginxをリロードして変更を反映し、サーバーブロックの構成ファイルを有効にします。

  1. sudo systemctl reload nginx

##ハッシュバケットメモリの問題の解決

Nginxは、ハッシュテーブル(「バケット」に編成されている)を使用して、サーバー名やMIMEタイプなどの静的データをすばやく処理します。 したがって、複数のサーバー名を追加した場合、サーバー名のハッシュバケットのサイズが十分でなくなり、変更を加えるとserver_names_hash_bucket_sizeエラーが発生する可能性があります。 これは、/etc/nginx/nginx.confファイル内の単一の値を調整することで対処できます。

この構成ファイルを開くには、次のように入力します。

  1. sudo nano /etc/nginx/nginx.conf

ファイル内で、server_names_hash_bucket_sizeディレクティブを見つけます。 #記号を削除して行のコメントを解除し、ディレクティブの値を2の次の累乗で増やします。

/etc/nginx/nginx.conf
http {
    . . .

    server_names_hash_bucket_size 64;

    . . .
}

これを行うと、Nginxのサーバー名ハッシュテーブルのバケットサイズが増加し、サービスが追加したすべてのサーバー名を処理できるようになります。 終了したらファイルを保存して閉じ、Nginxを再起動して変更を反映します。

##構成ファイルの確認

Nginx構成ファイルに変更を加えるときは常に、構文エラーが残っていないかどうかを確認することが重要です。 これは、次のコマンドを発行することで実行できます。

  1. sudo nginx -t

構成ファイルにエラーがある場合、コマンドの出力は、ファイル内のどこでエラーが見つかったかを正確に示します。 逆に、nginx構成ファイルのいずれにも構文エラーがない場合は、次のような出力が表示されます。

Output
nginx: the configuration file /etc/nginx/nginx.conf syntax is ok nginx: configuration file /etc/nginx/nginx.conf test is successful

エラーが見つからず、変更をすぐに適用する場合は、サービスを再起動します。

  1. sudo systemctl restart nginx

##重要なNginxファイルとディレクトリ

Nginxでの作業に時間を費やすと、次のファイルやディレクトリに頻繁にアクセスすることに気付く場合があります。

###コンテンツ

###サーバー構成

###サーバーログ

  1. sudo journalctl -u nginx

##結論

このガイドでは、Nginxサーバーを管理するための基本的なコマンドとプラクティスについて説明します。これには、Nginxの起動、停止、ステータスの確認方法、Webサイトのドキュメントルートの検索方法、Nginx構成ファイルの構文の確認方法が含まれます。 Nginxの操作の詳細については、次のチュートリアルを確認することをお勧めします。

モバイルバージョンを終了