Ubuntu 18.04でNginx Webルートを新しい場所に移動する方法

前書き

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

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

前提条件

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

このチュートリアルではドメイン名example.comを使用しますが、これを独自のドメイン名に置き換える必要があります。

  • ドキュメントルートの新しい場所。 このチュートリアルでは、新しい場所に/mnt/volume-nyc3-01ディレクトリを使用します。 DigitalOceanでブロックストレージを使用している場合、this guideは、ボリュームを作成して接続する方法を示します。 ただし、新しいドキュメントルートの場所は、ニーズに基づいて構成できます。 ドキュメントルートを別のストレージデバイスに移動する場合は、デバイスのマウントポイントの下の場所を選択します。

[[step-1 -—- copying-files-to-the-new-location]] ==ステップ1—ファイルを新しい場所にコピーする

Nginxの新規インストールでは、ドキュメントルートは/var/www/htmlにあります。 ただし、前提条件ガイドに従うことにより、新しいドキュメントルート/var/www/example.com/htmlを作成しました。 追加のドキュメントルートがある場合もあります。 この手順では、ドキュメントルートの場所を確立し、関連するファイルを新しい場所にコピーします。

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

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

新しいサーバーで前提条件のチュートリアルに従った場合、結果は次のようになります。

Output/etc/nginx/sites-enabled/example.com:           root /var/www/example.com/html;
/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は詳細な出力を提供するため、同期の進行状況を追跡できます。

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

sudo rsync -av /var/www/example.com/html /mnt/volume-nyc3-01

次のような出力が表示されます。

Outputsending incremental file list
created directory /mnt/volume-nyc3-01
html/
html/index.html

sent 318 bytes  received 39 bytes  714.00 bytes/sec
total size is 176  speedup is 0.49

ファイルを配置したら、これらの変更を反映するためにNginxの構成を変更します。

[[step-2 -—- updating-the-configuration-files]] ==ステップ2—構成ファイルの更新

Nginxは、グローバル構成ファイルとサイト固有の構成ファイルの両方を使用します。 構成ファイルの階層に関する背景については、“How To Configure The Nginx Web Server On a Virtual Private Server”を参照してください。 server block file for our example.com project/etc/nginx/sites-enabled/example.comを変更します。

[.note]#Note:この場合、example.comyour_domain_nameになり、grepを実行したときに出力されたサーバーブロックファイルを変更することに注意してください。手順1のコマンド。

エディターで/etc/nginx/sites-enabled/example.comを開くことから始めます。

sudo nano /etc/nginx/sites-enabled/example.com

rootで始まる行を見つけて、新しいルートの場所で更新します。 この場合、これは/mnt/volume-nyc3-01/htmlになります。

/etc/nginx/sites-enabled/example.com

server {

        root /mnt/volume-nyc3-01/html;
        index index.html index.htm index.nginx-debian.html;
        . . .
}
. . .

手順1でgrepによって出力された元のドキュメントルートパスが表示される他の場所に注意してください。エイリアスや書き換えも含まれます。 また、これらを更新して、新しいドキュメントルートの場所を反映することもできます。

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

[[step-3 -—- restarting-nginx]] ==ステップ3—Nginxを再起動します

設定の変更が完了したら、Nginxを再起動して結果をテストできます。

最初に、構文が正しいことを確認します。

sudo nginx -t

すべてが正常である場合、以下を返します。

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

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

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

sudo systemctl restart nginx

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

sudo rm -Rf /var/www/example.com/html

これで、Nginxドキュメントルートを新しい場所に正常に移動できました。

結論

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

忙しい、または成長しているWebサイトを管理している場合は、コンテンツの高速転送を利用するためにhow to set up Nginx with HTTP/2を学習することに興味があるかもしれません。 このfive ways to improve your production web application server setupの比較で、本番エクスペリエンスの向上についてさらに学ぶことができます。

Related