
| バーチャルホストとは? |
バーチャルホストの機能を利用すれば、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の設定1とvsftpdの設定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を置いてみて、実際にアクセスしてみます。
| ログを分ける |
上記の方法で、それぞれのドメインで違うサイトを運営することが可能になりましたが、
このままだとアクセスログやエラーログはごちゃ混ぜになってしまいます。
特に気にしないのであれば、このままでもいいですが、アクセスログなどもドメイン毎によって
しっかり分けたいという場合は以下のような記述を更に追加をします。
| # 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を再起動すれば、設定が反映されます。
最終更新 : 05/22/2005