Apacheで仮想ホストを動かそういまさら聞けない!? Web系開発者のためのサーバ知識(3)(1/3 ページ)

開発者として常にプログラマに徹してしまっていないだろうか。そうすると、どうしてもサーバ知識が不足しがちになる(編集部)

» 2010年01月29日 00時00分 公開
[竹下肯己株式会社 qnote]

 第2回「もっとApacheを知ろう」では、Linuxのシステム起動時に各種のサーバプログラムを自動的に起動させる方法を紹介しました。

 今回は、1台のApacheで複数のWebサイトを公開する方法を紹介します。

 一般に公開するインターネット向けのサービスだけでなく、開発環境で複数の案件のアプリケーションを同一サーバに設置したい場合などにもたいへん便利です。

 Webサイトを新規に公開する場合、まずドメインを取得します。次に、ネームサーバにドメインと各ホストの情報を登録して、ホスト名からIPアドレスを解決できるように設定します(名前解決の仕組みについては別の回で解説する予定です)。

 これで、例えば「www.xxx.jp」のように、「ホスト名.ドメイン名」でWebサイトを表現できるようになります。

 1台のサーバで複数のサービスを動かす場合、それぞれ異なった「ホスト名.ドメイン名」で同じサーバに接続することになります(どちらの名前でも同じサーバへ到達できるようにネームサーバに設定します)。

 このとき、ドキュメントルートが一緒では問題が起こり得ます。同名のファイルやディレクトリは設置できなくなってしまいますし、そもそも別サービスのコンテンツがごちゃ混ぜになってしまいます。また、アクセス制御なども、サービスごとに異なった設定が必要になるかもしれません。

 このような場合のために、Apacheでは、「実は同じサーバなんだけど、ホスト名『A』でアクセスされたらここがドキュメントルートでこういう設定、ホスト名『B』でアクセスされたらこっちがドキュメントルートでこんな設定」ということが実現できるようになっています。この仕組みをバーチャルホスト(仮想ホスト)といいます。

 なお、Apacheの仮想ホストには、ネットワークのインターフェイスが複数ある(IPアドレスが複数ある)ことを前提とするIPベースの仮想ホストと、IPアドレスは1つでホスト名で分ける名前ベースの仮想ホストの2種類があります。今回はより利用頻度の高い名前ベースの仮想ホストについて解説します。

仮想ホストの準備

 今回は、以下のような環境で仮想ホストの動作を試してみました。読者の方はご自分の環境に合わせて読み換えてください。

  • ネットワークはローカル(IPアドレス帯は192.168.166.0/24)
  • サーバのIPアドレスは192.168.166.139
  • サーバのホスト名は、
    ⇒Linuxインストール時に指定したホスト名はcent53
    ⇒サイト1のためのホスト名はvhost1
    ⇒サイト2のためのホスト名はvhost2
  • 名前解決にネームサーバは利用せず、すべてhostsファイルに記述する
  • ドキュメントルートは/usr/local/vhostsの下に、それぞれvhost1、vhost2として作成しておく

 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
       1|2|3 次のページへ

Copyright © ITmedia, Inc. All Rights Reserved.

スポンサーからのお知らせPR

注目のテーマ

Microsoft & Windows最前線2025
AI for エンジニアリング
ローコード/ノーコード セントラル by @IT - ITエンジニアがビジネスの中心で活躍する組織へ
Cloud Native Central by @IT - スケーラブルな能力を組織に
システム開発ノウハウ 【発注ナビ】PR
あなたにおすすめの記事PR

RSSについて

アイティメディアIDについて

メールマガジン登録

@ITのメールマガジンは、 もちろん、すべて無料です。ぜひメールマガジンをご購読ください。