序章

Ubuntuでは、デフォルトで、NginxWebサーバーはドキュメントを/var/www/htmlに保存します。これは通常、残りのオペレーティングシステムとともにルートファイルシステムにあります。 ただし、ドキュメントルートを別のマウントされたファイルシステムなどの別の場所に移動すると便利な場合があります。 たとえば、同じNginxインスタンスから複数のウェブサイトにサービスを提供する場合、各サイトのドキュメントルートを独自のボリュームに配置すると、特定のサイトまたはクライアントのニーズに応じて拡張できます。

このガイドでは、Nginxドキュメントルートを新しい場所に移動する方法を説明します。

前提条件

このガイドを完了するには、次のものが必要です。

  • sudo権限を持つ非rootユーザーのUbuntu16.04サーバー。 これらの権限を持つユーザーをセットアップする方法の詳細については、 Ubuntu16.04を使用したサーバーの初期セットアップガイドを参照してください。

  • Nginx Webサーバー:まだセットアップしていない場合は、詳細な記事 Ubuntu16.04にNginxをインストールする方法をガイドできます。

  • ドキュメントルートの新しい場所:新しいドキュメントルートの場所は、ニーズに基づいて完全に構成できます。 ドキュメントルートを別のストレージデバイスに移動する場合は、デバイスのマウントポイントの下の場所を選択する必要があります。 この例では、/mnt/volume-nyc1-01ディレクトリを使用します。 DigitalOceanでブロックストレージを使用している場合は、このガイドで、このチュートリアルを続行する前にドライブをマウントする方法を説明します。

ステップ1—ファイルを新しい場所にコピーする

Nginxの新規インストールでは、ドキュメントルートは/var/www/htmlにあります。 ただし、既存のサーバーを使用している場合は、対応するサーバーブロックディレクティブに複数のドキュメントルートが含まれるなど、設定が大幅に異なる場合があります。

grepを使用して、追加のドキュメントルートの場所を検索できます。 /etc/nginx/sites-enabledディレクトリを検索して、アクティブなサイトに焦点を絞ります。 -Rフラグは、greprootディレクティブを含む行とその出力のファイル名の両方を出力することを保証します。

  1. grep "root" -R /etc/nginx/sites-enabled

結果は以下の出力のようになりますが、結果の名前と数は既存のインストールでは異なる可能性があります。

Output
/etc/nginx/sites-enabled/default: root /var/www/html; /etc/nginx/sites-enabled/default: # deny access to .htaccess files, if Apache's document root /etc/nginx/sites-enabled/default:# root /var/www/example.com;

grepからのフィードバックを使用して、必要なファイルをコピーし、適切な構成ファイルを更新していることを確認してください。

ドキュメントルートの場所を確認したので、rsyncを使用してファイルを新しい場所にコピーします。 -aフラグを使用すると、アクセス許可とその他のディレクトリプロパティが保持され、-vは詳細な出力を提供するため、進行状況を追跡できます。

注:ディレクトリに末尾のスラッシュがないことを確認してください。これは、タブ補完を使用する場合に追加される可能性があります。 末尾にスラッシュがある場合、rsyncは、ディレクトリの内容を、含まれているhtmlディレクトリに転送するのではなく、マウントポイントにダンプします。

  1. sudo rsync -av /var/www/html /mnt/volume-nyc1-01

これで、構成を更新する準備が整いました。

ステップ2—構成ファイルを更新する

Nginxは、グローバル構成ファイルとサイト固有の構成ファイルの両方を利用します。 構成ファイルの階層の背景については、仮想プライベートサーバーでNginxWebサーバーを構成する方法を参照してください。

既存のインストールで作業している場合は、grepコマンドを使用して以前に見つけたファイルを変更する必要があります。 この例では、defaultというデフォルトの構成ファイルを確認します。

エディターでファイルを開きます。

  1. sudo nano /etc/nginx/sites-enabled/default

次に、root で始まる行を見つけて、新しい場所で更新します。

注:元のパスが表示された他の場所を探し、それらも新しい場所に変更する必要があります。 ルートに加えて、更新が必要なエイリアスやリライトなども見つかる場合があります。

/ etc / nginx / sites-enabled / default
. . .
       # include snippets/snakeoil.conf;
       root /mnt/volume-nyc1-01/html;


       # Add index.php to the list if you are using PHP


       index index.html index.htm index.nginx-debian.html;
       server_name _;
. . .

必要な変更をすべて行ったら、ファイルを保存して閉じます。

ステップ3—Nginxを再起動する

構成の変更が完了したら、次のコマンドを使用して構文が正しいことを確認できます。

  1. sudo nginx -t

すべてが正常であれば、次のように返されます。

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

テストが失敗した場合は、問題を追跡して修正します。

テストに合格したら、Nginxを再起動します。

  1. sudo systemctl restart nginx

サーバーが再起動したら、影響を受けるサイトにアクセスして、期待どおりに機能していることを確認します。 すべてが順調に進んだら、データの元のコピーを削除することを忘れないでください。

  1. sudo rm -Rf /var/www/html

結論

このチュートリアルでは、Nginxドキュメントルートを新しい場所に変更する方法について説明しました。 これは、単一のサーバー上の複数のサイトを効果的に管理するなど、基本的なWebサーバーの管理に役立ちます。 また、ネットワークブロックストレージなどの代替ストレージデバイスを利用することもできます。これは、ニーズの変化に応じてWebサイトを拡張するための重要なステップです。

忙しいまたは成長しているWebサイトを管理している場合は、コンテンツの高速転送を利用するために HTTP /2でNginxをセットアップする方法を学ぶことに興味があるかもしれません。 本番Webアプリケーションサーバーのセットアップを改善する5つの方法のこの比較で、本番エクスペリエンスの改善についてさらに学ぶことができます。