Linux Lovers
    Fedora Coreで始めるサーバ構築

Home > Webサーバ > バーチャルホストの設定

バーチャルホストとは?

バーチャルホストの機能を利用すれば、1つのサーバで複数のドメインを運用することができます。
複数のドメインを取得していて、サーバが1台、回線が1つという条件で、このサーバで
それぞれのドメインで違うページを表示させたいとします。

例えば、現在はchibi.nameというドメインでサイトの運営をしていますが、uniunix.netという
ドメインも持っているので、こっちのuniunix.netでも別のサイトを運営したいと思った時に使う
テクニックです。

これで、chibi.nameとuniunix.netにアクセスした時に同じサーバにアクセスしてはいるものの
違うページを表示することが可能になります。


バーチャルホストの設定

先ず、httpd.confを次のような記述にしてみてください。最終行付近です。

# vi /etc/httpd/conf/httpd.conf

#NameVirtualHost *:80  ←1040行目

NameVirtualHost *:80  ←コメント解除

// 以下の記述を最終行に追加
<VirtualHost *:80>
ServerName chibi
.name
DocumentRoot /var/www/html
</VirtualHost>

<VirtualHost *:80>
ServerName uniunix
.net
DocumentRoot /var/www/second
</VirtualHost>


(行数は目安です。今までのchibi.nameのDocumentRootは/var/www/htmlとします)


NameVirtualHostの部分のコメントの解除と、青地部分の追加をしてください。
ドメイン名については、自分の環境に置き換えてください。また、ここではuniunix.netの
DocumentRootを/var/www/secondとしていますが、別にsecondという名前じゃなくてもOKです。

続いて、uniunix.netのDocumentRootの設定をする為、再びhttpd.confの記述を行います。

# vi /etc/httpd/conf/httpd.conf

<Directory "/var/www/html">  ←298行目

#
# Possible values for the Options directive are "None", "All",
# or any combination of:
# Indexes Includes FollowSymLinks SymLinksifOwnerMatch ExecCGI MultiViews
・・・(省略)

</Directory>  ←327行目

// 以下の記述を追加

<Directory /var/www/second>
AllowOverride None
Options IncludesNoExec ExecCGI FollowSymLinks
</Directory>


青地部分の記述をしてください。これでchibi.orgのDocumentRootである、/var/www/secondについて
記述しました。Optionsの項目については、/var/www/htmlと同じにしてみました。

次に、uniunix.netのDocumentRootには/var/www/secondを指定しましたので、
このディレクトリを作成します。

# mkdir /var/www/second


なお、/var/www/secondの所有者はこの状態だとrootになります。
普段からどのようにして、この2つ目のドメインを使うのかによって、所有者の変更をしてください。
また、FTPでアップする場合などは、ユーザによるルートディレクトリなどの問題なんかもありますので、
FTP絡みの問題は、当サイトのvsftpdの設定1vsftpdの設定2を参考にしてみてください。
(2のほうが参考になるかもです^^)

ちなみに僕の場合は、/var/www/htmlも/var/www/secondも所有者は同じにしています。ここでは、その
ユーザはchibiとします。そして、chibiのホームディレクトリは普通に/home/chibiで、vsftpdの設定で
chibiはルートディレクトリよりも上層に行ける設定にしています。所有者の変更は以下のようにします。

# chown -R chibi:chibi /var/www/second


以上が終わりましたら、httpdの再起動を行います。

# service httpd restart

試しに/var/www/secondにもindex.htmlを置いてみて、実際にアクセスしてみます。



>>このページのTOPへ

ログを分ける

上記の方法で、それぞれのドメインで違うサイトを運営することが可能になりましたが、
このままだとアクセスログやエラーログはごちゃ混ぜになってしまいます。
特に気にしないのであれば、このままでもいいですが、アクセスログなどもドメイン毎によって
しっかり分けたいという場合は以下のような記述を更に追加をします。

# vi /etc/httpd/conf/httpd.conf

#NameVirtualHost *:80  ←1040行目

NameVirtualHost *:80  ←コメント解除

// 以下の記述を最終行に追加
<VirtualHost *:80>
ServerName chibi.name
DocumentRoot /var/www/html
</VirtualHost>

<VirtualHost *:80>
ServerName uniunix.net
DocumentRoot /var/www/second
ErrorLog logs/virtual_error_log
CustomLog logs/virtual_access_log combined env=!no

</VirtualHost>

(行数は目安です。今までのchibi.nameのDocumentRootは/var/www/htmlとします)

ここでは、uniunix.netのアクセスログなどは、virtual_access_logとしました。
また、CustomLogの最後のenv=!noの指定については、当サイトのワームログへの対処
参照してみてください。

以上で、Apacheを再起動すれば、設定が反映されます。


>>このページのTOPへ

最終更新 : 05/22/2005


Fedoraの設定    SSH    Web    Mail    FTP    DNS    ファイルサーバ    運用管理    システム管理    ネットワーク    セキュリティ対策
Copyright (C) 2004-2007 chibi ,All Rights Reserved