Apache2, Name-based Virtual Hosts 設定

さくら VPS 上の Ubuntu Server 10.10 で動く Apache2 (Ubuntu) での Name-based Virtual Hosts 実現のための設定メモ.

現在,VPS に与えられた 1 つの固定 IP アドレスにて,Apache2 を用いて Web サーバを運用しているのだが,アクセスする際のドメイン名によって表示される場所を変更したい.要するに何が出来れば満足かと言うと,http://unk1.com/ でアクセスしたときは例えば /home/unk1/www/ ディレクトリが,http://unk2.net/ でアクセスしたときは例えば /home/unk2/www/unk/ ディレクトリが表示されること.

これが Virtual Hosts なる技術で実現可能らしい.なんかすごい.Apache すごい.

参考サイト

で,そのために書き換えるべきファイルと,書き換え方と,Apache2 の再起動の仕方は以下の通り.

/etc/apache2/sites-available/default

このファイルを

<VirtualHost *:80>
	ServerName unk1.com
	DocumentRoot /home/unk1/www/
	...
	<Directory /home/unk1/www/>
		...
	</Directory>
	...
</VirtualHost>

<VirtualHost *:80>
	ServerName unk2.net
	DocumentRoot /home/unk2/www/unk/
	...
	<Directory /home/unk2/www/unk/>
		...
	</Directory>
	...
</VirtualHost>

こういう感じに変更する.多分デフォルトでは VirtualHost セクションが 1 つしかないのでコピペして増やしてやる.そして

% sudo /etc/init.d/apache2 restart

これで再起動完了.必要だった要件が満たされる.

唯一気をつける点と言えば,UbuntuApache は設定ファイルが分割されてることか.例えば今回弄った default ってのは普通は httpd.conf ってファイルで,他にも設定出来る項目がある.参考サイトの 1 行目にある

NameVirtualHost *:80

とか.これは UbuntuApache では

/etc/apache2/ports.conf

に書いてある.よって default の方では書いてはいけない (書くと再起動時に警告が出る).

以上ですが,Apache のことはまだまだ分からないことが多いので何か勘違いしてるかもしれません.参考にする場合は信じ切らないように.