Ubuntu 16.04でNginxのウェブルートを新しい場所に移動する方法
Ubuntu 16.04を使用していませんか?別のバージョンまたはディストリビューションを選択してください。
紹介
Ubuntuでは、デフォルトでNginxウェブサーバーはそのドキュメントを/var/www/htmlに保存します。この場所は通常、オペレーティングシステムの残りの部分と一緒にルートファイルシステムにあります。しかし、時にはドキュメントルートを別の場所、たとえば別にマウントされたファイルシステムに移動することが役立ちます。たとえば、同じNginxインスタンスから複数のウェブサイトを提供している場合、各サイトのドキュメントルートをそれぞれのボリュームに配置することで、特定のサイトやクライアントのニーズに応じてスケールを調整することができます。
このガイドでは、Nginxのドキュメントルートを新しい場所に移動する方法を説明します。
前提条件
このガイドを完了するには、以下が必要です。
非rootユーザーでsudo権限を持つUbuntu 16.04サーバー。これらの権限を持つユーザーの設定方法については、当社の「Ubuntu 16.04の初期サーバー設定」ガイドで詳しく学ぶことができます。
-
Nginxウェブサーバー: まだ設定していない場合は、詳細な記事「Ubuntu 16.04にNginxをインストールする方法」がガイドになります。
ドキュメントルートの新しい場所: 新しいドキュメントルートの場所は、お客様のニーズに基づいて完全に設定可能です。ドキュメントルートを別のストレージデバイスに移動する場合は、そのデバイスのマウントポイントの下にある場所を選択する必要があります。この例では、
/mnt/volume-nyc1-01ディレクトリを使用します。DigitalOceanでブロックストレージを使用している場合、このガイドでは、このチュートリアルを続ける前にドライブをマウントする方法を説明します。
ステップ1 — ファイルを新しい場所にコピーする
新しい Nginx のインストールでは、ドキュメントルートは /var/www/html にあります。しかし、既存のサーバーで作業している場合、対応するサーバーブロックのディレクティブに複数のドキュメントルートを含む、かなり異なるセットアップがあるかもしれません。
追加のドキュメントルートの位置をgrepを使用して検索できます。私たちは、活動中のサイトに焦点を当てるために、/etc/nginx/sites-enabledディレクトリ内を検索します。-Rフラグを使用すると、grepはrootディレクティブがある行とその出力のファイル名の両方を印刷します:
- grep "root" -R /etc/nginx/sites-enabled
結果は以下の出力のように見えるでしょうが、名前や結果の数は既存のインストールでは異なる可能性があります。
/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ディレクトリに移動することはありません。
- sudo rsync -av /var/www/html /mnt/volume-nyc1-01
さあ、設定を更新する準備が整いました。
ステップ 2 — 設定ファイルの更新
Nginxは、グローバル設定ファイルとサイト固有の設定ファイルの両方を利用します。設定ファイルの階層についての背景情報は、「仮想プライベートサーバーでのNginxウェブサーバーの設定方法」をご覧ください。
既存のインストールを使用している場合は、以前に見つけたファイルをgrepコマンドで修正する必要があります。私たちの例では、defaultと呼ばれるデフォルトの設定ファイルについて見ていきます。
エディターでファイルを開く:
- sudo nano /etc/nginx/sites-enabled/default
その後、root で始まる行を見つけて、新しい場所で更新してください。
注意:元のパスが表示された他の場所を探して、それらも新しい場所に変更する必要があります。ルートに加えて、エイリアスやリライトなど、更新が必要なものも見つかるかもしれません。
. . .
# 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の再起動
設定変更が完了したら、このコマンドで構文が正しいことを確認できます:
- sudo nginx -t
すべてが順調であれば、次のように返すべきです:
nginx: 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/html
結論
このチュートリアルでは、Nginxのドキュメントルートを新しい場所に変更する方法について説明しました。これは、単一のサーバー上で複数のサイトを効果的に管理するなど、基本的なウェブサーバーの管理に役立ちます。また、ネットワークブロックストレージなどの代替ストレージデバイスを利用できるようになり、ウェブサイトのニーズが変化する際にスケーリングするための重要なステップとなります。
忙しいまたは成長しているウェブサイトを管理している場合、コンテンツの高い転送速度を活用するためにNginxをHTTP/2で設定する方法を学ぶことに興味があるかもしれません。また、プロダクションウェブアプリケーションサーバーのセットアップを改善する5つの方法の比較を通して、プロダクション体験を向上させる方法についても詳しく学ぶことができます。