ここのところDocumentRootじゃないと動かない環境をテストすることが多いのでVirtual Hostの設定メモ。
##前提
- CentOS 6.x。別に他の環境でも同じ。
- Apacheはもう入ってるということで。
##やること
大きくは2つ。
- /etc/httpd/conf/httpd.confの編集(1行)
- /etc/httpd/conf.d/virtual.confの編集(ファイル名は何でも良い)
###httpd.confの設定
まず、そもそもVirtualHostを使いますよ!という宣言をApacheの設定ファイルであるhttpd.confにする。
と入っても簡単。ServerName www.example.com:80 (変わってるかも)
ServerName www.example.com:80
↓
#ServerName www.example.com:80
となっているところをコメントアウト。NameVirtualHost *:80
#NameVirtualHost *:80
↓
NameVirtualHost *:80
となっているところをコメントイン。httpd.confの設定は以上。
これで、Apacheは、俺はVirtualHostを運用している!と認識します。
既に運用していたサーバに上記の設定をすると、今までのDocumentRootは原則無効になります。
新しくVirtualHostとして、既存のサイトも設定してあげる必要があります。
###virtual.confの設定
ファイルの名前はなんでもいい。
Apacheは起動時に/etc/httpd/conf.d/以下にある*.confファイルを全て読み込む。
なので、ファイル名はhoge.confとしても、foo.confとしてもいい。ここではvirtual.confとする。
なお、バーチャルホストが増えるようなら、www.aaa.com.conf, www.bbb.com.conf という感じで、ドメイン毎にファイルを用意するもの良い。
そこに、こんな感じで書く。
#1つめのサイト
<VirtualHost *:80>
ServerName www.hoge.com
ServerAlias main.com
DirectoryIndex index.html index.php
AddDefaultCharset UTF-8
DocumentRoot /var/www/html/
<Directory "/var/www/html/">
AllowOverride All
Options FollowSymLinks -Indexes
</Directory>
</VirtualHost>
#2つ目のサイト
<VirtualHost *:80>
ServerName test.hoge.com
DirectoryIndex index.html index.php
AddDefaultCharset UTF-8
DocumentRoot /var/www/test/
<Directory "/var/www/test/">
AllowOverride All
Options FollowSymLinks -Indexes
</Directory>
</VirtualHost>
という感じ。後は3つあっても、4つあっても同じ。
必要に応じて、各種Logの位置などもいじります。Override等は<Directory></Directory>で設定します。
###コンテンツの準備
DocumentRootに指定したディレクトリが無いと、Apacheが起動時(再起動時)に怒ります。
先に、ディレクトリを作成し、適切なパーミッションを設定の上、index.htmlファイルを用意しておきます。
###Apacheの(再)起動
sudo service httpd restart
起動してないならstartで。
###テスト
DNSを適切に設定し、しばらく経ってアクセスして、それぞれのコンテンツが見えればOK。
DNSが無い。もしくは持ちきれない人は、ローカル環境の/etc/hostsなどを設定すればいいでしょう。
- windowsだと、windows¥system32¥drivers¥etc¥hosts(うろ覚え。確かその辺)。
- Macだと、hosterを使ったほうが早いでしょう。
以上。