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

はじめに

Ubuntuでは、Nginxウェブサーバは、通常、ルートファイルシステム上にある/var/www/htmlに文書を保存します。しかし、場合によっては、ドキュメントルートを別の場所に移動すると便利なことがあります。たとえば、同じNginxインスタンスから複数のウェブサイトを提供する場合、各サイトのドキュメントルートを独自のボリュームに配置すると、特定のサイトやクライアントのニーズに応じてスケーリングできます。

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

前提条件

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

このチュートリアルでは、ドメイン名your_domainを使用しますが、独自のドメイン名に置き換えてください。

  • A new location for your document root. In this tutorial, we will use the /mnt/volume-nyc3-01 directory for our new location. If you are using Block Storage on DigitalOcean, this guide will show you how to create and attach your volume. Your new document root location is configurable based on your needs, however. If you are moving your document root to a different storage device, you will want to select a location under the device’s mount point.

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

Nginxの新規インストールでは、ドキュメントルートは/var/www/htmlにあります。ただし、前提条件のガイドに従って、新しいドキュメントルート/var/www/your_domain/htmlを作成しました。追加のドキュメントルートもあるかもしれません。このステップでは、ドキュメントルートの場所を確認し、関連するファイルを新しい場所にコピーします。

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

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

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

Output
/etc/nginx/sites-enabled/your_domain: root /var/www/your_domain/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/your_domain;

既存のセットアップがある場合、結果はここに示されているものと異なる場合があります。どちらの場合でも、grepのフィードバックを使用して、移動する必要のあるファイルを確認し、適切な構成ファイルを更新できます。

ドキュメントルートの場所が確認されたら、rsyncを使用してファイルを新しい場所にコピーできます。-aフラグを使用すると、権限やその他のディレクトリのプロパティが保持され、-vは進行状況を確認できるように冗長な出力を提供します。

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

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

以下のような出力が表示されます:

Output
sending 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の設定を変更してこれらの変更を反映させる作業に移りましょう。

ステップ2 — 設定ファイルの更新

Nginxはグローバル設定ファイルとサイト固有の設定ファイルの両方を使用します。プロジェクトのyour_domainに対するサーバーブロックファイルを変更します:/etc/nginx/sites-enabled/your_domain

注意:your_domainをドメイン名に置き換え、ステップ1でgrepコマンドを実行したときに出力されたサーバーブロックファイルを変更することを忘れないでください。

まず、エディタで/etc/nginx/sites-enabled/your_domainを開きます:

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

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

/etc/nginx/sites-enabled/your_domain
server {

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

Step 1でgrepによって出力される元のドキュメントルートパスを見逃さないでください。これには、エイリアスやリライト内の場所も含まれます。これらを新しいドキュメントルートの場所に更新する必要があります。

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

ステップ3 — Nginxの再起動

構成の変更を完了したら、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/your_domain/html

Nginxのドキュメントルートを新しい場所に正常に移動しました。

結論

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

もし忙しいまたは成長中のウェブサイトを管理しているなら、高速転送速度を活用するためにNginxをHTTP/2で設定する方法に興味があるかもしれません。如何にしてNginxをHTTP/2で設定するか

Source:
https://www.digitalocean.com/community/tutorials/how-to-move-an-nginx-web-root-to-a-new-location-on-ubuntu-22-04