ApacheWebルートをUbuntu20.04の新しい場所に移動する方法
序章
Ubuntuでは、ApacheWebサーバーはに保存されているドキュメントを提供します var/www/html
デフォルトではディレクトリ。 このディレクトリは、ドキュメントルートと呼ばれます。 管理者またはユーザーがサーバーにリクエストを送信すると、ドキュメントルートから適切なファイルで応答します。
このディレクトリは通常、残りのオペレーティングシステムとともにルートファイルシステムにあります。 ただし、ドキュメントルートを別のマウントされたファイルシステムなどの別の場所に移動すると便利な場合があります。 たとえば、同じApacheインスタンスから複数のWebサイトにサービスを提供する場合、各サイトのドキュメントルートを独自のボリュームに配置すると、特定のサイトまたはクライアントのニーズに応じて拡張できます。
このガイドでは、Apacheドキュメントルートをデフォルトの場所である var/www/html
新しい場所に。
前提条件
このガイドを完了するには、次のものが必要です。
- Ubuntu20.04サーバーとsudo権限を持つ非rootユーザー。 これらの権限を持つユーザーを設定する方法の詳細については、 Ubuntu20.04を使用したサーバーの初期設定ガイドをご覧ください。
- サーバーにインストールされているApache。 Ubuntu20.04ガイドにApacheWebサーバーをインストールする方法に従ってこれを設定する方法を学びます。
- ドメイン用に構成されたSSL。 Ubuntu20.04ガイドでLet’sEncryptを使用してApacheを保護する方法に従ってこれを構成します。
- ドキュメントルートの新しい場所。 このチュートリアルでは、
/mnt/volume_nyc3_01
この新しい場所のディレクトリとして使用されます。 このガイドの手順では、マウントされたブロックストレージデバイスの例を使用していますが、システム上の任意のディレクトリの場所を新しいドキュメントルートとして使用して、Webコンテンツを提供できます。
DigitalOceanのブロックストレージボリュームを使用している場合は、このガイドで、ボリュームを作成して接続する方法を説明します。 新しいドキュメントルートの場所は、ニーズに基づいて構成できます。 ドキュメントルートを別のストレージデバイスに移動する場合は、デバイスのマウントポイントの下の場所を選択する必要があります。
ステップ1—ファイルを新しい場所にコピーする
前提条件のチュートリアルに従った場合は、次の場所に新しいドキュメントルートが作成されます。 /var/www/your_domain
. 対応するドキュメントルートが追加されている場合もあります VirtualHost
ディレクティブ。 関連するファイルを新しい場所にコピーする前に、現在のドキュメントルートの場所を確立することが重要です。
を使用して、ドキュメントのルートの場所を検索します grep
検索するコマンド /etc/apache2/sites-enabled
ディレクトリ。 これにより、焦点がアクティブなサイトに限定されます。 The -R
フラグは grep
両方を印刷します DocumentRoot
および出力の完全なファイル名:
- grep -R "DocumentRoot" /etc/apache2/sites-enabled
次の出力は、現在の場所を示しています DocumentRoot
:
Output/etc/apache2/sites-enabled/your_domain-le-ssl.conf: DocumentRoot /var/www/your_domain
/etc/apache2/sites-enabled/your_domain.conf: DocumentRoot /var/www/your_domain
既存の設定がある場合、結果はここに表示されているものと異なる場合があります。 どちらの場合でも、からの出力を使用できます grep
目的のファイルを移動し、適切な構成ファイルを更新していることを確認します。
ドキュメントルートの場所を確認したので、ファイルを新しい場所にコピーします。 rsync
:
注:を使用する場合 rsync
コマンド、2つのことに注意してください:
- の後にスラッシュが続くことに注意してください
your_domain
. ここに末尾のスラッシュを含めない場合は、このディレクトリをサブディレクトリとして新しいドキュメントルートにコピーします。 たとえば、新しいドキュメントルートは次の構造になります。/var/www/mnt/volume_nyc3_01/your_domain
. これにより、サービスを提供しようとしたときに問題が発生しますindex.html
新しいドキュメントルートからのファイル。 - 次に、新しいドキュメントルートディレクトリにno末尾のスラッシュがあります
/mnt/volume_nyc3_01
.
- sudo rsync -av /var/www/your_domain/ /mnt/volume_nyc3_01
The -a
フラグは、アクセス許可とその他のディレクトリプロパティを保持しますが、 -v
フラグは詳細な出力を提供するため、同期の進行状況を追跡できます。
出力には次のものが含まれている必要があります。
Outputsending incremental file list
./
index.html
sent 265 bytes received 38 bytes 606.00 bytes/sec
total size is 134 speedup is 0.44
ファイルを配置したら、これらの変更を反映するようにApache構成の変更に進むことができます。
ステップ2—構成ファイルを更新する
ファイルを見つけて新しいドキュメントルートにコピーした後、この新しい場所を指すように仮想ホストファイルを構成できます。
開くことから始めます /etc/apache2/sites-enabled/your_domain.conf
お好みのエディターで。 この例では、 nano
:
- sudo nano /etc/apache2/sites-enabled/your_domain.conf
で始まる行を見つける DocumentRoot
新しいルートの場所に置き換えます。 この例では、新しいルートの場所は次のとおりです。 /mnt/volume_nyc3_01
:
<VirtualHost *:80>
ServerAdmin sammy@your_domain
ServerName your_domain
ServerAlias www.your_domain
DocumentRoot /mnt/volume_nyc3_01
ErrorLog ${APACHE_LOG_DIR}/error.log
CustomLog ${APACHE_LOG_DIR}/access.log combined
RewriteEngine on
RewriteCond %{SERVER_NAME} =www.your_domain [OR]
RewriteCond %{SERVER_NAME} =your_domain
RewriteRule ^ https://%{SERVER_NAME}%{REQUEST_URI} [END,NE,R=permanent]
</VirtualHost>
この後 <VirtualHost>
ディレクティブで、これらの強調表示された行を追加して、サーバーがディレクトリ内のシンボリックリンクをたどることを確認します。
. . .
</VirtualHost>
<Directory /mnt/volume_nyc3_01>
Options FollowSymLinks
AllowOverride None
Require all granted
</Directory>
全体として、あなたの /etc/apache2/sites-enabled/your_domain.conf
ファイルには、新しいファイルに固有の次のすべての行を含める必要があります DocumentRoot
位置:
<VirtualHost *:80>
ServerAdmin sammy@your_domain
ServerName your_domain
ServerAlias www.your_domain
DocumentRoot /mnt/volume_nyc3_01
ErrorLog ${APACHE_LOG_DIR}/error.log
CustomLog ${APACHE_LOG_DIR}/access.log combined
RewriteEngine on
RewriteCond %{SERVER_NAME} =www.your_domain [OR]
RewriteCond %{SERVER_NAME} =your_domain
RewriteRule ^ https://%{SERVER_NAME}%{REQUEST_URI} [END,NE,R=permanent]
</VirtualHost>
<Directory /mnt/volume_nyc3_01>
Options FollowSymLinks
AllowOverride None
Require all granted
</Directory>
保存してエディターを終了します。 あなたはから出ることができます nano
を押すことによって CTRL + X
、 それから Y
、 その後 ENTER
.
これらの変更を行った後、SSL構成に注意を向けることができます。 を開きます /etc/apache2/sites-enabled/your_domain-le-ssl.conf
ファイル:
- sudo nano /etc/apache2/sites-enabled/your_domain-le-ssl.conf
前の構成ファイルと同様に、 DocumentRoot
新しい場所を反映するには:
<IfModule mod_ssl.c>
<VirtualHost *:443>
ServerAdmin sammy@your_domain
ServerName your_domain
ServerAlias www.your_domain
DocumentRoot /mnt/volume_nyc3_01
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
Syntax OK
注:この出力の一番上の行を抑制したい場合は、 ServerName
グローバルApache構成ファイルへのディレクティブ /etc/apache2/apache2.conf
. The ServerName
サーバーのドメインまたはIPアドレスにすることができます。
エディターでファイルを開きます。
- sudo nano /etc/apache2/apache2.conf
を配置します ServerName
構成ファイルの下部にあるディレクティブ your_domain
またはサーバーのIPアドレス:
# This is the main Apache server configuration file. It contains the
# configuration directives that give the server its instructions.
# See http://httpd.apache.org/docs/2.4/ for detailed information about
# the directives and /usr/share/doc/apache2/README.Debian about Debian specific
# hints.
...
ServerName your_domain
保存してエディターを終了します。
ただし、これは単なるメッセージであり、サイトの機能には影響しません。 出力に含まれている限り Syntax OK
、続行する準備ができました。
次のコマンドを使用して、Apacheを再起動します。
- sudo systemctl reload apache2
サーバーが再起動したら、影響を受けるサイトにアクセスして、期待どおりに機能していることを確認します。 すべてが正常に機能していることを確認したら、データの元のコピーを削除することを忘れないでください。
- sudo rm -Rf /var/www/your_domain
これで、Apacheドキュメントルートが新しい場所に正常に移動されました。
結論
このチュートリアルでは、Apacheドキュメントルートを新しい場所に変更する方法を学びました。 これは、単一のサーバーで複数のサイトを効果的にホストするなど、基本的なWebサーバーの管理に役立ちます。 また、ネットワークブロックストレージなどの代替ストレージデバイスを利用することもできます。これは、ニーズの変化に応じてWebサイトを拡張するのに役立ちます。