開発者として常にプログラマに徹してしまっていないだろうか。そうすると、どうしてもサーバ知識が不足しがちになる(編集部)
第2回「もっとApacheを知ろう」では、Linuxのシステム起動時に各種のサーバプログラムを自動的に起動させる方法を紹介しました。
今回は、1台のApacheで複数のWebサイトを公開する方法を紹介します。
一般に公開するインターネット向けのサービスだけでなく、開発環境で複数の案件のアプリケーションを同一サーバに設置したい場合などにもたいへん便利です。
Webサイトを新規に公開する場合、まずドメインを取得します。次に、ネームサーバにドメインと各ホストの情報を登録して、ホスト名からIPアドレスを解決できるように設定します(名前解決の仕組みについては別の回で解説する予定です)。
これで、例えば「www.xxx.jp」のように、「ホスト名.ドメイン名」でWebサイトを表現できるようになります。
1台のサーバで複数のサービスを動かす場合、それぞれ異なった「ホスト名.ドメイン名」で同じサーバに接続することになります(どちらの名前でも同じサーバへ到達できるようにネームサーバに設定します)。
このとき、ドキュメントルートが一緒では問題が起こり得ます。同名のファイルやディレクトリは設置できなくなってしまいますし、そもそも別サービスのコンテンツがごちゃ混ぜになってしまいます。また、アクセス制御なども、サービスごとに異なった設定が必要になるかもしれません。
このような場合のために、Apacheでは、「実は同じサーバなんだけど、ホスト名『A』でアクセスされたらここがドキュメントルートでこういう設定、ホスト名『B』でアクセスされたらこっちがドキュメントルートでこんな設定」ということが実現できるようになっています。この仕組みをバーチャルホスト(仮想ホスト)といいます。
なお、Apacheの仮想ホストには、ネットワークのインターフェイスが複数ある(IPアドレスが複数ある)ことを前提とするIPベースの仮想ホストと、IPアドレスは1つでホスト名で分ける名前ベースの仮想ホストの2種類があります。今回はより利用頻度の高い名前ベースの仮想ホストについて解説します。
今回は、以下のような環境で仮想ホストの動作を試してみました。読者の方はご自分の環境に合わせて読み換えてください。
hostsファイルは、ホスト名とIPアドレスの対応を静的に定義しておくためのファイルです。通常は、ネームサーバの情報よりもhostsファイルの情報が優先されるため、テストなどで一時的に名前解決させたい場合などに便利です。ファイルは、WindowsではC:/WINDOWS/system32/drivers/etc/hosts、UNIX系では/etc/hostsになります。
Webブラウザでアクセスするクライアント側でも、Apacheが動作するサーバ側でも、vhost1、vhost2の両方のホスト名からサーバのIPアドレスが解決できるように設定します。hostsファイルに以下のように設定しましょう。
・サーバ側
自分自身を表す「127.0.0.1」の行に、今回の仮想ホスト名(ここではvhost1とvhost2)を追加します
127.0.0.1 cent53 localhost.localdomain localhost vhost1 vhost2
・クライアント側
サーバを表すIPアドレス(ここでは192.168.166.139)の行に、サーバのホスト名を列挙します。
192.168.166.139 cent53 vhost1 vhost2
Copyright © ITmedia, Inc. All Rights Reserved.