はじめに
Ubuntuでは、Nginxウェブサーバは、通常、ルートファイルシステム上にある/var/www/html
に文書を保存します。しかし、場合によっては、ドキュメントルートを別の場所に移動すると便利なことがあります。たとえば、同じNginxインスタンスから複数のウェブサイトを提供する場合、各サイトのドキュメントルートを独自のボリュームに配置すると、特定のサイトやクライアントのニーズに応じてスケーリングできます。
このガイドでは、Nginxのドキュメントルートを新しい場所に移動します。
前提条件
このガイドを完了するには、次のものが必要です:
- Ubuntu 22.04サーバーとsudo特権を持つノンルートユーザー。これらの特権を持つユーザーを設定する方法については、当社のUbuntu 22.04での初期サーバーセットアップガイドを参照してください。
- Nginxがインストールされ、Ubuntu 22.04にNginxをインストールする方法に従っています。
- A TLS/SSL certificate configured for your server. You have three options:
- Let’s Encryptから無料の証明書を取得するには、Ubuntu 22.04でLet’s Encryptを使用してNginxをセキュリティ設定する方法に従ってください。
- Ubuntu 22.04でNginx用の自己署名SSL証明書を作成して構成する方法に従って、自己署名証明書を生成して構成することもできます。
- 別のプロバイダーから購入することもでき、Nginxを使用するように構成するには、Ubuntu 22.04でNginx用の自己署名SSL証明書を作成する手順の3および4に従ってください。
このチュートリアルでは、ドメイン名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
フラグは、grep
がroot
ディレクティブの行と完全なファイル名の両方を出力することを保証します:
新しいサーバーで前提条件のチュートリアルに従った場合、結果は次のようになります:
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
ディレクトリに転送します。
以下のような出力が表示されます:
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の設定を変更してこれらの変更を反映させる作業に移りましょう。
ステップ2 — 設定ファイルの更新
Nginxはグローバル設定ファイルとサイト固有の設定ファイルの両方を使用します。プロジェクトのyour_domain
に対するサーバーブロックファイルを変更します:/etc/nginx/sites-enabled/your_domain
。
注意:your_domain
をドメイン名に置き換え、ステップ1でgrep
コマンドを実行したときに出力されたサーバーブロックファイルを変更することを忘れないでください。
まず、エディタで/etc/nginx/sites-enabled/your_domain
を開きます:
root
で始まる行を見つけ、新しいルートの場所で更新します。この場合、/mnt/volume-nyc3-01/html
になります。
server {
root /mnt/volume-nyc3-01/html;
index index.html index.htm index.nginx-debian.html;
. . .
}
. . .
Step 1でgrepによって出力される元のドキュメントルートパスを見逃さないでください。これには、エイリアスやリライト内の場所も含まれます。これらを新しいドキュメントルートの場所に更新する必要があります。
必要なすべての変更を行ったら、ファイルを保存して閉じます。
ステップ3 — Nginxの再起動
構成の変更を完了したら、Nginxを再起動して結果をテストできます。
まず、構文が正しいことを確認してください。
すべてが正しい場合、次のように返されるはずです:
Outputnginx: the configuration file /etc/nginx/nginx.conf syntax is ok
nginx: configuration file /etc/nginx/nginx.conf test is successful
テストに失敗した場合は、問題を追跡して修正します。
テストが成功したら、Nginxを再起動します。
サーバーが再起動したら、影響を受けるサイトを訪問して正常に動作していることを確認してください。すべてが順調であることを確認したら、データの元のコピーを削除するのを忘れないでください。
Nginxのドキュメントルートを新しい場所に正常に移動しました。
結論
このチュートリアルでは、Nginxのドキュメントルートを新しい場所に変更する方法をカバーしました。これにより、1つのサーバーで複数のサイトを効果的に管理するなど、基本的なウェブサーバーの管理に役立ちます。また、ウェブサイトのニーズが変化するにつれてスケーリングする際に役立つネットワークブロックストレージなどの代替ストレージデバイスを活用することもできます。
もし忙しいまたは成長中のウェブサイトを管理しているなら、高速転送速度を活用するためにNginxをHTTP/2で設定する方法に興味があるかもしれません。如何にしてNginxをHTTP/2で設定するか