バーチャルホストとは、1 台のマシンで複数の Web サイト扱う運用方法のことをいいます。
Apache のバーチャルホストには、名前ベースのバーチャルホストと IP ベースのバーチャルホストがあります。
名前ベースのバーチャルホストとは、ひとつの IP アドレスで複数のウェブサイトを運営する場合に使い、IP ベースのバーチャルホストとはウェブサイトごとに IP アドレスを使用する方法のことをいいます。
ここでは honana.com と virtualhost.com のふたつのウェブサイト使って名前ベースのバーチャルホストを設定する方法について解説します。(DNS サーバーによって名前解決が正しく行われている必要があります)
バーチャルホストの公開ディレクトリの作成
バーチャルホストのコンテンツを格納するためのディレクトリを作成します。
# mkdir -p /virtual/virtualhost.com/public_html
バーチャルホストのログファイルを格納するためのディレクトリを作成します。
# mkdir -p /virtual/virtualhost.com/logs
Apache をユーザー権限で実行している場合はバーチャルホストのディレクトリの所有者を Apache 実行ユーザーに変更します。
Apache の設定
Apache の設定ファイル httpd.conf を編集してバーチャルホストの設定ファイル extra/httpd-vhosts.conf を読み込むように設定します。
Include conf/extra/httpd-vhosts.confコメントアウトされている行を有効にする
extra/httpd-vhosts.conf ファイルを編集してバーチャルホストの設定を行います。
このとき httpd-vhosts.conf の既存の設定はコメントアウトするか削除します。
<VirtualHost *:80>
ServerAdmin webmaster@honana.com
DocumentRoot /virtual/honana.com/public_html
ServerName honana.com
ErrorLog /virtual/honana.com/logs/error_log
CustomLog /virtual/honana.com/logs/access_log combined
<Directory “/virtual/honana.com/public_html”>
Options None
AllowOverride None
Order allow,deny
Allow from all
</Directory>
</VirtualHost>
<VirtualHost *:80>
ServerAdmin webmaster@virtualhost.com
DocumentRoot /virtual/virtualhost.com/public_html
ServerName virtualhost.com
ErrorLog /virtual/virtualhost.com/logs/error_log
CustomLog /virtual/virtualhost.com/logs/access_log combined
<Directory “/virtual/virtualhost.com/public_html”>
Options None
AllowOverride None
Order allow,deny
Allow from all
</Directory>
</VirtualHost>
Apache の再起動
Apache の設定ファイルを変更した後は Apache を再起動する必要があります。
バーチャルホストの設定を有効にした場合、httpd.conf で設定したメインの ServerName ディレクティブと DocumentRoot ディレクティブは無効になります。
また httpd.conf で設定されていないホスト名でアクセスがあった場合はデフォルトのホストとして最初のバーチャルホストの設定が適用されます。