ハウツー:Apacheでバーチャルホストを設定する
Apacheが正しくインストールされていれば、バーチャルホストの設定はApacheの設定ファイルを編集することで簡単に行なうことができる。/etc/apache2ディレクトリにはhttpd.conf、error.conf、server-tuning.confなど数多くの設定ファイルがある。これらのファイルは一般ユーザには読み取りのみ可の設定になっているため、ファイルを変更するためにはsudo
やsu
を使用してroot権限を得る必要がある。
/etc/apache2/httpd.confを開いて以下のような行を見つけよう。
Include /etc/apache2/vhosts.d/*.conf
上記の行を変更して、.confファイルを具体的に指定するようにする。ここでは、後ほど作成するvhost.confというファイルを指定する。
Include /etc/apache2/vhosts.d/vhost.conf
変更が完了したら、ファイルを保存しよう。次に再びroot権限で、/vhosts.d/にあるvhost.templateファイルの名前を以下のように変更してvhost.confを作成する。
# mv vhost.template vhost.conf
それではvhost.confファイルを編集して、1つのIPアドレス上で複数のウェブサイトを名前ベースのバーチャルホストで運用するように設定しよう。まず始めに、「NamevirtualHost *
」としてバーチャルホスト用のディレクティブを追加する。なおアスタリスクはワイルドカード文字であり、すべてのアドレスを表わす。次に以下のようにして、NamevirtualHostディレクティブの下に1つめのバーチャルホストを追加しよう。
NamevirtualHost * <VirtualHost *> ServerAdmin youremail@yoursite.com DocumentRoot /srv/www/htdocs/directory_of_your_choice/ ServerAlias yourdomain.com *.yourdomain.com <virtualHost>
最初の部分(<VirtualHost *>
)は、バーチャルホストを定義するブロックを開始するためのタグだ。ServerAdmin
は、404などのエラーが起こった場合に管理者の電子メールアドレスを表示するための設定だ。DocumentRoot
は、定義するサイトのルートディレクトリで、例えば私の場合、これまでにホストしたサイトはすべて「/srv/www/htdocs/バーチャルホスト関連/サイト名/」の中に各サイト用のファイルを置くようにしていた。次はServerAlias
またはServerName
で、サイトを閲覧したりサイトにアクセスするために使用することができる名前を指定する。ServerAlias
やServerName
ごとに異なるDocumentRoot
を指定することによって、それぞれのドメイン名に対応するそれぞれ異なるページを表示させることができる。上記でServerAlias
に2つのエントリがある理由は、サーバが複数のServerName
で呼び出されることがしばしばあるからだ。そのような場合には、ServerAlias
に複数のアドレスを設定しておくことができる。なおワイルドカードは、.yourdomain.comの前に何が指定されても良いようにするために使用している。
それでは、(1つはサーバのメインのIPアドレス、もう1つはlocalhost(127.0.0.1)上に)複数のバーチャルホストを2つの異なるNameVirtualHost
ブロックを使って設定したい場合はどうなるだろうか。コードは以下のようになる。
NameVirtualHost * <VirtualHost *> ServerAdmin admin@mixfevers.com DocumentRoot /srv/www/htdocs/ ServerAlias mixfevers.com *.mixfevers.com </VirtualHost> <VirtualHost *> ServerAdmin admin@snapnshare.com DocumentRoot /srv/www/htdocs/snapnshare/ ServerAlias snapnshare.com *.snapnshare.com </VirtualHost> <VirtualHost *> ServerAdmin admin@boomerwebzine.com DocumentRoot /srv/www/htdocs/~/boomer/ ServerAlias boomerwebzine.com *.boomerwebzine.com </VirtualHost> NameVirtualHost 127.0.0.1 <VirtualHost 127.0.0.1> DocumentRoot /srv/www/htdocs/ ServerName localhost </VirtualHost>
変更を有効にするためには、設定ファイルを保存した後、Apacheをroot権限で再起動する必要がある。
# /etc/init.d/apache2 restart
上記の設定は、1台のサーバ上で複数のサイトをホストする小企業や、ウェブサイトをデザインしてホストしたいホビイスト向けとしてうまく機能するだろう。特定のドメイン名に関するリクエストに対してどのページを表示したらいいのかを設定しているので、IPアドレスが静的な場合だけでなく動的な場合にもこの設定を使うことができる。
なおApacheプロジェクトによって、様々なバーチャルホストの設定/管理についての文書が提供されている。
James Leesはウェブサイト開発者。ネットワークエンジニアリングとウェブ開発を学ぶために大学へ行きたいと考えている。一途なLinuxユーザ。