前回の投稿では、単一のWebサイト用にApacheWebサーバーを構成する方法について説明しました。とても簡単でした。この投稿では、Apacheの単一インスタンスを使用して複数のWebサイトにサービスを提供する方法を紹介します。
注:この記事は、Apache2.4.29でFedora27を使用する仮想マシンで作成しました。別のディストリビューションまたはリリースのFedoraを使用している場合は、使用するコマンド、構成ファイルの場所と内容が異なる場合があります。
以前の記事で述べたように、Apacheのすべての構成ファイルは/etc/httpd/conf
にあります。 および/etc/httpd/conf.d
。ウェブサイトのデータは/var/www
にあります デフォルトでは。複数のWebサイトがある場合は、ホストするサイトごとに1つずつ、複数の場所を提供する必要があります。
名前ベースの仮想ホスティング
名前ベースの仮想ホスティングを使用すると、複数のWebサイトに単一のIPアドレスを使用できます。 Apacheを含む最新のWebサーバーは、hostname
を使用します 指定されたURLの一部で、ページリクエストに応答する仮想ウェブホストを決定します。これには、単一のサイトよりも少しだけ多くの構成が必要です。
単一のWebサイトのみで開始する場合でも、仮想ホストとして設定することをお勧めします。これにより、後でサイトを追加しやすくなります。この記事では、前の記事で中断したところから再開するので、元のWebサイトである名前ベースの仮想Webサイトをセットアップする必要があります。
元のウェブサイトの準備
2番目のWebサイトを設定する前に、既存のサイトで名前ベースの仮想ホスティングを機能させる必要があります。既存のWebサイトがない場合は、戻って今すぐ作成してください。
サイトを作成したら、次のスタンザを/etc/httpd/conf/httpd.conf
の下部に追加します。 構成ファイル(このスタンザを追加することは、httpd.conf
に加える必要がある唯一の変更です。 ファイル):
<VirtualHost 127.0.0.1:80>
DocumentRoot /var/www/html
ServerName www.site1.org
</VirtualHost>
これが最初の仮想ホストスタンザになり、デフォルトの定義にするために最初のままにする必要があります。つまり、IPアドレス、またはこのIPアドレスに解決されるが、特定の名前付きホスト構成スタンザを持たない別の名前によるサーバーへのHTTPアクセスは、この仮想ホストに転送されます。他のすべての仮想ホスト構成スタンザは、これに従う必要があります。
また、/etc/hosts
のエントリを使用してWebサイトを設定する必要があります 名前解決を提供します。前回は、localhost
のIPアドレスを使用しました 。通常、これは使用するネームサービスを使用して行われます。たとえば、GoogleやGodaddy。テストWebサイトの場合、localhost
に新しい名前を追加してこれを行います /etc/hosts
の行 。後でこのファイルを再度編集する必要がないように、両方のWebサイトのエントリを追加します。結果は次のようになります:
127.0.0.1 localhost localhost.localdomain localhost4 localhost4.localdomain4 www.site1.org www.site2.org
/var/www/html/index.html
も変更しましょう ファイルをもう少し明示的にします。次のようになります(これをWebサイト番号1として識別するための追加のテキストがあります):
<h1>Hello World</h1>
Web site 1.
HTTPDサーバーを再起動して、httpd
への変更を有効にします 構成。その後、コマンドラインからLynxテキストモードブラウザを使用してWebサイトを表示できます。
[root@testvm1 ~]# systemctl restart httpd
[root@testvm1 ~]# lynx www.site1.org
Hello World
Web site 1.
<snip>
Commands: Use arrow keys to move, '?' for help, 'q' to quit, '<-' to go back.
Arrow keys: Up and Down to move. Right to follow a link; Left to go back.
H)elp O)ptions P)rint G)o M)ain screen Q)uit /=search [delete]=history list
元のWebサイトの改訂されたコンテンツが表示され、明らかなエラーがないことがわかります。 「Q」キーを押してから「Y」を押して、LynxWebブラウザを終了します。
2番目のWebサイトの構成
これで、2番目のWebサイトをセットアップする準備が整いました。次のコマンドを使用して、新しいWebサイトのディレクトリ構造を作成します。
[root@testvm1 html]# mkdir -p /var/www/html2
2番目のWebサイトは単に2番目のhtml
であることに注意してください 同じ/var/www
内のディレクトリ 最初のサイトとしてのディレクトリ。
次に、新しいインデックスファイル/var/www/html2/index.html
を作成します。 、次の内容で(このインデックスファイルは、元のWebサイトのものと区別するために少し異なります):
<h1>Hello World -- Again</h1>
Web site 2.
httpd.conf
に新しい構成スタンザを作成します 2番目のWebサイトについては、前の仮想ホストスタンザの下に配置します(2つは非常によく似ているはずです)。このスタンザは、2番目のサイトのHTMLファイルの場所をWebサーバーに通知します。
<VirtualHost 127.0.0.1:80>
DocumentRoot /var/www/html2
ServerName www.site2.org
</VirtualHost>
HTTPDを再起動し、Lynxを使用して結果を表示します。
[root@testvm1 httpd]# systemctl restart httpd
[root@testvm1 httpd]# lynx www.site2.org
Hello World -- Again
Web site 2.
<snip>
Commands: Use arrow keys to move, '?' for help, 'q' to quit, '<-' to go back.
Arrow keys: Up and Down to move. Right to follow a link; Left to go back.
H)elp O)ptions P)rint G)o M)ain screen Q)uit /=search [delete]=history list
ここでは、このスペースに合うように結果の出力を圧縮しました。ページの違いは、これが2番目のWebサイトであることを示しています。両方のWebサイトを同時に表示するには、別のターミナルセッションを開き、LynxWebブラウザーを使用して他のサイトを表示します。
その他の考慮事項
この簡単な例は、ApacheHTTPDサーバーの単一インスタンスで2つのWebサイトを提供する方法を示しています。他の要因を考慮すると、仮想ホストの構成は少し複雑になります。
たとえば、これらのWebサイトの一方または両方にいくつかのCGIスクリプトを使用したい場合があります。これを行うには、/var/www
にCGIプログラムのディレクトリを作成します。 :/var/www/cgi-bin
および/var/www/cgi-bin2
、HTMLディレクトリの命名と一貫性を保つため。次に、仮想ホストスタンザに構成ディレクティブを追加して、CGIスクリプトのディレクトリの場所を指定する必要があります。各Webサイトには、ファイルをダウンロードできるディレクトリを含めることもできます。これには、適切な仮想ホストスタンザへのエントリも必要になります。
ApacheのWebサイトでは、複数のWebサイトを管理するための他の方法と、パフォーマンスの調整からセキュリティまでの構成オプションについて説明しています。
Apacheは、単純なものから非常に複雑なものまで、さまざまなWebサイトを管理するために使用できる強力なWebサーバーです。全体的なシェアは縮小していますが、Apacheはインターネット上で最も一般的に使用されている単一のHTTPDサーバーのままです。