前書き

Ubuntuでは、https://httpd.apache.org/ [Apache Webサーバー]はそのドキュメントをhttps://www.digitalocean.com/community/tutorials/how-to-install-the-apache-web-serverに保存します-on-ubuntu-18-04#step-6-%E2%80%93-getting-familiar-with-important-apache-files-and-directories [+ / var / www / html +]、通常は残りのオペレーティングシステムと共にルートファイルシステムに配置されます。 ただし、ドキュメントルートを別の場所(別のマウントされたファイルシステムなど)に移動すると便利な場合があります。 たとえば、同じApacheインスタンスから複数のWebサイトを提供する場合、各サイトのドキュメントルートを独自のボリュームに配置すると、特定のサイトまたはクライアントのニーズに応じて拡張できます。

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

前提条件

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

  • Ubuntu 18.04サーバーと、sudo特権を持つ非rootユーザー。 これらの権限を持つユーザーをセットアップする方法については、https://www.digitalocean.com/community/tutorials/initial-server-setup-with-ubuntu-18-04 [Ubuntu 18.04での初期サーバーセットアップ]をご覧ください。 ]ガイド。

  • Apache WebサーバーをUbuntu 18.04にインストールするには

  • Let’sでApacheを保護する方法Ubuntu 18.04で暗号化。 このチュートリアルではドメイン名* example.com *を使用しますが、これを独自のドメイン名で置き換える必要があります。

  • ドキュメントルートの新しい場所。 このチュートリアルでは、新しい場所に `+ / mnt / volume-nyc3-01 +`ディレクトリを使用します。 DigitalOceanでBlock Storageを使用している場合は、https://www.digitalocean.com/docs/volumes/how-to/create-and-attach/ [このガイド]で、ボリュームを作成してアタッチする方法を示します。 ただし、新しいドキュメントルートの場所は、ニーズに基づいて構成できます。 ドキュメントルートを別のストレージデバイスに移動する場合は、デバイスのマウントポイントの下の場所を選択します。

手順1-ファイルを新しい場所にコピーする

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

`+ grep `を使用して、ドキュメントルートの場所を検索できます。 ` / etc / apache2 / sites-enabled `ディレクトリで検索して、アクティブなサイトにフォーカスを絞りましょう。 ` -R `フラグは、 ` grep `が出力に ` DocumentRoot +`と完全なファイル名の両方を確実に出力するようにします:

grep -R "DocumentRoot" /etc/apache2/sites-enabled

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

Output/etc/apache2/sites-enabled/-le-ssl.conf:  DocumentRoot /var/www//html
/etc/apache2/sites-enabled/.conf:         DocumentRoot /var/www//html

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

ドキュメントルートの場所を確認したので、 `+ rsync `を使用してファイルを新しい場所にコピーできます。 ` -a `フラグを使用すると、アクセス許可とその他のディレクトリプロパティが保持され、 ` -v +`は詳細な出力を提供するため、同期の進行状況を追跡できます。

sudo rsync -av /var/www//html

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

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構成を変更します。

ステップ2-構成ファイルの更新

Apacheは、グローバル構成ファイルとサイト固有の構成ファイルの両方を使用します。 構成ファイルの階層に関する背景については、https://www.digitalocean.com/community/tutorials/how-to-configure-the-apache-web-server-on-an-ubuntu-or-debianをご覧ください-vps#the-apache-file-hierarchy-in-ubuntu-and-debian [UbuntuまたはDebian VPSでApache Webサーバーを設定する方法]。 “プロジェクトの仮想ホストファイル]: `+ / etc / apache2 / sites-enabled / .conf +`および `+ / etc / apache2 / sites-enabled / -le-ssl.conf + `:https://www.digitalocean.com/community/tutorials/how-to-secure-apache-with-let-s-encrypt-on-ubuntu-18- 04 [“用に設定されたSSL証明書

`+ / etc / apache2 / sites-enabled / .conf +`を開いて開始します。

sudo nano /etc/apache2/sites-enabled/.conf

`+ DocumentRoot `で始まる行を見つけて、新しいルートの場所で更新します。 私たちの場合、これは `+`になります。

/etc/apache2/sites-enabled/example.com.conf

<VirtualHost *:80>
   ServerAdmin [email protected]
   ServerName example.com
   ServerAlias www.example.com
   DocumentRoot
   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

. . .

エイリアスやリライトを含め、ステップ1で「+ grep 」が出力した「 DocumentRoot +」に注意してください。 また、これらを更新して、新しいドキュメントルートの場所を反映することもできます。

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

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

新しい場所である「+」を反映するように「 DocumentRoot +」を変更します。

/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
   ErrorLog ${APACHE_LOG_DIR}/error.log
   CustomLog ${APACHE_LOG_DIR}/access.log combined
. . .
</VirtualHost>
</IfModule>

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

ステップ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

一番上の行を抑制したい場合は、 `+ / etc / apache2 / apache2.conf `にあるメイン(グローバル)Apache設定ファイルに ` ServerName `ディレクティブを追加するだけです。 ` ServerName `には、サーバーのドメインまたはIPアドレスを指定できます。 ただし、これは単なるメッセージであり、サイトの機能には影響しません。 出力に「 Syntax OK +」が含まれている限り、続行できます。

次のコマンドを使用して、Apacheを再起動します。

sudo systemctl reload apache2

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

sudo rm -Rf /var/www//html

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

結論

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

忙しいまたは成長しているWebサイトを管理している場合、https://www.digitalocean.com/community/tutorials/how-to-use-apache-jmeter-to-perform-load-testing-の学習に興味があるかもしれません。 on-a-web-server [Webサーバーの負荷テスト方法]を使用して、本番環境で発生する前にパフォーマンスのボトルネックを特定します。 また、https://www.digitalocean.com/community/tutorials/5-ways-to-improve-your-production-web-application-server-setup [5つの方法実稼働Webアプリケーションサーバーのセットアップを改善する]。