前書き
Ubuntuでは、Apache web serverはドキュメントを/var/www/html
に保存します。これは通常、残りのオペレーティングシステムとともにルートファイルシステムにあります。 ただし、ドキュメントルートを別の場所(別のマウントされたファイルシステムなど)に移動すると便利な場合があります。 たとえば、同じApacheインスタンスから複数のWebサイトを提供する場合、各サイトのドキュメントルートを独自のボリュームに配置すると、特定のサイトまたはクライアントのニーズに応じて拡張できます。
このガイドでは、Apacheドキュメントルートを新しい場所に移動します。
前提条件
このガイドを完了するには、次のものが必要です。
-
Ubuntu 18.04サーバーと、sudo特権を持つ非rootユーザー。 これらの権限を持つユーザーを設定する方法の詳細については、Initial Server Setup with Ubuntu 18.04ガイドをご覧ください。
-
How To Install the Apache Web Server on Ubuntu 18.04に続いてApacheがインストールされました。
-
How To Secure Apache with Let’s Encrypt on Ubuntu 18.04の後にドメイン用に構成されたSSL。 このチュートリアルではドメイン名example.comを使用しますが、これを独自のドメイン名に置き換える必要があります。
-
ドキュメントルートの新しい場所。 このチュートリアルでは、新しい場所に
/mnt/volume-nyc3-01
ディレクトリを使用します。 DigitalOceanでブロックストレージを使用している場合、this guideは、ボリュームを作成して接続する方法を示します。 ただし、新しいドキュメントルートの場所は、ニーズに基づいて構成できます。 ドキュメントルートを別のストレージデバイスに移動する場合は、デバイスのマウントポイントの下の場所を選択します。
[[step-1 -—- copying-files-to-the-new-location]] ==ステップ1—ファイルを新しい場所にコピーする
Apacheの新規インストールでは、ドキュメントルートは/var/www/html
にあります。 ただし、前提条件ガイドに従うことにより、新しいドキュメントルート/var/www/example.com/html
を作成しました。 対応するVirtualHost
ディレクティブに追加のドキュメントルートがある場合もあります。 この手順では、ドキュメントルートの場所を確立し、関連するファイルを新しい場所にコピーします。
grep
を使用して、ドキュメントのルートの場所を検索できます。 /etc/apache2/sites-enabled
ディレクトリを検索して、アクティブなサイトに焦点を絞りましょう。 -R
フラグは、grep
が出力にDocumentRoot
と完全なファイル名の両方を出力することを保証します。
grep -R "DocumentRoot" /etc/apache2/sites-enabled
新しいサーバーで前提条件のチュートリアルに従った場合、結果は次のようになります。
Output/etc/apache2/sites-enabled/example.com-le-ssl.conf: DocumentRoot /var/www/example.com/html
/etc/apache2/sites-enabled/example.com.conf: DocumentRoot /var/www/example.com/html
既存のセットアップがある場合、結果はここに表示されるものと異なる場合があります。 いずれの場合も、grep
からのフィードバックを使用して、目的のファイルを移動し、適切な構成ファイルを更新していることを確認できます。
ドキュメントルートの場所を確認したので、rsync
を使用してファイルを新しい場所にコピーできます。 -a
フラグを使用すると、アクセス許可とその他のディレクトリプロパティが保持され、-v
は詳細な出力を提供するため、同期の進行状況を追跡できます。
[.note]#Note:ディレクトリに末尾のスラッシュがないことを確認してください。これは、タブ補完を使用する場合に追加される可能性があります。 末尾にスラッシュがある場合、rsync
は、ディレクトリの内容を、それを含むhtml
ディレクトリに転送するのではなく、マウントポイントにダンプします。
#
sudo rsync -av /var/www/example.com/html /mnt/volume-nyc3-01
次のような出力が表示されます。
Outputsending incremental file list
html/
html/index.html
sent 318 bytes received 39 bytes 714.00 bytes/sec
total size is 176 speedup is 0.49
ファイルを配置したら、これらの変更を反映するためにApache構成を変更します。
[[step-2 -—- updating-the-configuration-files]] ==ステップ2—構成ファイルの更新
Apacheは、グローバル構成ファイルとサイト固有の構成ファイルの両方を使用します。 構成ファイルの階層に関する背景については、How To Configure the Apache Web Server on an Ubuntu or Debian VPSを参照してください。 the virtual host files for our example.com
projectを変更します:configured SSL certificates for example.com
のときに作成された/etc/apache2/sites-enabled/example.com.conf
と/etc/apache2/sites-enabled/example.com-le-ssl.conf
。
[.note]#Note:この場合、example.com
はyour_domain_name
になり、grep
を実行したときに出力された仮想ホストファイルを変更することに注意してください。手順1のコマンド。
#
/etc/apache2/sites-enabled/example.com.conf
を開くことから始めます。
sudo nano /etc/apache2/sites-enabled/example.com.conf
DocumentRoot
で始まる行を見つけて、新しいルートの場所で更新します。 この場合、これは/mnt/volume-nyc3-01/html
になります。
/etc/apache2/sites-enabled/example.com.conf
ServerAdmin [email protected]
ServerName example.com
ServerAlias www.example.com
DocumentRoot /mnt/volume-nyc3-01/html
ErrorLog ${APACHE_LOG_DIR}/error.log
CustomLog ${APACHE_LOG_DIR}/access.log combined
RewriteEngine on
RewriteCond %{SERVER_NAME} =www.example.com [OR]
RewriteCond %{SERVER_NAME} =example.com
RewriteRule ^ https://%{SERVER_NAME}%{REQUEST_URI} [END,NE,R=permanent]
また、ディレクトリ内のシンボリックリンクをサーバーが追跡するようにディレクティブを追加しましょう。
/etc/apache2/sites-enabled/example.com.conf
. . .
Options FollowSymLinks
AllowOverride None
Require all granted
エイリアスや書き換えを含め、ステップ1でgrep
が出力したDocumentRoot
に注意してください。 また、これらを更新して、新しいドキュメントルートの場所を反映することもできます。
これらの変更を保存した後、SSL構成に注目しましょう。 /etc/apache2/sites-enabled/example.com-le-ssl.conf
を開きます:
sudo nano /etc/apache2/sites-enabled/example.com-le-ssl.conf
新しい場所/mnt/volume-nyc3-01/html
を反映するようにDocumentRoot
を変更します。
/etc/apache2/sites-enabled/example.com-le-ssl.conf
ServerAdmin [email protected]
ServerName example.com
ServerAlias www.example.com
DocumentRoot /mnt/volume-nyc3-01/html
ErrorLog ${APACHE_LOG_DIR}/error.log
CustomLog ${APACHE_LOG_DIR}/access.log combined
. . .
これで、ドキュメントルートの新しい場所を反映するために必要な構成変更が行われました。
[[step-3 -—- restarting-apache]] ==ステップ3—Apacheを再起動します
設定の変更が完了したら、Apacheを再起動して結果をテストできます。
まず、構文がconfigtest
で正しいことを確認します。
sudo apachectl configtest
新規インストールでは、次のようなフィードバックが得られます。
OutputAH00558: apache2: Could not reliably determine the server's fully qualified domain name, using 127.0.1.1. Set the 'ServerName' directive globally to suppress this message
Syntax OK
一番上の行を抑制したい場合は、ServerName
ディレクティブをメイン(グローバル)Apache構成ファイルの/etc/apache2/apache2.conf
に追加するだけです。 ServerName
は、サーバーのドメインまたはIPアドレスにすることができます。 ただし、これは単なるメッセージであり、サイトの機能には影響しません。 出力にSyntax OK
が含まれている限り、続行する準備ができています。
次のコマンドを使用して、Apacheを再起動します。
sudo systemctl reload apache2
サーバーが再起動したら、影響を受けるサイトにアクセスし、期待どおりに機能していることを確認します。 すべてが正常であることを確認したら、データの元のコピーを削除することを忘れないでください:
sudo rm -Rf /var/www/example.com/html
これで、Apacheドキュメントルートを新しい場所に正常に移動できました。
結論
このチュートリアルでは、Apacheドキュメントルートを新しい場所に変更する方法について説明しました。 これは、1台のサーバーで複数のサイトを効果的にホストするなど、基本的なWebサーバー管理に役立ちます。 また、ネットワークブロックストレージなどの代替ストレージデバイスを利用することもできます。これは、ニーズの変化に応じてWebサイトをスケーリングするのに役立ちます。
忙しい、または成長しているWebサイトを管理している場合は、本番環境でパフォーマンスのボトルネックに遭遇する前に、how to load test your web serverを学習してパフォーマンスのボトルネックを特定することをお勧めします。 このfive ways to improve your production web application server setupの比較で、本番エクスペリエンスの向上についてさらに学ぶことができます。