序章

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

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

前提条件

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

  • Ubuntu18.04サーバーとsudo権限を持つroot以外のユーザー。 これらの権限を持つユーザーを設定する方法の詳細については、 Ubuntu18.04を使用したサーバーの初期設定ガイドを参照してください。
  • Ubuntu18.04にApacheWebサーバーをインストールする方法に従ってApacheをインストールしました。
  • Ubuntu18.04でLet’sEncryptを使用してApacheを保護する方法に従ってドメインにSSLを構成します。 このチュートリアルではドメイン名example.comを使用しますが、これを独自のドメイン名に置き換える必要があります。
  • ドキュメントルートの新しい場所。 このチュートリアルでは、新しい場所に/mnt/volume-nyc3-01ディレクトリを使用します。 DigitalOceanでブロックストレージを使用している場合は、このガイドで、ボリュームを作成して接続する方法を説明します。 ただし、新しいドキュメントルートの場所は、ニーズに基づいて構成できます。 ドキュメントルートを別のストレージデバイスに移動する場合は、デバイスのマウントポイントの下の場所を選択する必要があります。

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

Apacheの新規インストールでは、ドキュメントルートは/var/www/htmlにあります。 ただし、前提条件ガイドに従うことで、新しいドキュメントルート/var/www/example.com/htmlを作成しました。 対応するVirtualHostディレクティブに追加のドキュメントルートがある場合もあります。 このステップでは、ドキュメントルートの場所を確立し、関連するファイルを新しい場所にコピーします。

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

  1. 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は詳細な出力を提供するため、同期の進行状況を追跡できます。

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

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

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

Output
sending 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構成を変更することに移りましょう。

ステップ2—構成ファイルを更新する

Apacheは、グローバル構成ファイルとサイト固有の構成ファイルの両方を利用します。 構成ファイルの階層の背景については、UbuntuまたはDebianVPSでApacheWebサーバーを構成する方法を参照してください。 example.comプロジェクト仮想ホストファイルを変更します。example.com[などのSSL証明書を構成したときに作成された/etc/apache2/sites-enabled/example.com.confおよび/etc/apache2/sites-enabled/example.com-le-ssl.conf X174X]。

注:この場合、example.comyour_domain_nameになり、grepを実行したときに出力された仮想ホストファイルを変更することに注意してください。 ]ステップ1のコマンド。

/etc/apache2/sites-enabled/example.com.confを開くことから始めます。

  1. sudo nano /etc/apache2/sites-enabled/example.com.conf

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

/etc/apache2/sites-enabled/example.com.conf
<VirtualHost *:80>
    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]
</VirtualHost>

サーバーがディレクトリ内のシンボリックリンクをたどることを保証するディレクティブも追加しましょう。

/etc/apache2/sites-enabled/example.com.conf
. . .
<Directory /mnt/volume-nyc3-01/html>
    Options FollowSymLinks
    AllowOverride None
    Require all granted
</Directory>

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

これらの変更を保存した後、SSL構成に注目しましょう。 /etc/apache2/sites-enabled/example.com-le-ssl.confを開きます:

  1. sudo nano /etc/apache2/sites-enabled/example.com-le-ssl.conf

DocumentRootを変更して、新しい場所/mnt/volume-nyc3-01/htmlを反映します。

/etc/apache2/sites-enabled/example.com-le-ssl.conf
<IfModule mod_ssl.c>
<VirtualHost *:443>
    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
. . .
</VirtualHost>
</IfModule>

これで、ドキュメントルートの新しい場所を反映するために必要な構成変更が行われました。

ステップ3—Apacheを再起動する

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

まず、構文がconfigtestで正しいことを確認します。

  1. sudo apachectl configtest

新規インストールでは、次のようなフィードバックが表示されます。

Output
AH00558: 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を再起動します。

  1. sudo systemctl reload apache2

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

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

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

結論

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

忙しいまたは成長しているWebサイトを管理している場合は、本番環境でパフォーマンスのボトルネックに遭遇する前に、Webサーバーの負荷テストを学習してパフォーマンスのボトルネックを特定することをお勧めします。 本番Webアプリケーションサーバーのセットアップを改善する5つの方法のこの比較で、本番エクスペリエンスの改善についてさらに学ぶことができます。