Apache2 バーチャルホスト バーチャルドメイン設定

バーチャルホスト、バーチャルドメインの設定です。Apacheは複数のホスト、ドメインでの運用が可能です。負荷も1日に数千、数万アクセスとかあるなら話は別ですが個人で公開しているのであれば1つのサービス(デーモン)でも運用することは問題ないレベルかと思われます。
このバーチャルホストの機能を使えばわざわざサイトごとにサーバーを立てる必要はなくなりますし、せっかくの自宅サーバーですので複数サイトを作るのもいいのかなぁ?と思います。
ApcheのバーチャルホストにはIPベースとNameベースと2種類ありますが、自宅サーバなので現実的にはIPアドレスを1つしか貰っていない方のほうが圧倒的に多いと思いますのでNameベースのバーチャルホストを設定したいと思います。(ここではサブドメインを使ってます)


まず222行目付近に「UseCanonicalName」があるかと思います。
デフォルトはoffになっています。バーチャルホストを使用する場合onにします。

apache2virtual1



949行目付近
#NameVirtualHost *:80
こんな状態になっているかと思います。
この「#」を外します。
*(アスタリスク)部分にサーバのIPアドレスとポート番号を記述します。
「192.168.1.2:80」であれば「NameVirtualHost 192.168.1.2:80」とします。

更に957行目付近から始まる
#<VirtualHost *:80>
# ServerAdmin webmaster@dummy-host.example.com
# DocumentRoot /www/docs/dummy-host.example.com
# ServerName dummy-host.example.com
# ErrorLog logs/dummy-host.example.com-error_log
# CustomLog logs/dummy-host.example.com-access_log common
<Directory "D:/www2">
Options FollowSymLinks ExecCGI
AllowOverride all
Order allow,deny
Allow from all
</Directory>

#</VirtualHost>

この部分の「#」を全て外します。赤い文字の部分を自分の環境に合わせ書き換え、追記します。

apache2virtual2



設定例として...

<VirtualHost 192.168.1.2:80>
ServerAdmin www1@yunayuna.net
DocumentRoot "D:/www1"
ServerName www1.yunayuna.net
ErrorLog "C:/apache/Apache Group/Apache2/logs/www1error.log"
CustomLog "C:/apache/Apache Group/Apache2/logs/www1access.log"
<Directory "D:/www1">
Options FollowSymLinks ExecCGI
AllowOverride non
Order allow,deny
Allow from all
</Directory>
</VirtualHost>

こんな感じになったかと思います。ちなみにバーチャルホストの設定が有効な場合はいままで行ってきたドキュメントルート等の設定より優先されます。メインのサイトと同じ設定をここに記述して再度詳細設定をします。順番は最初に記述した1番上の設定が最優先されます。
(サブドメインが無くて"http://ドメイン"でアクセスがあった場合など)


続いて、もう1つのサイトを追記します。
<VirtualHost 192.168.1.2:80>
ServerAdmin www2@yunayuna.net
DocumentRoot "D:/www2"
ServerName www2.yunayuna.net
ErrorLog "C:/apache/Apache Group/Apache2/logs/www2error.log"
CustomLog "C:/apache/Apache Group/Apache2/logs/www2access.log"

<Directory "D:/www2">
Options FollowSymLinks ExecCGI
AllowOverride non
Order allow,deny
Allow from all
</Directory>
</VirtualHost>

これでひとまず2つのサイトが出来上がったわけです。
このルールに従っていけば3つ、4つとサイトを増やせます。

ディレクトリの設定関連

バーチャルホストとは直接関係ないですがオプション等ちょっとおまけ

Options[ディレクトリに対して使用可能な機能を設定する]

All MultiView以外の全て使用可能
ExecCGI CGIプログラムの実行
Includes SSIを許可
IncludesNOEXEC SSIを許可。#exec, #includeは使用不可
MultiViews 言語に応じて返送するコンテンツを切替える
Indexes ファイルが存在しない場合にファイルリスト一覧を出力
FollowSymLinks シンボリックリンクのリンク先へのアクセスを許可
SymlinksIfOwnerMatch シンボリックリンクとリンク先ファイルの所有者が同じ場合だけリンク先へのアクセスを許可


AllowOverride[ .htaccess で許可されるディレクティブの種類]

All 全てオーバライド可能
None 全て禁止
AuthConfig ユーザ認証に関するディレクティブを許可
FileInfo ドキュメントタイプのディレクティブを許可
Indexes ディレクトリインデックス用ディレクティブを許可
Limit ホストアクセス制御関係のディレクティブを許可


Order[デフォルトのアクセス可能な状態と、Allow と Deny が評価される順番を制御する]

Deny,Allow Deny ディレクティブが Allow ディレクティブの前に評価されます。 アクセスはデフォルトで許可される。
Allow,Deny Allow ディレクティブが Deny ディレクティブの前に評価されます。 アクセスはデフォルトで拒否される
Mutual-failure Allow のリストに現れて、 Deny のリストに現れないホストのみがアクセス可ですが、 Order Allow,Deny と同等の為通常は使用しない

          HOME           先頭▲