CentOS4.x CentOS5.x CentOS6.x Apache2

apache2のバーチャルホストの機能を利用して複数サイトの運営を行える様にします。

ここではIPベースのバーチャルホストの設定を行います。

バーチャルホストの機能を利用する為にはDNSサーバの設定が必要です。(/etc/hostsでも可能ですが・・・)

環境

既に、http://www.example.com/のサイトが動作している状態とします。

この状態に、新たに「http://test.example.com」サイトを加えます。

追加するサイトの情報は以下となります

URLhttp://test.example.com/
IPアドレス92.168.0.153
ドキュメントルート/home/test/www/html
icons/home/test/www/icons
error/home/test/www/error
cgi-bin/home/test/www/cgi-bin

apache2の設定

/etc/httpd/conf.d/virtual-text.example.com.confを新規に作成します

<VirtualHost 192.168.0.153>
    ServerAdmin info@example.com
    DocumentRoot /home/test/www/html
    ServerName test.example.com:80
    ErrorLog logs/test.example.com-error_log
    CustomLog logs/test.example.com-access_log combined

    <Directory "/home/test/www/html">
      AllowOverride All
      Options IncludesNoExec FollowSymLinks
      AddOutputFilter Includes html
      Order allow,deny
      Allow from all
    </Directory>

    ScriptAlias /cgi-bin/ "/home/test/www/cgi-bin/"
    <Directory "/home/test/www/cgi-bin">
        AllowOverride None
        Options None
        Order allow,deny
        Allow from all
    </Directory>

    Alias /icons/ "/home/test/www/icons/"

    <Directory "/home/test/www/icons">
        Options MultiViews FollowSymLinks
        AllowOverride None
        Order allow,deny
        Allow from all
    </Directory>

    Alias /error/ "/home/test/www/error/"

    <IfModule mod_negotiation.c>
    <IfModule mod_include.c>
        <Directory "/home/test/www/error">
            AllowOverride None
            Options IncludesNoExec
            AddOutputFilter Includes html
            AddHandler type-map var
            Order allow,deny
            Allow from all
            LanguagePriority en es de fr
            ForceLanguagePriority Prefer Fallback
        </Directory>
    </IfModule>
    </IfModule>
</VirtualHost>

apache2の再起動

rootにて、以下を実行してapache2を再起動します

# /etc/rc.d/init.d/httpd restart

確認

両サイト(www.example.com及びtest.example.com)のドキュメントルートに適当なhtmlを配置し、それぞれのページがでたらOKです

補足 - 仮想ホストの定義状態を調べる

仮想ホストの定義状態を調べるには、以下を実行します

# httpd -S
VirtualHost configuration:
wildcard NameVirtualHosts and _default_ servers:
_default_:443          xxxxxx (/etc/httpd/conf.d/ssl.conf:81)
*:80                   is a NameVirtualHost
         default server xxxxxxxx (/etc/httpd/conf.d/xxxxxx.conf:3)
         port 80 namevhost xxxxxx (/etc/httpd/conf.d/xxxxxx.conf:3)
         port 80 namevhost xxxxxx (/etc/httpd/conf.d/xxxxxx.conf:2)
         port 80 namevhost xxxxxx (/etc/httpd/conf.d/xxxxxx.conf:2)
Syntax OK

_default_仮想ホスト定義について

_default_仮想ホスト定義は、いずれの仮想ホストにもマッチしなかった場合に適用されるホスト情報です

apacheは、起動時にconf.dディレクトリ以下にある拡張子*.confのファイルを自動的に読み込みますが、読み込んだ順番が一番最初のものが_default_として採用されます

従って、_default_適用を変えたい場合は、conf.d以下の設定ファイル名を変えて(例えば0.xxx.conf)、一番最初に読み込まれる様にすれば良いです

関連ページ